MODULE Main; FROM InOut IMPORT in, out, WriteCard, Write, WriteLn, ReadCard, WriteInt, WriteReal, WriteString, OpenInput, CloseInput; FROM FileSystem IMPORT Open,Close,Reset,Done; FROM Tools IMPORT String, PutQStr,Putc,PutStr, Ctoi, Ctor; FROM Lex IMPORT TokenType,LexDebug,ShowToken,Lexical; FROM TableManager IMPORT Install, LookUp, NullDef, sttype, TabDebug; TYPE esetr = [ box..spline ]; VAR eset : SET OF esetr; Tempstr: String; Token : String; Junk, TokenCode : TokenType; Value : REAL; found : BOOLEAN; t : sttype; i, j : CARDINAL; BEGIN PutQStr("Beginning LEX run, source file is junk.dat\n" ); Open( in, "junk.dat", FALSE ); IF NOT Done() THEN PutQStr( "Can't open junk.dat \n" ); HALT END; Reset( in ); LexDebug := FALSE; Lexical( Token, TokenCode ); Value := 0.0; WHILE TokenCode <> with DO ShowToken( Token, TokenCode ); IF( TokenCode = box ) OR ( TokenCode = spline ) THEN PutQStr(" -- box \n" ) END; IF TokenCode IN { box..spline } THEN PutQStr( " -- Basic element \n" ) ELSIF TokenCode = Identifier THEN Value := Value + 1.5; Install( Token, NullDef, Value, Mactype ) ELSIF TokenCode = IntegerNumber THEN PutQStr(" intvalue " ); WriteInt( Ctoi( Token ), 6 ); WriteLn ELSIF TokenCode = RealNumber THEN PutQStr(" realvalue " ); WriteReal( Ctor( Token ), 16 ); WriteLn END; Lexical( Token, TokenCode ) END; WHILE TokenCode <> EndOfFile DO IF TokenCode = Identifier THEN found := LookUp( Token, Tempstr, Value, t ); IF found THEN PutStr( Token ); PutQStr(" value is " ); WriteReal( Value, 20 ); WriteLn ELSE PutStr( Token ); PutQStr( " not found \n" ) END END; Lexical( Token, TokenCode ) END; PutQStr( " EOF encountered \n " ); Close( in ) END Main.