#lang sml signature LR_PARSER = sig structure Stream: STREAM structure LrTable : LR_TABLE structure Token : TOKEN sharing type LrTable.pairlist = Token.LrTable.pairlist sharing type LrTable.state = Token.LrTable.state sharing type LrTable.term = Token.LrTable.term sharing type LrTable.nonterm = Token.LrTable.nonterm sharing type LrTable.action = Token.LrTable.action sharing type LrTable.table = Token.LrTable.table exception ParseError val parse : {table : LrTable.table, lexer : ('_b,'_c) Token.token Stream.stream, arg: 'arg, saction : int * '_c * (LrTable.state * ('_b * '_c * '_c)) list * 'arg -> LrTable.nonterm * ('_b * '_c * '_c) * ((LrTable.state *('_b * '_c * '_c)) list), void : '_b, ec : { is_keyword : LrTable.term -> bool, noShift : LrTable.term -> bool, preferred_change : (LrTable.term list * LrTable.term list) list, errtermvalue : LrTable.term -> '_b, showTerminal : LrTable.term -> string, terms: LrTable.term list, error : string * '_c * '_c -> unit }, lookahead : int (* max amount of lookahead used in *) (* error correction *) } -> '_b * (('_b,'_c) Token.token Stream.stream) end