A Toy Programming Language
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
775B

  1. #lang br/quicklang
  2. (require "parser.rkt")
  3. (define (read-syntax path port)
  4. (define parse-tree (parse path (make-tokenizer port)))
  5. (define module-datum `(module tA-mod turingAutomaton/expander
  6. ,parse-tree))
  7. (datum->syntax #f module-datum))
  8. (provide read-syntax)
  9. (require brag/support)
  10. (define-lex-abbrev digits (:+ (char-set "0123456789")))
  11. (define (make-tokenizer port)
  12. (define (next-token)
  13. (define tA-lexer
  14. (lexer
  15. [(from/to ";" "\n") (next-token)]
  16. [whitespace (next-token)]
  17. ["\n" (token 'NL lexeme)]
  18. [(char-set "@%!~<>") lexeme]
  19. [(:+ (:or digits alphabetic)) (token 'TA-STRING lexeme)]
  20. [any-char lexeme]))
  21. (tA-lexer port))
  22. next-token)