turingAutomaton/expander.rkt

61 lines
1.3 KiB
Racket
Raw Normal View History

2020-03-30 16:35:50 -04:00
#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)