program calc; {$APPTYPE CONSOLE} uses Classes, SysUtils, calcLexer in 'calcLexer.pas', calcParser in 'calcParser.pas'; var stm: TFileStream; lex: TcalcLexer; par: TcalcParser; begin if ParamCount <> 1 then begin writeln('usage: calc '); exit; end else begin try stm := TFileStream.Create( ParamStr(1), fmOpenRead); lex := TcalcLexer.Create(stm); par := TcalcParser.Create(lex); par.calc; except end; end; stm.Free; par.Free; end.