|
MXVM 1.8.1
Virtual Machine, Compiler, and Pascal Frontend
|
AST node hierarchy for the Pascal-to-MXVM frontend parser. More...
#include <iostream>#include <memory>#include <string>#include <variant>#include <vector>

Go to the source code of this file.
Classes | |
| class | pascal::ASTNode |
| Abstract base class for all AST nodes. More... | |
| class | pascal::ExitNode |
| AST node for an exit / halt statement. More... | |
| class | pascal::ContinueNode |
| AST node for a continue statement. More... | |
| class | pascal::BreakNode |
| AST node for a break statement. More... | |
| class | pascal::BlockNode |
| AST node representing a block (declarations + compound statement). More... | |
| class | pascal::ProgramNode |
| AST node for a complete program (program name + block). More... | |
| class | pascal::UnitNode |
| AST node for a Pascal unit (separately compiled module). More... | |
| class | pascal::VarDeclNode |
| AST node for variable declarations (var id1, id2 : type). More... | |
| class | pascal::TypeDeclNode |
| AST node for a type declaration section. More... | |
| class | pascal::TypeAliasNode |
| AST node for a type alias (type NewName = ExistingType). More... | |
| class | pascal::ConstDeclNode |
| AST node for constant declarations (const id = value). More... | |
| struct | pascal::ConstDeclNode::ConstAssignment |
| A single constant name = value pair. More... | |
| class | pascal::FuncDeclNode |
| AST node for a function declaration. More... | |
| class | pascal::ProcDeclNode |
| AST node for a procedure declaration. More... | |
| class | pascal::ParameterNode |
| AST node for a formal parameter list entry. More... | |
| class | pascal::CompoundStmtNode |
| AST node for a compound statement (begin ... end). More... | |
| class | pascal::AssignmentNode |
| AST node for an assignment statement (variable := expression). More... | |
| class | pascal::SimpleTypeNode |
| AST node for a simple (named) type reference. More... | |
| class | pascal::ArrayTypeNode |
| AST node for an array type (array[lower..upper] of elementType). More... | |
| class | pascal::ArrayDeclarationNode |
| AST node for a named array variable declaration. More... | |
| class | pascal::ArrayTypeDeclarationNode |
| AST node for a named array type declaration (type Name = array[...]). More... | |
| class | pascal::ArrayAccessNode |
| AST node for an array element access (arr[index]). More... | |
| class | pascal::ArrayAssignmentNode |
| AST node for assigning to an array element (arr[index] := value). More... | |
| class | pascal::IfStmtNode |
| AST node for an if-then-else statement. More... | |
| class | pascal::WhileStmtNode |
| AST node for a while loop (while cond do stmt). More... | |
| class | pascal::ForStmtNode |
| AST node for a for loop (for var := start to/downto end do stmt). More... | |
| class | pascal::CaseStmtNode |
| AST node for a case statement. More... | |
| struct | pascal::CaseStmtNode::CaseBranch |
| A single case branch (one or more values mapping to a statement). More... | |
| class | pascal::ProcCallNode |
| AST node for a procedure call statement. More... | |
| class | pascal::BinaryOpNode |
| AST node for a binary operator expression. More... | |
| class | pascal::UnaryOpNode |
| AST node for a unary operator expression. More... | |
| class | pascal::FuncCallNode |
| AST node for a function call expression. More... | |
| class | pascal::VariableNode |
| AST node for a variable reference. More... | |
| class | pascal::NumberNode |
| AST node for an integer or real numeric literal. More... | |
| class | pascal::StringNode |
| AST node for a string literal. More... | |
| class | pascal::BooleanNode |
| AST node for a boolean literal (true / false). More... | |
| class | pascal::EmptyStmtNode |
| AST node for an empty statement (no-op). More... | |
| class | pascal::NilNode |
| AST node for the nil literal. More... | |
| class | pascal::PointerTypeNode |
| AST node for a pointer type declaration (^BaseType). More... | |
| class | pascal::PointerDerefNode |
| AST node for a pointer dereference (ptr^). More... | |
| class | pascal::AddressOfNode |
| AST node for an address-of expression (@operand). More... | |
| class | pascal::RepeatStmtNode |
| AST node for a repeat..until loop. More... | |
| class | pascal::EnumTypeDeclNode |
| AST node for an enumerated type declaration (type Color = (Red, Green, Blue)). More... | |
| struct | pascal::VariantArm |
| A single variant arm inside a variant record. More... | |
| class | pascal::RecordTypeNode |
| AST node for a record type (record ... end). More... | |
| class | pascal::RecordDeclarationNode |
| AST node for a named record declaration. More... | |
| class | pascal::WithStmtNode |
| AST node for a with statement (with record do statement). More... | |
| class | pascal::GotoStmtNode |
| AST node for a goto statement. More... | |
| class | pascal::LabelStmtNode |
| AST node for a label definition (label: statement). More... | |
| class | pascal::SetLiteralNode |
| AST node for a set literal [val1, val2, ...]. More... | |
| class | pascal::SetTypeNode |
| AST node for a set type declaration (set of <base type>). More... | |
| class | pascal::FieldAccessNode |
| AST node for accessing a record field (record.field). More... | |
| class | pascal::ASTVisitor |
| Abstract visitor interface for the AST (double-dispatch). More... | |
Namespaces | |
| namespace | pascal |
AST node hierarchy for the Pascal-to-MXVM frontend parser.
Definition in file ast.hpp.