summaryrefslogtreecommitdiff
path: root/source/Parser.def
diff options
context:
space:
mode:
Diffstat (limited to 'source/Parser.def')
-rw-r--r--source/Parser.def200
1 files changed, 0 insertions, 200 deletions
diff --git a/source/Parser.def b/source/Parser.def
deleted file mode 100644
index a766e8e..0000000
--- a/source/Parser.def
+++ /dev/null
@@ -1,200 +0,0 @@
-DEFINITION MODULE Parser;
-
-FROM Common IMPORT Identifier, PIdentifier, ShortString;
-FROM Lexer IMPORT PLexer;
-
-TYPE
- Parser = RECORD
- lexer: PLexer
- END;
- PParser = POINTER TO Parser;
-
- AstLiteralKind = (
- astLiteralKindInteger,
- astLiteralKindString,
- astLiteralKindNull,
- astLiteralKindBoolean
- );
- AstLiteral = RECORD
- CASE kind: AstLiteralKind OF
- astLiteralKindInteger: integer: INTEGER |
- astLiteralKindString: string: ShortString |
- astLiteralKindNull: |
- astLiteralKindBoolean: boolean: BOOLEAN
- END
- END;
- PAstLiteral = POINTER TO AstLiteral;
-
- AstUnaryOperator = (
- astUnaryOperatorReference,
- astUnaryOperatorNot,
- astUnaryOperatorMinus
- );
- AstBinaryOperator = (
- astBinaryOperatorSum,
- astBinaryOperatorSubtraction,
- astBinaryOperatorMultiplication,
- astBinaryOperatorDivision,
- astBinaryOperatorRemainder,
- astBinaryOperatorEquals,
- astBinaryOperatorNotEquals,
- astBinaryOperatorLess,
- astBinaryOperatorGreater,
- astBinaryOperatorLessEqual,
- astBinaryOperatorGreaterEqual,
- astBinaryOperatorDisjunction,
- astBinaryOperatorConjunction,
- astBinaryOperatorExclusiveDisjunction,
- astBinaryOperatorShiftLeft,
- astBinaryOperatorShiftRight
- );
-
- AstExpressionKind = (
- astExpressionKindLiteral,
- astExpressionKindIdentifier,
- astExpressionKindArrayAccess,
- astExpressionKindDereference,
- astExpressionKindFieldAccess,
- astExpressionKindUnary,
- astExpressionKindBinary,
- astExpressionKindCall
- );
- AstExpression = RECORD
- CASE kind: AstExpressionKind OF
- astExpressionKindLiteral: literal: PAstLiteral |
- astExpressionKindIdentifier: identifier: Identifier |
- astExpressionKindDereference: reference: PAstExpression |
- astExpressionKindArrayAccess:
- array: PAstExpression;
- index: PAstExpression |
- astExpressionKindFieldAccess:
- aggregate: PAstExpression;
- field: Identifier |
- astExpressionKindUnary:
- unary_operator: AstUnaryOperator;
- unary_operand: PAstExpression |
- astExpressionKindBinary:
- binary_operator: AstBinaryOperator;
- lhs: PAstExpression;
- rhs: PAstExpression |
- astExpressionKindCall:
- callable: PAstExpression;
- argument_count: CARDINAL;
- arguments: PPAstExpression
- END
- END;
- PAstExpression = POINTER TO AstExpression;
- PPAstExpression = POINTER TO PAstExpression;
-
- AstStatementKind = (
- astStatementKindIf,
- astStatementKindWhile,
- astStatementKindAssignment,
- astStatementKindReturn,
- astStatementKindCall
- );
- AstStatement = RECORD
- CASE kind: AstStatementKind OF
- astStatementKindIf:
- if_condition: PAstExpression;
- if_branch: AstCompoundStatement |
- astStatementKindWhile:
- while_condition: PAstExpression;
- while_body: AstCompoundStatement |
- astStatementKindAssignment:
- assignee: PAstExpression;
- assignment: PAstExpression |
- astStatementKindReturn: returned: PAstExpression |
- astStatementKindCall: call: PAstExpression
- END
- END;
- PAstStatement = POINTER TO AstStatement;
- PPAstStatement = POINTER TO PAstStatement;
- AstCompoundStatement = RECORD
- count: CARDINAL;
- statements: PPAstStatement
- END;
-
- AstImportStatement = RECORD
- package: Identifier;
- symbols: PIdentifier
- END;
- PAstImportStatement = POINTER TO AstImportStatement;
- PPAstImportStatement = POINTER TO PAstImportStatement;
-
- AstConstantDeclaration = RECORD
- constant_name: Identifier;
- constant_value: INTEGER
- END;
- PAstConstantDeclaration = POINTER TO AstConstantDeclaration;
- PPAstConstantDeclaration = POINTER TO PAstConstantDeclaration;
-
- AstFieldDeclaration = RECORD
- field_name: Identifier;
- field_type: PAstTypeExpression
- END;
- PAstFieldDeclaration = POINTER TO AstFieldDeclaration;
-
- AstTypeExpressionKind = (
- astTypeExpressionKindNamed,
- astTypeExpressionKindRecord,
- astTypeExpressionKindEnumeration,
- astTypeExpressionKindArray,
- astTypeExpressionKindPointer,
- astTypeExpressionKindProcedure
- );
- AstTypeExpression = RECORD
- CASE kind: AstTypeExpressionKind OF
- astTypeExpressionKindNamed: name: Identifier |
- astTypeExpressionKindEnumeration: cases: PIdentifier |
- astTypeExpressionKindPointer: target: PAstTypeExpression |
- astTypeExpressionKindRecord: fields: PAstFieldDeclaration |
- astTypeExpressionKindArray:
- base: PAstTypeExpression;
- length: CARDINAL |
- astTypeExpressionKindProcedure: parameters: PPAstTypeExpression
- END
- END;
- PAstTypeExpression = POINTER TO AstTypeExpression;
- PPAstTypeExpression = POINTER TO PAstTypeExpression;
-
- AstTypedDeclaration = RECORD
- identifier: Identifier;
- type_expression: PAstTypeExpression
- END;
- PAstTypedDeclaration = POINTER TO AstTypedDeclaration;
- PPAstTypedDeclaration = POINTER TO PAstTypedDeclaration;
-
- AstVariableDeclaration = RECORD
- variable_name: Identifier;
- variable_type: PAstTypeExpression
- END;
- PAstVariableDeclaration = POINTER TO AstVariableDeclaration;
- PPAstVariableDeclaration = POINTER TO PAstVariableDeclaration;
-
- AstProcedureDeclaration = RECORD
- name: Identifier;
- parameter_count: CARDINAL;
- parameters: PAstTypedDeclaration;
- return_type: PAstTypeExpression;
- constants: PPAstConstantDeclaration;
- variables: PPAstVariableDeclaration;
- statements: AstCompoundStatement
- END;
- PAstProcedureDeclaration = POINTER TO AstProcedureDeclaration;
- PPAstProcedureDeclaration = POINTER TO PAstProcedureDeclaration;
-
- AstModule = RECORD
- main: BOOLEAN;
- imports: PPAstImportStatement;
- constants: PPAstConstantDeclaration;
- types: PPAstTypedDeclaration;
- variables: PPAstVariableDeclaration;
- procedures: PPAstProcedureDeclaration;
- statements: AstCompoundStatement
- END;
- PAstModule = POINTER TO AstModule;
-
-PROCEDURE parse(lexer: PLexer): PAstModule;
-
-END Parser.