(defpackage #:sarcasm.ast (:use #:cl #:sarcasm.types) (:import-from #:sarcasm.util #:def/class) (:local-nicknames (#:a #:alexandria-2) (#:util #:sarcasm.util) (#:instr #:sarcasm.instr))) (in-package #:sarcasm.ast) ;;; MODULE-STRUCTURES (def/class func () (type :prefix :type typeidx) (locals :type (vector valtype)) (body :prefix :type expr)) ;;; MODULES (def/class module () (types funcs tables mems globals elems datas imports exports :type vector :initform (vector)) (start :type (or null t) ; TODO: what is this value type? :initform nil))