Start a Modula-2 experiment

This commit is contained in:
2022-06-11 22:52:13 +02:00
parent f5c4a27a6d
commit c6ea37173d
26 changed files with 819 additions and 2574 deletions

28
boot/Compiler.mod Normal file
View File

@@ -0,0 +1,28 @@
MODULE Compiler;
FROM Terminal IMPORT WriteLn;
FROM FIO IMPORT WriteNBytes, StdIn, StdOut;
FROM SYSTEM IMPORT ADR, ADDRESS;
FROM Lexer IMPORT Lexer, LexerToken, LexerDestroy, LexerInitialize, LexerLex;
VAR
ALexer: Lexer;
Index, WrittenBytes: CARDINAL;
Token: LexerToken;
BEGIN
LexerInitialize(ADR(ALexer), StdIn);
Token := LexerLex(ADR(ALexer));
WHILE ALexer.Current^ <> CHAR(0) DO
WrittenBytes := WriteNBytes(StdOut, ADDRESS(ALexer.Current - ALexer.Start), ALexer.Start);
IF ALexer.Current^ <> '.' THEN
WriteLn()
END;
Token := LexerLex(ADR(ALexer));
END;
LexerDestroy(ADR(ALexer));
END Compiler.