|
MXVM 1.8.1
Virtual Machine, Compiler, and Pascal Frontend
|
Base parser providing token-stream navigation. More...
#include <parser.hpp>

Public Member Functions | |
| XParser ()=delete | |
| XParser (const std::string &source) | |
| Construct and scan the source text. | |
| bool | next () |
| Advance to the next token; returns false at end of stream. | |
| bool | peekIs (const std::string &s) |
| Check if the current token's value matches a string (case-insensitive). | |
| bool | peekIs (const types::TokenType &t) |
| Check if the current token's type matches. | |
Static Public Member Functions | |
| static std::string | tokenTypeToString (types::TokenType t) |
| Convert a TokenType to a human-readable string. | |
Public Attributes | |
| std::string | filename |
| source filename for error messages | |
Protected Attributes | |
| scan::Scanner | scanner |
| underlying scanner | |
| scan::TToken * | token = nullptr |
| current token pointer | |
| size_t | index = 0 |
| current token index | |
Base parser providing token-stream navigation.
Wraps a Scanner to provide next(), peekIs(), and token-type-to-string conversion for derived parsers.
Definition at line 32 of file parser.hpp.
|
delete |
Referenced by pascal::PascalParser::PascalParser().
|
inlineexplicit |
Construct and scan the source text.
| source | Source code string |
Definition at line 39 of file parser.hpp.
|
inline |
Advance to the next token; returns false at end of stream.
Definition at line 50 of file parser.hpp.
References index, scanner, and token.
Referenced by pascal::PascalParser::match(), pascal::PascalParser::match(), pascal::PascalParser::parseArgumentList(), pascal::PascalParser::parseArrayType(), pascal::PascalParser::parseAssignmentOrProcCall(), pascal::PascalParser::parseCaseStatement(), pascal::PascalParser::parseCompoundStatement(), pascal::PascalParser::parseConstDeclaration(), pascal::PascalParser::parseExpression(), pascal::PascalParser::parseFactor(), pascal::PascalParser::parseForStatement(), pascal::PascalParser::parseFunctionCall(), pascal::PascalParser::parseFunctionDeclaration(), pascal::PascalParser::parseFunctionForwardDecl(), pascal::PascalParser::parseGotoStatement(), pascal::PascalParser::parseIfStatement(), pascal::PascalParser::parseLabelDeclaration(), pascal::PascalParser::parseLValue(), pascal::PascalParser::parseParameter(), pascal::PascalParser::parseParameterList(), pascal::PascalParser::parseProcedureCall(), pascal::PascalParser::parseProcedureDeclaration(), pascal::PascalParser::parseProcedureForwardDecl(), pascal::PascalParser::parseProgram(), pascal::PascalParser::parseRecordType(), pascal::PascalParser::parseRepeatStatement(), pascal::PascalParser::parseSimpleExpression(), pascal::PascalParser::parseStatement(), pascal::PascalParser::parseStatementList(), pascal::PascalParser::parseTerm(), pascal::PascalParser::parseTypeDeclaration(), pascal::PascalParser::parseTypeSpec(), pascal::PascalParser::parseUnit(), pascal::PascalParser::parseVarDeclaration(), pascal::PascalParser::parseWhileStatement(), and pascal::PascalParser::parseWithStatement().
|
inline |
Check if the current token's value matches a string (case-insensitive).
Definition at line 61 of file parser.hpp.
References token.
Referenced by pascal::PascalParser::expectToken(), pascal::PascalParser::expectToken(), pascal::PascalParser::getRelationalOp(), pascal::PascalParser::isMulOperator(), pascal::PascalParser::isRelationalOperator(), pascal::PascalParser::match(), pascal::PascalParser::match(), pascal::PascalParser::parseArgumentList(), pascal::PascalParser::parseArrayType(), pascal::PascalParser::parseAssignmentOrProcCall(), pascal::PascalParser::parseBlock(), pascal::PascalParser::parseCaseStatement(), pascal::PascalParser::parseConstDeclaration(), pascal::PascalParser::parseDeclarations(), pascal::PascalParser::parseExpression(), pascal::PascalParser::parseFactor(), pascal::PascalParser::parseForStatement(), pascal::PascalParser::parseFunctionDeclaration(), pascal::PascalParser::parseFunctionForwardDecl(), pascal::PascalParser::parseIfStatement(), pascal::PascalParser::parseInterfaceDeclarations(), pascal::PascalParser::parseLabelDeclaration(), pascal::PascalParser::parseLValue(), pascal::PascalParser::parseParameter(), pascal::PascalParser::parseParameterList(), pascal::PascalParser::parseProcedureCall(), pascal::PascalParser::parseProcedureDeclaration(), pascal::PascalParser::parseProcedureForwardDecl(), pascal::PascalParser::parseProgram(), pascal::PascalParser::parseRecordType(), pascal::PascalParser::parseRepeatStatement(), pascal::PascalParser::parseSimpleExpression(), pascal::PascalParser::parseStatement(), pascal::PascalParser::parseStatementList(), pascal::PascalParser::parseTerm(), pascal::PascalParser::parseTypeDeclaration(), pascal::PascalParser::parseTypeSpec(), pascal::PascalParser::parseUnit(), and pascal::PascalParser::parseVarDeclaration().
|
inline |
Check if the current token's type matches.
Definition at line 72 of file parser.hpp.
References token.
|
inlinestatic |
Convert a TokenType to a human-readable string.
| t | Token type |
Definition at line 81 of file parser.hpp.
References types::TT_ID, types::TT_NUM, types::TT_STR, and types::TT_SYM.
| std::string mxx::XParser::filename |
source filename for error messages
Definition at line 96 of file parser.hpp.
|
protected |
current token index
Definition at line 101 of file parser.hpp.
Referenced by pascal::PascalParser::PascalParser(), XParser(), next(), pascal::PascalParser::parseFactor(), and pascal::PascalParser::parseLValue().
|
protected |
underlying scanner
Definition at line 99 of file parser.hpp.
Referenced by pascal::PascalParser::PascalParser(), XParser(), next(), and pascal::PascalParser::removeBraceComments().
|
protected |
current token pointer
Definition at line 100 of file parser.hpp.
Referenced by pascal::PascalParser::PascalParser(), XParser(), pascal::PascalParser::error(), pascal::PascalParser::expectToken(), pascal::PascalParser::isType(), pascal::PascalParser::isUnitSource(), next(), pascal::PascalParser::parseAssignmentOrProcCall(), pascal::PascalParser::parseBlock(), pascal::PascalParser::parseCaseStatement(), pascal::PascalParser::parseCompoundStatement(), pascal::PascalParser::parseConstDeclaration(), pascal::PascalParser::parseDeclarations(), pascal::PascalParser::parseExpression(), pascal::PascalParser::parseFactor(), pascal::PascalParser::parseForStatement(), pascal::PascalParser::parseFunctionCall(), pascal::PascalParser::parseFunctionDeclaration(), pascal::PascalParser::parseFunctionForwardDecl(), pascal::PascalParser::parseGotoStatement(), pascal::PascalParser::parseIfStatement(), pascal::PascalParser::parseInterfaceDeclarations(), pascal::PascalParser::parseLabelDeclaration(), pascal::PascalParser::parseLValue(), pascal::PascalParser::parseParameter(), pascal::PascalParser::parseProcedureCall(), pascal::PascalParser::parseProcedureDeclaration(), pascal::PascalParser::parseProcedureForwardDecl(), pascal::PascalParser::parseProgram(), pascal::PascalParser::parseRecordType(), pascal::PascalParser::parseRepeatStatement(), pascal::PascalParser::parseSimpleExpression(), pascal::PascalParser::parseStatement(), pascal::PascalParser::parseTerm(), pascal::PascalParser::parseTypeDeclaration(), pascal::PascalParser::parseTypeSpec(), pascal::PascalParser::parseUnit(), pascal::PascalParser::parseVarDeclaration(), pascal::PascalParser::parseWhileStatement(), pascal::PascalParser::parseWithStatement(), peekIs(), and peekIs().