signature PARSER_DATA = sig type pos (* the type of line numbers *) type svalue (* the type of semantic values *) type arg (* the type of the user-supplied *) (* argument to the parser *) type result structure LrTable : LR_TABLE structure Token : TOKEN sharing Token.LrTable = LrTable structure Actions : sig val actions : int * pos * (LrTable.state * (svalue * pos * pos)) list * arg -> LrTable.nonterm * (svalue * pos * pos) * ((LrTable.state *(svalue * pos * pos)) list) val void : svalue val extract : svalue -> result end (* structure EC contains information used to improve error recovery in an error-correcting parser *) structure EC : sig val is_keyword : LrTable.term -> bool val noShift : LrTable.term -> bool val preferred_subst: LrTable.term -> LrTable.term list val preferred_insert : LrTable.term -> bool val errtermvalue : LrTable.term -> svalue val showTerminal : LrTable.term -> string val terms: LrTable.term list end (* table is the LR table for the parser *) val table : LrTable.table end