DEFINITION MODULE Parser; FROM Common IMPORT Identifier, PIdentifier; TYPE AstConstantDeclaration = RECORD END; PAstConstantDeclaration = POINTER TO AstConstantDeclaration; PPAstConstantDeclaration = POINTER TO PAstConstantDeclaration; AstTypeExpressionKind = ( astTypeExpressionKindNamed, astTypeExpressionKindRecord, astTypeExpressionKindEnumeration, astTypeExpressionKindArray, astTypeExpressionKindPointer, astTypeExpressionKindProcedure ); AstTypeExpression = RECORD CASE kind: AstTypeExpressionKind OF astTypeExpressionKindNamed: name: Identifier | astTypeExpressionKindEnumeration: cases: PIdentifier END END; PAstTypeExpression = POINTER TO AstTypeExpression; AstTypeDeclaration = RECORD identifier: Identifier; type_expression: PAstTypeExpression END; PAstTypeDeclaration = POINTER TO AstTypeDeclaration; PPAstTypeDeclaration = POINTER TO PAstTypeDeclaration; AstVariableDeclaration = RECORD END; PAstVariableDeclaration = POINTER TO AstVariableDeclaration; PPAstVariableDeclaration = POINTER TO PAstVariableDeclaration; AstModule = RECORD constants: PPAstConstantDeclaration; types: PPAstTypeDeclaration; variables: PPAstVariableDeclaration END; PAstModule = POINTER TO AstModule; END Parser.