From 5c817a33b7f95aa0a6fb5833e64d6a58442445ce Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Tue, 28 Feb 2017 17:07:03 -0800 Subject: [PATCH] not quite there --- beautiful-racket-demo/basic-demo-3/lexer.rkt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/beautiful-racket-demo/basic-demo-3/lexer.rkt b/beautiful-racket-demo/basic-demo-3/lexer.rkt index ee9df28..9601ef0 100644 --- a/beautiful-racket-demo/basic-demo-3/lexer.rkt +++ b/beautiful-racket-demo/basic-demo-3/lexer.rkt @@ -5,6 +5,9 @@ (define-lex-abbrev reserved-terms (:or "print" "goto" "end" "+" ":" ";" "let" "=" "input" "-" "*" "/" "^" "mod" "(" ")" "def" "if" "then" "else" "<" ">" "<>" "and" "or" "not" "gosub" "return" "for" "to" "step" "next" "def" "," "import")) +(define-lex-abbrev id-kapu + (:or whitespace (char-set "()[]{}\",'`;#|\\"))) + (define basic-lexer (lexer-srcloc [(eof) (return-without-srcloc eof)] @@ -12,12 +15,11 @@ [whitespace (token lexeme #:skip? #t)] [(from/stop-before "rem" "\n") (token 'REM lexeme)] [reserved-terms (token lexeme lexeme)] - [(:seq alphabetic (:* (:or alphabetic numeric "$" "/" "-" "?"))) - (token 'ID (string->symbol lexeme))] [digits (token 'INTEGER (string->number lexeme))] [(:or (:seq (:? digits) "." digits) (:seq digits ".")) (token 'DECIMAL (string->number lexeme))] + [(:+ (:~ id-kapu)) (token 'ID (string->symbol lexeme))] [(:or (from/to "\"" "\"") (from/to "'" "'")) (token 'STRING (substring lexeme