cat testfile 1 * 3 + 4 * (def + ( 3 * 4 )) / abc + 2 * 2 * 5 + 3 bruce_25% /usr/local/lib/sml/bin/ml-lex calcLex.lex Number of states = 18 Number of distinct rows = 5 Approx. memory size of trans. table = 645 bytes bruce_26% sml Standard ML of New Jersey, Version 110.0.7, September 28, 2000 [CM; autoload enabled] - use "/usr/local/lib/sml/src/ml-lex/lexgen.sml"; [opening /usr/local/lib/sml/src/ml-lex/lexgen.sml] GC #0.0.0.0.1.16: (0 ms) GC #0.0.0.1.2.35: (10 ms) GC #0.0.0.1.3.61: (20 ms) GC #0.0.1.2.4.75: (50 ms) GC #0.0.1.2.5.105: (10 ms) /usr/local/lib/sml/src/ml-lex/lexgen.sml:1247.5-1251.58 Warning: match nonexhaustive (true,129) => ... (true,256) => ... (false,129) => ... (false,256) => ... /usr/local/lib/sml/src/ml-lex/lexgen.sml:997.2-1016.11 Warning: match nonexhaustive (nil,nil) => ... (a :: a',b :: b') => ... /usr/local/lib/sml/src/ml-lex/lexgen.sml:914.9-914.56 Warning: match nonexhaustive (tl,el) :: r => ... GC #0.0.1.2.6.149: (20 ms) GC #0.1.2.3.7.162: (60 ms) GC #0.1.2.3.8.173: (10 ms) GC #0.1.2.3.9.206: (10 ms) GC #0.1.2.3.10.224: (20 ms) GC #0.1.2.3.11.240: (40 ms) GC #0.1.3.4.12.271: (50 ms) GC #0.1.3.4.13.310: (10 ms) GC #0.1.3.4.14.365: (20 ms) GC #0.1.3.4.15.388: (0 ms) GC #0.1.3.4.16.462: (10 ms) GC #0.1.3.4.17.510: (10 ms) GC #0.1.3.4.18.538: (20 ms) GC #1.2.4.5.19.576: (100 ms) GC #1.2.4.5.20.581: (0 ms) functor RedBlack : signature LEXGEN = sig val lexGen : string -> unit end structure LexGen : LEXGEN val it = () : unit - LexGen.lexGen("calcLex.lex"); GC #1.2.5.6.21.582: (0 ms) Number of states = 18 Number of distinct rows = 5 Approx. memory size of trans. table = 645 bytes val it = () : unit - ^Dbruce_27% sml Standard ML of New Jersey, Version 110.0.7, September 28, 2000 [CM; autoload enabled] - use "calcLex.lex.sml"; [opening calcLex.lex.sml] GC #0.0.0.0.1.8: (10 ms) GC #0.0.0.1.2.21: (10 ms) GC #0.0.0.1.3.34: (0 ms) structure CalcLex : sig structure Internal : structure UserDeclarations : exception LexError val makeLexer : (int -> string) -> unit -> Internal.result end val it = () : unit - val inputfile=TextIO.openIn("testfile"); val inputfile = - : TextIO.instream - val lexer=CalcLex.makeLexer(fn n => TextIO.inputLine inputfile); val lexer = fn : unit -> CalcLex.Internal.result - lexer(); val it = NUM 1 : CalcLex.Internal.result - lexer(); val it = TIMES : CalcLex.Internal.result - GC #0.0.0.1.4.69: (0 ms) lexer(); val it = NUM 3 : CalcLex.Internal.result - lexer(); val it = PLUS : CalcLex.Internal.result - lexer(); val it = NUM 4 : CalcLex.Internal.result - lexer(); val it = TIMES : CalcLex.Internal.result - lexer(); val it = LPAREN : CalcLex.Internal.result - lexer(); val it = ID "def" : CalcLex.Internal.result - lexer(); val it = PLUS : CalcLex.Internal.result - lexer(); val it = LPAREN : CalcLex.Internal.result - lexer(); val it = NUM 3 : CalcLex.Internal.result - lexer(); val it = TIMES : CalcLex.Internal.result - lexer(); val it = NUM 4 : CalcLex.Internal.result - lexer(); val it = RPAREN : CalcLex.Internal.result - lexer(); val it = RPAREN : CalcLex.Internal.result - lexer(); val it = DIV : CalcLex.Internal.result - lexer(); val it = ID "abc" : CalcLex.Internal.result - lexer(); val it = PLUS : CalcLex.Internal.result - lexer(); val it = NUM 2 : CalcLex.Internal.result - lexer(); val it = TIMES : CalcLex.Internal.result - lexer(); val it = NUM 2 : CalcLex.Internal.result - lexer(); val it = TIMES : CalcLex.Internal.result - lexer(); val it = NUM 5 : CalcLex.Internal.result - lexer(); GC #0.0.0.1.5.87: (0 ms) val it = PLUS : CalcLex.Internal.result - lexer(); val it = NUM 3 : CalcLex.Internal.result - lexer(); val it = EOF : CalcLex.Internal.result - lexer(); val it = EOF : CalcLex.Internal.result - lexer(); val it = EOF : CalcLex.Internal.result - ^Dbruce_28%