Grammar Compiler [file gramcom.lsp]
It is easy to write a grammar compiler that converts a Yacc-like grammar into the equivalent ATN parsing functions. This is especially easy in Lisp since Lisp code and Lisp data are the same thing.
(rulecom '(LOC -> (in (city))
(restrict 'customer-city $2)) )
(DEFUN LOC62 ()
(LET ($1 $2)
(SAVEPTR)
(IF (AND (AND (EQL (SETQ $1 *WORD*) 'IN)
(NEXT))
(SETQ $2 (CITY)))
(PROGN (SUCCESS)
(RESTRICT 'CUSTOMER-CITY $2))
(FAIL))))