lr35902ish racket
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.

19 lines
530B

  1. #lang br
  2. (require brag/support)
  3. (define-lex-abbrev digits (:+ (char-set "0123456789")))
  4. (define-lex-abbrev reserved-terms (:or "LD" ","))
  5. (define-lex-abbrev register-terms (:or "A" "B" "C" "D" "E" "F" "H" "L"))
  6. (define basic-lexer
  7. (lexer-srcloc
  8. ["\n" (token 'NEWLINE lexeme)]
  9. [whitespace (token lexeme #:skip? #t)]
  10. [reserved-terms (token lexeme lexeme)]
  11. [register-terms (token 'REGISTER-ID (string->symbol lexeme))]
  12. [digits (token 'U8-NUMBER (string->number lexeme))]))
  13. (provide basic-lexer)