diff --git a/source/CommandLineInterface.def b/source/CommandLineInterface.def deleted file mode 100644 index e4688c4..0000000 --- a/source/CommandLineInterface.def +++ /dev/null @@ -1,16 +0,0 @@ -DEFINITION MODULE CommandLineInterface; - -FROM Common IMPORT ShortString; - -TYPE - CommandLine = RECORD - input: ShortString; - output: ShortString; - lex: BOOLEAN; - parse: BOOLEAN - END; - PCommandLine = POINTER TO CommandLine; - -PROCEDURE parse_command_line(): PCommandLine; - -END CommandLineInterface. diff --git a/source/Common.def b/source/Common.def deleted file mode 100644 index 9520230..0000000 --- a/source/Common.def +++ /dev/null @@ -1,12 +0,0 @@ -DEFINITION MODULE Common; - -TYPE - ShortString = ARRAY[1..256] OF CHAR; - Identifier = ARRAY[1..256] OF CHAR; - PIdentifier = POINTER TO Identifier; - TextLocation = RECORD - line: CARDINAL; - column: CARDINAL - END; - -END Common. diff --git a/source/Lexer.def b/source/Lexer.def deleted file mode 100644 index 883c604..0000000 --- a/source/Lexer.def +++ /dev/null @@ -1,107 +0,0 @@ -DEFINITION MODULE Lexer; - -FROM FIO IMPORT File; - -FROM Common IMPORT Identifier, ShortString, TextLocation; - -TYPE - PLexerBuffer = POINTER TO CHAR; - BufferPosition = RECORD - iterator: PLexerBuffer; - location: TextLocation - END; - PBufferPosition = POINTER TO BufferPosition; - Lexer = RECORD - input: File; - buffer: PLexerBuffer; - size: CARDINAL; - length: CARDINAL; - start: BufferPosition; - current: BufferPosition - END; - PLexer = POINTER TO Lexer; - LexerKind = ( - lexerKindEof, - lexerKindIdentifier, - lexerKindIf, - lexerKindThen, - lexerKindElse, - lexerKindElsif, - lexerKindWhile, - lexerKindDo, - lexerKindProc, - lexerKindBegin, - lexerKindEnd, - lexerKindXor, - lexerKindConst, - lexerKindVar, - lexerKindCase, - lexerKindOf, - lexerKindType, - lexerKindRecord, - lexerKindUnion, - lexerKindPipe, - lexerKindTo, - lexerKindBoolean, - lexerKindNull, - lexerKindAnd, - lexerKindOr, - lexerKindTilde, - lexerKindReturn, - lexerKindDefer, - lexerKindRange, - lexerKindLeftParen, - lexerKindRightParen, - lexerKindLeftSquare, - lexerKindRightSquare, - lexerKindGreaterEqual, - lexerKindLessEqual, - lexerKindGreaterThan, - lexerKindLessThan, - lexerKindNotEqual, - lexerKindEqual, - lexerKindSemicolon, - lexerKindDot, - lexerKindComma, - lexerKindPlus, - lexerKindMinus, - lexerKindAsterisk, - lexerKindDivision, - lexerKindRemainder, - lexerKindAssignment, - lexerKindColon, - lexerKindHat, - lexerKindAt, - lexerKindComment, - lexerKindInteger, - lexerKindWord, - lexerKindCharacter, - lexerKindString, - lexerKindFrom, - lexerKindPointer, - lexerKindArray, - lexerKindArrow, - lexerKindProgram, - lexerKindModule, - lexerKindImport - ); - LexerToken = RECORD - CASE kind: LexerKind OF - lexerKindBoolean: booleanKind: BOOLEAN | - lexerKindIdentifier: identifierKind: Identifier | - lexerKindInteger: integerKind: INTEGER | - lexerKindString: stringKind: ShortString - END; - start_location: TextLocation; - end_location: TextLocation - END; - PLexerToken = POINTER TO LexerToken; - -PROCEDURE lexer_initialize(lexer: PLexer; input: File); -PROCEDURE lexer_destroy(lexer: PLexer); -(* Returns the last read token. *) -PROCEDURE lexer_current(lexer: PLexer): LexerToken; -(* Read and return the next token. *) -PROCEDURE lexer_lex(lexer: PLexer): LexerToken; - -END Lexer. 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. diff --git a/source/Transpiler.def b/source/Transpiler.def deleted file mode 100644 index 5f8c219..0000000 --- a/source/Transpiler.def +++ /dev/null @@ -1,20 +0,0 @@ -DEFINITION MODULE Transpiler; - -FROM FIO IMPORT File; - -FROM Common IMPORT ShortString; -FROM Lexer IMPORT PLexer, Lexer; -FROM Parser IMPORT PAstModule; - -TYPE - TranspilerContext = RECORD - input_name: ShortString; - output: File; - definition: File; - indentation: CARDINAL - END; - PTranspilerContext = POINTER TO TranspilerContext; - -PROCEDURE transpile(ast_module: PAstModule; output: File; definition: File; input_name: ShortString); - -END Transpiler.