program; from FIO import Close, IsNoError, File, OpenToRead, StdErr, StdOut, WriteLine, WriteString; from SYSTEM import ADR; from M2RTS import HALT, ExitOnHalt; from Lexer import Lexer, lexer_destroy, lexer_initialize; from Transpiler import transpile; from CommandLineInterface import PCommandLine, parse_command_line; var command_line: PCommandLine; proc compile_from_stream(); var lexer: Lexer; source_input: File; begin source_input := OpenToRead(command_line^.input); if IsNoError(source_input) = false then WriteString(StdErr, 'Fatal error: failed to read the input file "'); WriteString(StdErr, command_line^.input); WriteString(StdErr, '".'); WriteLine(StdErr); ExitOnHalt(2) end; if IsNoError(source_input) then lexer_initialize(ADR(lexer), source_input); transpile(ADR(lexer), StdOut, command_line^.input); lexer_destroy(ADR(lexer)); Close(source_input) end end; begin ExitOnHalt(0); command_line := parse_command_line(); if command_line <> nil then compile_from_stream() end; if command_line = nil then ExitOnHalt(1) end; HALT() end.