From 4e68c5a3613c8fad09a3bb155222f9d0bd1209e1 Mon Sep 17 00:00:00 2001 From: Darren Bane Date: Sun, 30 Aug 2020 15:32:05 +0100 Subject: Making changes --- cabs-syn.lisp | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'cabs-syn.lisp') diff --git a/cabs-syn.lisp b/cabs-syn.lisp index a339a47..1a921a0 100644 --- a/cabs-syn.lisp +++ b/cabs-syn.lisp @@ -1,14 +1,42 @@ +(defpackage #:cabs-syn + (:use #:common-lisp) + (:export + #: + #: + #: + #: + #: + #: + #: + #: + #: + #: + #: + #: + #: + #: + #: + priority-uop + priority-binop)) +(in-package #:cabs-syn) + ;; If these were only C enums, without any payload, I'd just use symbols and (error) in the t case. ;; But classes seem better for the associated data, in discriminated unions. -(defclass () () (:abstractp t)) +;; Is it worth putting just 3 lines in a "cutils.lisp" or something? +;; Not for now, since it's private. +(defclass () ()) +(defmethod make-instance ((self ) &key) + (error "Cannot instantiate abstract class ~A" (class-name c))) + +(defclass () () (:metaclass )) (defclass () ((int :accessor int))) (defclass () ((var :accessor var))) (defclass () ((str :accessor str))) (defclass () ((op :accessor op) (exp :accessor exp))) (defclass () ((exp1 :accessor exp1) (op :accessor op) (exp2 :accessor exp2))) -(defclass () () (:abstractp t)) +(defclass () () (:metaclass )) (defclass () ((rem :accessor rem))) (defclass () ((goto :accessor goto))) (defclass () ((expr :accessor expr))) @@ -18,7 +46,7 @@ (defclass () ((num :accessor num) (cmd :accessor cmd))) -(defclass () () (:abstractp t)) +(defclass () () (:metaclass )) (defclass () ((line :accessor line))) (defclass () ()) (defclass () ()) @@ -35,3 +63,4 @@ ((eql bin-op 'mod) 4) ((member bin-op '(equal less lesseq great greateq diff)) 3) ((member bin-op '(and or)) 2))) +(provide "cabs-syn") -- cgit 1.4.1-2-gfad0