Make.ITinclude IncrementalEngine.SYMBOLSThe type 'a terminal represents a terminal symbol. Its parameter 'a represents the type of the semantic values associated with this symbol. The concrete definitions of this type is generated.
The type 'a nonterminal represents a nonterminal symbol. Its parameter 'a represents the type of the semantic values associated with this symbol. The concrete definitions of this type is generated.
The type 'a symbol represents a terminal or nonterminal symbol. It is the disjoint union of the types 'a terminal and 'a nonterminal.
The type 'a lr1state describes an LR(1) state. The generated parser defines it internally as int.
Some of the tables that follow use encodings of (terminal and nonterminal) symbols as integers. So, we need functions that map the integer encoding of a symbol to its algebraic encoding.
val terminal : int -> xsymbolterminal maps an integer code for a terminal symbol to a (terminal) symbol.
val nonterminal : int -> xsymbolnonterminal maps an integer code for a nonterminal symbol to a (nonterminal) symbol.
The left-hand side of every production already appears in the signature TableFormat.TABLES, so we need not repeat it here.
The table rhs provides access to the right-hand side of every production. The encoding of symbols as integers in described in TableBackend.
A mapping of every LR(0) state to its set of LR(0) items. Each item is represented in its packed form (see Item) as an integer.