From 1504c36d166a81de08d93d8a5a85e4c36467f7b1 Mon Sep 17 00:00:00 2001 From: colin Date: Sun, 10 Sep 2023 12:01:07 -0700 Subject: Added custom literals comparator for grammars --- argot.lisp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'argot.lisp') 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) -- cgit v1.2.3