diff options
author | Eduardo Julian | 2015-12-02 19:10:31 -0400 |
---|---|---|
committer | Eduardo Julian | 2015-12-02 19:10:31 -0400 |
commit | 2c392029d19aee4962f3b37b4f10eb79f7c01e3f (patch) | |
tree | c9bad63534939e71d07903a0dd955f366b2d7404 /src/lux/analyser.clj | |
parent | a8b1320ce27470cb462c32ca344e31404dbe2bde (diff) |
- Made a variety of refactorings and minor changes.
- Generic class definitions are halfway done.
Diffstat (limited to 'src/lux/analyser.clj')
-rw-r--r-- | src/lux/analyser.clj | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/lux/analyser.clj b/src/lux/analyser.clj index 0f1f2ae37..ff8863003 100644 --- a/src/lux/analyser.clj +++ b/src/lux/analyser.clj @@ -152,15 +152,20 @@ (|case token ;; Classes & interfaces (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_class")] - (&/$Cons [_ (&/$TextS ?name)] - (&/$Cons [_ (&/$TextS ?super-class)] + (&/$Cons ?class-decl + (&/$Cons ?super-class (&/$Cons [_ (&/$TupleS ?interfaces)] (&/$Cons [_ (&/$TupleS ?anns)] (&/$Cons [_ (&/$TupleS ?fields)] (&/$Cons [_ (&/$TupleS ?methods)] (&/$Nil))))))))) - (|do [=interfaces (&/map% &&a-parser/parse-text ?interfaces)] - (&&host/analyse-jvm-class analyse compile-token ?name ?super-class =interfaces ?anns ?fields ?methods)) + (|do [=gclass-decl (&&a-parser/parse-gclass-decl ?class-decl) + =super-class (&&a-parser/parse-gclass-super ?super-class) + =interfaces (&/map% &&a-parser/parse-gclass-super ?interfaces) + =anns (&/map% &&a-parser/parse-ann ?anns) + =fields (&/map% &&a-parser/parse-field ?fields) + =methods (&/map% &&a-parser/parse-method-def ?methods)] + (&&host/analyse-jvm-class analyse compile-token =gclass-decl =super-class =interfaces =anns =fields =methods)) (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_interface")] (&/$Cons ?class-decl @@ -168,18 +173,22 @@ (&/$Cons [_ (&/$TupleS ?anns)] ?methods))))) (|do [=gclass-decl (&&a-parser/parse-gclass-decl ?class-decl) - =supers (&/map% &&a-parser/parse-gclass-super ?supers)] - (&&host/analyse-jvm-interface analyse compile-token =gclass-decl =supers ?anns ?methods)) + =supers (&/map% &&a-parser/parse-gclass-super ?supers) + =anns (&/map% &&a-parser/parse-ann ?anns) + =methods (&/map% &&a-parser/parse-method-decl ?methods)] + (&&host/analyse-jvm-interface analyse compile-token =gclass-decl =supers =anns =methods)) (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_anon-class")] - (&/$Cons [_ (&/$TextS ?super-class)] + (&/$Cons ?super-class (&/$Cons [_ (&/$TupleS ?interfaces)] (&/$Cons [_ (&/$TupleS ?ctor-args)] (&/$Cons [_ (&/$TupleS ?methods)] (&/$Nil))))))) - (|do [=interfaces (&/map% &&a-parser/parse-text ?interfaces) - =ctor-args (&/map% &&a-parser/parse-ctor-arg ?ctor-args)] - (&&host/analyse-jvm-anon-class analyse compile-token exo-type ?super-class =interfaces =ctor-args ?methods)) + (|do [=super-class (&&a-parser/parse-gclass-super ?super-class) + =interfaces (&/map% &&a-parser/parse-gclass-super ?interfaces) + =ctor-args (&/map% &&a-parser/parse-ctor-arg ?ctor-args) + =methods (&/map% &&a-parser/parse-method-def ?methods)] + (&&host/analyse-jvm-anon-class analyse compile-token exo-type =super-class =interfaces =ctor-args =methods)) ;; Programs (&/$FormS (&/$Cons [_ (&/$SymbolS _ "_jvm_program")] |