aboutsummaryrefslogtreecommitdiff
path: root/argot.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'argot.lisp')
-rw-r--r--argot.lisp9
1 files changed, 7 insertions, 2 deletions
diff --git a/argot.lisp b/argot.lisp
index 8ab90ba..aebe3d6 100644
--- a/argot.lisp
+++ b/argot.lisp
@@ -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)