#lang scheme/base
(require
(for-syntax scheme/base)
"../op.ss"
"../ns.ss"
"../tools.ss"
"../scat.ss"
"pattern.ss"
"macro-utils.ss"
"../asm/directives.ss"
)
(provide
(ns-out (scat)
(combine-out compile literal)) macro-prim:
lit
(op-combine-out qw cw)
qw? cw?)
(define-sr (macro-prim: . code) (scat: . code))
(define-virtual-ops
(qw value)
(cw addr))
(define (qw? x) (eq? x (asm: qw)))
(define (cw? x) (eq? x (asm: cw)))
(compositions
(scat) scat:
(literal ',(asm: qw) >tag)
(compile ',(asm: cw) >tag))
(define (lit datum) (macro-prim: ',datum literal))