Mercurial > repo
view interps/sadol/Source.cpp @ 11243:5c41fb3f6567
<oerjan> # Stolen from Roger9//`learn Bureaucracy (from French bureau, "burrow") is a political system in which squirrels rule the nation, and burrow their nuts.
author | HackBot |
---|---|
date | Wed, 22 Nov 2017 00:43:46 +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); }