racket/collects/syntax-color/default-lexer.rkt
2010-04-27 16:50:15 -06:00

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)))))