MXVM 1.8.1
Virtual Machine, Compiler, and Pascal Frontend
Loading...
Searching...
No Matches
mxx::XParser Class Reference

Base parser providing token-stream navigation. More...

#include <parser.hpp>

Inheritance diagram for mxx::XParser:

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::TTokentoken = nullptr
 current token pointer
size_t index = 0
 current token index

Detailed Description

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.

Constructor & Destructor Documentation

◆ XParser() [1/2]

mxx::XParser::XParser ( )
delete

◆ XParser() [2/2]

mxx::XParser::XParser ( const std::string & source)
inlineexplicit

Construct and scan the source text.

Parameters
sourceSource code string

Definition at line 39 of file parser.hpp.

References index, scanner, and token.

Member Function Documentation

◆ next()

bool mxx::XParser::next ( )
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().

◆ peekIs() [1/2]

bool mxx::XParser::peekIs ( const std::string & s)
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().

◆ peekIs() [2/2]

bool mxx::XParser::peekIs ( const types::TokenType & t)
inline

Check if the current token's type matches.

Definition at line 72 of file parser.hpp.

References token.

◆ tokenTypeToString()

std::string mxx::XParser::tokenTypeToString ( types::TokenType t)
inlinestatic

Convert a TokenType to a human-readable string.

Parameters
tToken type
Returns
Display name

Definition at line 81 of file parser.hpp.

References types::TT_ID, types::TT_NUM, types::TT_STR, and types::TT_SYM.

Member Data Documentation

◆ filename

std::string mxx::XParser::filename

source filename for error messages

Definition at line 96 of file parser.hpp.

◆ index

size_t mxx::XParser::index = 0
protected

◆ scanner

scan::Scanner mxx::XParser::scanner
protected

underlying scanner

Definition at line 99 of file parser.hpp.

Referenced by pascal::PascalParser::PascalParser(), XParser(), next(), and pascal::PascalParser::removeBraceComments().

◆ token

scan::TToken* mxx::XParser::token = nullptr
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().


The documentation for this class was generated from the following file: