If a grammar contains the production:
expression -> expression operator expression
with a semantic representation of a list of the individual semantic values, the Lisp grammar would contain the rule:
(( expression expression operator expression ) (list $1 $2 $3))
Error productions of the form:
(( nt :error) ( some error behavior ))
are explained in the section below.
The first rule of the grammar should be of the form:
(( nt nt1) $1)
where the non-terminal nt has no other productions and nt1
serves as the main "top-level" non-terminal.