[Fdcil-cvs] dev/miracle2k/exercises/expression_parser .cvsignore,NONE,1.1 test1.bdsproj,NONE,1.1 tes
Status: Planning
Brought to you by:
miracle2k
|
From: Michael E. <mir...@us...> - 2004-08-03 15:09:38
|
Update of /cvsroot/fdcil/dev/miracle2k/exercises/expression_parser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4526/miracle2k/exercises/expression_parser Added Files: .cvsignore test1.bdsproj test1.cfg test1.dpr Log Message: first tests --- NEW FILE: .cvsignore --- *.exe *.dcuil *.rsp *.pdb Model --- NEW FILE: test1.cfg --- -$A- -$B- -$C+ -$D+ -$E- -$F- -$G+ -$H+ -$I+ -$J- -$K- -$L+ -$M- -$N+ -$O+ -$P+ -$Q- -$R- -$S- -$T- -$U- -$V+ -$W- -$X+ -$YD -$Z1 -cg -vn -AWinTypes=Borland.Vcl.Windows;WinProcs=Borland.Vcl.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -H+ -W+ -M -$M4096,1048576 -K$00400000 -LU"" --- NEW FILE: test1.dpr --- program test1; {$APPTYPE CONSOLE} uses SysUtils, Cradle in '..\Cradle.pas'; procedure Expression; forward; procedure Factor; begin if Look = '(' then begin Match('('); Expression; Match(')'); end else Emitln('MOVE #' + GetNum + ', D0'); end; procedure Division; begin Match('/'); Factor; EmitLn('MOVE (SP) + , D1') ; EmitLn('DIVS D1, D0') ; end; procedure Multiply; begin Match('*'); Factor; Emitln('MULS (SP)+, D0'); end; procedure Term; begin Factor; while Look in ['*', '/'] do begin EmitLn ('MOVE D0, -(SP)' ); case Look of '*': Multiply; '/': Division; else Expected('Mulop'); end; end; end; procedure Add; begin Match('+'); Term; Emitln('ADD (SP)+, D0'); end; procedure Substract; begin Match('-'); Term; Emitln('SUB (SP)+, D0'); Emitln('NEG D0'); end; procedure Expression; begin if IsAddOp(Look) then Emitln('CLR D0') else Term; while Look in ['+', '-'] do begin EmitLn ('MOVE D0, -(SP)' ); case Look of '+': Add; '-': Substract; else Expected('Addop'); end; end; end; begin while true do try Init; Expression; Match(#0); except end; Readln; end. --- NEW FILE: test1.bdsproj --- (This appears to be a binary file; contents omitted.) |