61 lines
1.3 KiB
Racket
61 lines
1.3 KiB
Racket
#lang br/quicklang
|
|
|
|
(require "tmUtils.rkt")
|
|
|
|
(define-macro (tA-module-begin PARSE-TREE)
|
|
#'(#%module-begin
|
|
PARSE-TREE
|
|
(display-result '(a a a a a))))
|
|
(provide (rename-out [tA-module-begin #%module-begin]))
|
|
|
|
(define-macro (tA-program START-ARG BLANK-ARG ACCEPT-ARG STATE-SET-ARG)
|
|
#'(void START-ARG BLANK-ARG ACCEPT-ARG STATE-SET-ARG))
|
|
(provide tA-program)
|
|
|
|
(define-macro (tA-start "@" START-ARG)
|
|
#'(set-start! START-ARG))
|
|
(provide tA-start)
|
|
|
|
(define-macro (tA-blank "%" BLANK-ARG)
|
|
#'(set-def! BLANK-ARG))
|
|
(provide tA-blank)
|
|
|
|
(define-macro (tA-accept "!" ACCEPT-ARG)
|
|
#'(void))
|
|
(provide tA-accept)
|
|
|
|
(define-macro (tA-state-set STATE-ARG ...)
|
|
#'(begin
|
|
STATE-ARG ...))
|
|
(provide tA-state-set)
|
|
|
|
(define-macro (tA-tran CURRENT "~" NEW DIR NEXT)
|
|
#'(lambda (i)
|
|
(hash-set! trans-map
|
|
`(,i ,CURRENT)
|
|
`(,NEW ,DIR ,NEXT))))
|
|
(provide tA-tran)
|
|
|
|
(define-macro (tA-tran-set TRAN ...)
|
|
#'(lambda (i)
|
|
(begin
|
|
(TRAN i) ...)))
|
|
(provide tA-tran-set)
|
|
|
|
(define-macro (tA-state ":" ID TRAN-SET)
|
|
#'(TRAN-SET ID))
|
|
(provide tA-state)
|
|
|
|
(define-macro (tA-state-id ID)
|
|
#'(string->symbol ID))
|
|
(provide tA-state-id)
|
|
|
|
(define-macro (tA-symbol SYM)
|
|
#'(string->symbol SYM))
|
|
(provide tA-symbol)
|
|
|
|
(define-macro (tA-dir DIR)
|
|
#'(begin
|
|
(if (equal? "<" DIR) 'L 'R)))
|
|
(provide tA-dir)
|