29 lines
642 B
Modula-2
29 lines
642 B
Modula-2
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.
|