From d5df7345c0e20069803d8cbc6c504253e3cda309 Mon Sep 17 00:00:00 2001 From: jeaye Date: Sat, 27 Apr 2019 16:54:59 -0700 Subject: [PATCH] Rename fn and do expressions --- resources/neo-grammar | 6 +++--- src/com/jeaye/jank/parse/spec.clj | 18 +++++++++--------- src/com/jeaye/jank/parse/transform.clj | 14 +++++++------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/resources/neo-grammar b/resources/neo-grammar index 683bd557..c634270a 100644 --- a/resources/neo-grammar +++ b/resources/neo-grammar @@ -2,7 +2,7 @@ = regex / string / nil / number / boolean / set / map / vector / qualified-keyword / keyword / qualified-identifier / identifier / binding-definition / - fn-definition / do-definition / + fn-expression / do-expression / if / application @@ -49,13 +49,13 @@ binding-definition = left-paren def-keyword identifier atom right-paren = <'fn'> argument-list = left-bracket identifier* right-bracket -fn-definition = +fn-expression = left-paren fn-keyword identifier? argument-list atom* right-paren = <'do'> -do-definition = +do-expression = left-paren do-keyword atom* right-paren diff --git a/src/com/jeaye/jank/parse/spec.clj b/src/com/jeaye/jank/parse/spec.clj index 503660c3..6923fcfd 100644 --- a/src/com/jeaye/jank/parse/spec.clj +++ b/src/com/jeaye/jank/parse/spec.clj @@ -24,8 +24,8 @@ (s/def ::kind (into types [:constant :binding-definition :argument-list - :fn-definition ; TODO: rename to fn-expression - :do-definition ; TODO: rename to do-expression + :fn-expression ; TODO: rename to fn-expression + :do-expression ; TODO: rename to do-expression :if-expression :application])) @@ -75,12 +75,12 @@ ::value])) (s/def ::parameters (s/coll-of any?)) ; TODO: identifier -(s/def ::body any?) ; TODO: do-definition -(s/def ::fn-definition (s/keys :req [::parameters +(s/def ::body any?) ; TODO: do-expression +(s/def ::fn-expression (s/keys :req [::parameters ::body] :opt [::name])) (s/def ::return any?) ; TODO: ::node -(s/def ::do-definition (s/keys :req [::body +(s/def ::do-expression (s/keys :req [::body ::return])) (s/def ::condition any?) ; TODO: ::node @@ -109,10 +109,10 @@ :symbol (node (constant? :symbol) (single? ::symbol)) :binding-definition (node (kind? :binding-definition) ::binding-definition) - :fn-definition (node (kind? :fn-definition) - ::fn-definition) - :do-definition (node (kind? :do-definition) - ::do-definition) + :fn-expression (node (kind? :fn-expression) + ::fn-expression) + :do-expression (node (kind? :do-expression) + ::do-expression) :if-expression (node (kind? :if-expression) ::if-expression) :application (node (kind? :application) diff --git a/src/com/jeaye/jank/parse/transform.clj b/src/com/jeaye/jank/parse/transform.clj index 3a64c872..c5403318 100644 --- a/src/com/jeaye/jank/parse/transform.clj +++ b/src/com/jeaye/jank/parse/transform.clj @@ -84,15 +84,15 @@ (deftransform argument-list [& more] (vec more)) -(deftransform do-definition [& more] +(deftransform do-expression [& more] (let [ret (last more)] - {::parse.spec/kind :do-definition + {::parse.spec/kind :do-expression ::parse.spec/body (into [] (butlast more)) ::parse.spec/return (if (some? ret) ret (constant none :nil))})) -(deftransform fn-definition [& more] +(deftransform fn-expression [& more] (let [has-name? (= :identifier (-> more first :kind)) params (if has-name? (second more) @@ -100,9 +100,9 @@ body (if has-name? (drop 2 more) (rest more))] - (merge {::parse.spec/kind :fn-definition + (merge {::parse.spec/kind :fn-expression ::parse.spec/parameters params - ::parse.spec/body (apply do-definition body)} + ::parse.spec/body (apply do-expression body)} (when has-name? {::parse.spec/name (first more)})))) @@ -134,8 +134,8 @@ :symbol (partial constant single :symbol) :binding-definition binding-definition :argument-list argument-list - :fn-definition fn-definition - :do-definition do-definition + :fn-expression fn-expression + :do-expression do-expression :if if-expression :application application})