diff options
Diffstat (limited to 'argot.lisp')
-rw-r--r-- | argot.lisp | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -81,7 +81,10 @@ and it returns VAR in that case." (symbolp (second s)) (endp (cddr s))))) -(defmacro deflanguage (name (&key (documentation "")) &body ruledefs) +(defmacro deflanguage (name (&key + (documentation "") + literals=) + &body ruledefs) (let ((bindings-var (gensym "BINDINGS"))) (labels ((collect-let-bindings (lhs vars) "Create let-bindings forms for the body of the :action." @@ -152,7 +155,9 @@ and it returns VAR in that case." (setf (get ',name 'argot::grammar-property) (make-instance 'grammar :documentation ,documentation - :start-rule ',(first (first ruledefs)))) + :start-rule ',(first (first ruledefs)) + ,@(when literals= + `(:literal-comparator ,literals=)))) ,@rule-adder-forms (defmacro ,name (&body tokens) |