28 lines
921 B
Racket
28 lines
921 B
Racket
(module default-lexer mzscheme
|
|
(require parser-tools/lex
|
|
(prefix : parser-tools/lex-sre))
|
|
|
|
(provide default-lexer)
|
|
|
|
(define-lex-abbrevs
|
|
(parens (:or #\( #\) #\[ #\] #\{ #\})))
|
|
|
|
|
|
(define default-lexer
|
|
(lexer
|
|
((:+ (:~ parens whitespace))
|
|
(values lexeme 'no-color #f (position-offset start-pos) (position-offset end-pos)))
|
|
((:+ whitespace)
|
|
(values lexeme 'white-space #f (position-offset start-pos) (position-offset end-pos)))
|
|
(parens
|
|
(values lexeme 'no-color (string->symbol lexeme) (position-offset start-pos) (position-offset end-pos)))
|
|
((special)
|
|
(values "" 'no-color #f (position-offset start-pos) (position-offset end-pos)))
|
|
((special-comment)
|
|
(values "" 'comment #f (position-offset start-pos) (position-offset end-pos)))
|
|
((eof)
|
|
(values lexeme 'eof #f #f #f)))))
|
|
|
|
|
|
|