A simple grammar compiler ( gramcom.lsp) can compile grammar rules into parsing programs:
(defgrammar
(S -> (what (CUST) (LOC)? ordered (PARTS)?
(SUPP)? (DATE)?)
(combine $2 $3 $5 $6 $7))
(S -> (who (LOC)? ordered (PARTS)? (SUPP)? (DATE)?)
(combine (retrieve 'customer) $2 $4 $5 $6))
(CUST -> (customer) (retrieve 'customer))
(CUST -> (customers) (retrieve 'customer))
(LOC -> (in (city)) (restrict 'customer-city $2))
(DATE -> (in (month))
(restrictb '= 'date-month $2))
(DATE -> (before (month))
(restrictb '< 'date-month $2))
(DATE -> (after (month))
(restrictb '> 'date-month $2))
(PARTS -> ((part)) (restrict 'part $1))
(SUPP -> (from (supplier)) (restrict 'supplier $2))
)
Contents    Page-10    Prev    Next    Page+10    Index