Add various transformation rules

This commit is contained in:
John Lorentzson 2025-05-22 12:40:30 +02:00
parent ebe27cf026
commit 38406c80ee
4 changed files with 27 additions and 1 deletions

View file

@ -0,0 +1,7 @@
(in-package #:user-side-compiler)
;;; STUB, TODO
(define-transformation (token (token-name asm-function))
;; TODO: Create table of asm functions that this can draw from
nil)

View file

@ -31,3 +31,6 @@
(write-string " " stream))
(when (slot-boundp object '%index)
(format stream "@~A" (ref-index object)))))
(define-transformation (ref (reference-constant reference)) ref)
(define-transformation (ref (reference-variable reference)) ref)

View file

@ -31,9 +31,24 @@ reading immediately. Should be a subset of *SPECIAL-TOKEN-CHARS*.")
(when (slot-boundp object '%name)
(format stream "\"~A\"" (name object)))))
(define-transformation (token (token-name reference-variable))
(multiple-value-bind (value existsp)
(find-reference-by-symbol (name token))
(if existsp
value
(add-reference-symbol (name token)
(make-instance 'reference-variable
:name (name token))))))
(defclass token-number (token)
((%value :accessor value :initarg :value)))
(define-transformation (token (token-number reference-constant))
(make-instance 'reference-constant :value (value token)))
(define-transformation (token (token-number integer))
(value token))
(defclass token-comment (token)
((%text :accessor text :initarg :text)))

View file

@ -4,9 +4,10 @@
:serial t
:components
((:file "package")
(:file "transform")
(:file "reference")
(:file "symbol-table")
(:file "transform")
(:file "asm-function")
(:file "tokenizer")
(:file "label")
(:file "high-level")