pascal library

This library contains the grammar and parser of Pascal.

For example:

final parser = PascalParserDefinition().build();
final result = parser.parse('program test; begin end.');
print(result.value);

Classes

ArrayAccessExpressionNode
An array element access: arr[i, j].
ArrayTypeNode
An array type, e.g. array [1..10] of Integer.
AssignmentStatementNode
An assignment statement: variable := expression.
BinaryExpressionNode
A binary expression: left operator right.
BlockNode
A Pascal block containing declarations and a compound statement.
CaseElementNode
A single element in a case statement: const1, const2: stmt.
CaseStatementNode
A case statement: case expr of const: stmt; ... end.
CompoundStatementNode
A compound statement: begin s1; s2; end.
ConstantDefinitionNode
A constant definition: name = value;.
EmptyStatementNode
An empty statement.
EnumeratedTypeNode
An enumerated type, e.g. (Red, Green, Blue).
ExpressionNode
Abstract base class for Pascal expressions.
FieldAccessExpressionNode
A record field access: rec.field.
FileTypeNode
A file type, e.g. file of Integer.
FormalParameterNode
A formal parameter in a procedure or function heading.
ForStatementNode
A for loop: for variable := initial to/downto final do statement.
FunctionCallExpressionNode
A function invocation: Sin(x) or Func(a, b).
FunctionNode
A function declaration.
GotoStatementNode
A goto statement: goto label.
IfStatementNode
An if statement: if condition then thenStatement [else elseStatement].
LiteralExpressionNode
A literal value (number, string, char, nil, boolean).
PascalNode
Abstract base class for all Pascal AST nodes.
PascalParserDefinition
Pascal parser definition producing strongly typed PascalNode AST nodes.
PascalVisitor<R, C>
Visitor interface for PascalNode AST hierarchies.
PointerDereferenceExpressionNode
A pointer dereference: ptr^.
PointerTypeNode
A pointer type, e.g. ^Integer or ^Node.
ProcedureNode
A procedure declaration.
ProcedureStatementNode
A procedure statement / invocation: WriteLn('hello').
ProgramNode
A complete Pascal program.
RecordTypeNode
A record type, e.g. record x, y: Real; end.
RepeatStatementNode
A repeat loop: repeat s1; s2 until condition.
SetElementNode
A single element or range in a set literal: e or e1..e2.
SetExpressionNode
A set literal: [1, 2..5, 8].
SetTypeNode
A set type, e.g. set of Char.
SimpleTypeNode
A simple named type, e.g. Integer, Real, Boolean.
StatementNode
Abstract base class for Pascal statements.
SubrangeTypeNode
A subrange type, e.g. 1..100 or 'a'..'z'.
TypeDefinitionNode
A type definition: name = type;.
TypeNode
Abstract base class for Pascal types.
UnaryExpressionNode
A unary expression: +x, -x, not b.
VariableDeclarationNode
A variable declaration: var x, y: Integer;.
VariableExpressionNode
A simple variable identifier: x.
WhileStatementNode
A while loop: while condition do statement.
WithStatementNode
A with statement: with r1, r2 do statement.