MXVM 1.8.1
Virtual Machine, Compiler, and Pascal Frontend
Loading...
Searching...
No Matches
ast.hpp File Reference

AST node hierarchy for the Pascal-to-MXVM frontend parser. More...

#include <iostream>
#include <memory>
#include <string>
#include <variant>
#include <vector>
Include dependency graph for ast.hpp:
This graph shows which files directly or indirectly include this file:

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

Detailed Description

AST node hierarchy for the Pascal-to-MXVM frontend parser.

Author
Jared Bruni

Definition in file ast.hpp.