Start a Modula-2 experiment
This commit is contained in:
28
boot/Compiler.mod
Normal file
28
boot/Compiler.mod
Normal 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.
|
Reference in New Issue
Block a user