You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
beautiful-racket/beautiful-racket-demo/basic-demo/lexer.rkt

18 lines
532 B
Racket

7 years ago
#lang br
(require brag/support)
7 years ago
(define basic-lexer
(lexer-srcloc
[(eof) (return-without-srcloc eof)]
7 years ago
[whitespace (token lexeme #:skip? #t)]
[(from/to "rem" #\newline) (token 'REM lexeme)]
7 years ago
[(:or "print" "goto" "end" "+" ":") lexeme]
[(:+ numeric) (token 'INTEGER (string->number lexeme))]
[(:or (:seq (:+ numeric) ".")
(:seq (:* numeric) "." (:+ numeric)))
(token 'DECIMAL (string->number lexeme))]
[(from/to "\"" "\"")
(token 'STRING (trim-ends "\"" lexeme "\""))]))
(provide basic-lexer)