diff options
author | Darren Bane <dbane@tilde.institute> | 2020-10-22 17:41:56 +0100 |
---|---|---|
committer | Darren Bane <dbane@tilde.institute> | 2020-10-22 17:41:56 +0100 |
commit | 36a8373ce5198bd7887b29774d5a5b0052902d27 (patch) | |
tree | 35a74eaf1d175b5f1cb161ca3f5dc2dedc584e22 /cabs-syn.lisp | |
parent | 7e300b255434529cd4cc26542f67442c577e7c47 (diff) | |
parent | 851f5d17ba7f22a54779b04e34bbde2917a2c10d (diff) | |
download | lsp-36a8373ce5198bd7887b29774d5a5b0052902d27.tar.gz |
Merge branch 'master' of /home/dbane/public_repos/lsp
Diffstat (limited to 'cabs-syn.lisp')
-rw-r--r-- | cabs-syn.lisp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/cabs-syn.lisp b/cabs-syn.lisp index 12b9fd4..60b1a65 100644 --- a/cabs-syn.lisp +++ b/cabs-syn.lisp @@ -24,14 +24,17 @@ ;; But classes seem better for the associated data, in discriminated unions. (defclass <expression> () () (:metaclass <abstract-class>)) -(defclass <exp-int> (<expression>) ((int :accessor int))) + +(defclass <exp-int> (<expression>) ((my-int :accessor my-int))) +;; TODO: need another closer-mop:validate-superclass call here + (defclass <exp-var> (<expression>) ((var :accessor var))) (defclass <exp-str> (<expression>) ((str :accessor str))) -(defclass <exp-unr> (<expression>) ((op :accessor op) (exp :accessor exp))) +(defclass <exp-unr> (<expression>) ((op :accessor op) (expr :accessor expr))) (defclass <exp-bin> (<expression>) ((exp1 :accessor exp1) (op :accessor op) (exp2 :accessor exp2))) (defclass <command> () () (:metaclass <abstract-class>)) -(defclass <cmd-rem> (<command>) ((rem :accessor rem))) +(defclass <cmd-rem> (<command>) ((remark :accessor remark))) (defclass <cmd-goto> (<command>) ((goto :accessor goto))) (defclass <cmd-print> (<command>) ((expr :accessor expr))) (defclass <cmd-input> (<command>) ((var :accessor var))) @@ -51,7 +54,8 @@ ((not) 1) ((uminus) 7))) -(defun priority-binop (bin-op (cond ((member bin-op '(mult div)) 6) +(defun priority-binop (bin-op) + (cond ((member bin-op '(mult div)) 6) ((member bin-op '(plus minus)) 5) ((eql bin-op 'mod) 4) ((member bin-op '(equal less lesseq great greateq diff)) 3) |