racket/collects/syntax-color/default-lexer.ss
2008-02-23 09:42:03 +00:00

28 lines
921 B
Scheme

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