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
casestatement: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
forloop:for variable := initial to/downto final do statement. - FunctionCallExpressionNode
-
A function invocation:
Sin(x)orFunc(a, b). - FunctionNode
- A function declaration.
- GotoStatementNode
-
A
gotostatement:goto label. - IfStatementNode
-
An
ifstatement: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.
^Integeror^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
repeatloop:repeat s1; s2 until condition. - SetElementNode
-
A single element or range in a set literal:
eore1..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..100or'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
whileloop:while condition do statement. - WithStatementNode
-
A
withstatement:with r1, r2 do statement.