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.