Mercurial > repo
view interps/sadol/Source.cpp @ 9554:23f43464694e
<Zarutian> le/rn Frams\xc3\xb3knarflokkurinn/A, now defunct, political party in Iceland. Like its sister party Sj\xc3\xa1lfst\xc3\xa6\xc3\xb0isflokkurinn it is named by the antonym of what it is. (The name means the Progressive Party but they have nearly always been highly regressive). Think dumb Hill-Billies in ill fitting suits and you get their constiuents.
author | HackBot |
---|---|
date | Sun, 30 Oct 2016 14:33:24 +0000 |
parents | 859f9b4339e6 |
children |
line wrap: on
line source
/* * BDSM2 * Author: Adam Sawicki * http://www.regedit.risp.pl * mailto:regedit@risp.pl */ #include "pch.hpp" #include <sstream> #include "Source.hpp" string Source::Iterator::ToString() const { std::ostringstream ss; ss << "index: " << (unsigned)Index << ", row: " << Row << ", col: " << Col; return ss.str(); } void Source::Forward() { if (Peek() == '\r') { } else if (Peek() == '\n') { m_Index.Row++; m_Index.Col = 1; } else m_Index.Col++; m_Index.Index++; } char Source::Get() { char ch = Peek(); Forward(); return ch; } Source::Source(const string *Src) : m_Src(Src), m_ErrIndexSaved(false) { m_Index.Index = 0; m_Index.Row = 1; m_Index.Col = 1; } char Source::GetS() { if (End()) SrcError("Unexpected end of file", ERR_PARSE); return Get(); } void Source::Skip() { char ch; while (!End()) { ch = Peek(); // Whitespace if (ch == ' ' || ch == '\t' || ch == '\v' || ch == '\r' || ch == '\n') Forward(); // Comment else if (ch == '{') { Forward(); for (;;) { if (End()) SrcError("Unexpected end of comment", ERR_PARSE); ch = Peek(); Forward(); if (ch == '}') break; } } else break; } } void Source::SrcError(const string &msg, ERR_PLACE place) { Error(msg + " (" + GetIterator().ToString() + ')', place); }