defparser name { rule }* => parsing-function
rule
::=
normal-rule
|
error-rule
normal-rule
::= ((
non-terminal
{
grammar-symbol
}*) {
form
}*)
error-rule
::= ((
non-terminal
:error) {
form
}*)
The name of the parser.
The rules define the productions of the grammar and the associated forms define the semantic actions for the rules.
defparser
creates a parsing function of the given name for the grammar defined. The parsing function is defined as if by:
(defun <name> (lexer &optional (symbol-to-string #'identify))
The lexer parameter is a function of no arguments that returns two values: the next grammar token on the input and the associated semantic value.
The optional symbol-to-string function can be used to define a printed representation of the grammar tokens. The function should take a grammar symbol as its single argument and returns an object to be used as a print representation for the grammar token.
For a full description and examples, see The Parser Generator.