7.1.2 Nonterminal Symbols

Nonterminal symbols are names of grammar productions. If a nonterminal symbol is at the left-hand side of a production, the nonterminal symbol does name the production. If a nonterminal symbol is in the right-hand side of a production, the nonterminal symbol means expanding a nested production named by the nonterminal symbol.

Simple nonterminal symbols are unquoted strings that can consist of digits, English letters, and ‘_’ and must begin with an English letter or ‘_’. Examples: START, C25, Function_A. Simple nonterminal symbols that begin with ‘_’ are for internal use by QSMM tools.

On passing the option --viterbi to the adaptive bottom-up parser abu-parser, it supports simple and compound nonterminal symbols. A compound nonterminal symbol consists of a simple nonterminal symbol and length concatenated by ‘/’:

NAME/LENGTH

Here LENGTH is the expected number of terminal symbols in a terminal symbol subsequence parsed by the compound nonterminal symbol. Examples: START/2, START/10.

Note: bottom-up template grammar supports extended syntax for compound nonterminal symbols, where they can include a context name; see Compound Nonterminal Symbols, for more information.

A start nonterminal symbol is a nonterminal symbol at the left-hand side of a top-level production for consuming the entire parse unit or segment of a training terminal symbol sequence. If the first production in a grammar has a simple nonterminal symbol at the left-hand side, the simple nonterminal symbol is a single start nonterminal symbol in the grammar.

On passing the option --viterbi to abu-parser, the first production in a grammar must have a compound nonterminal symbol StartName/… at the left-hand side, and all compound nonterminal symbols StartName/… are start nonterminal symbols. If ParseUnitLength is the number of terminal symbols in a training parse unit, the parser selects a compound nonterminal symbol StartName/ParseUnitLength as a start nonterminal symbol.