#include "global.h" #include "source.h" #include "lex.h" #include "list.h" #include "parser.h" // The member function mustBe() anticipates the current symbol // to be sym. Where this is not the case, it reports the expected // condition. void Parser::mustBe(symbols sym) { if (symbol() != sym) error(ERROR, "%^ %s expected\n", position(), Lexer::symbolSpelling[sym]); } // The member function expect() anticipates the current symbol // to be sym and advances to the next symbol. // Where this is not the case, it reports the expected // condition via mustBe(). void Parser::expect(symbols sym) { mustBe(sym); nextSymbol(); } // The member function parseError() reports the error message // with respect to the current position. void Parser::parseError(char *message) { error(ERROR, "%^ %s\n", position(), message); }