diff --git a/beautiful-racket-demo/basic-demo-3/lexer.rkt b/beautiful-racket-demo/basic-demo-3/lexer.rkt index 90a950f..c43176d 100644 --- a/beautiful-racket-demo/basic-demo-3/lexer.rkt +++ b/beautiful-racket-demo/basic-demo-3/lexer.rkt @@ -8,6 +8,9 @@ (define-lex-abbrev id-kapu (:or whitespace (char-set "()[]{}\",'`;#|\\"))) +(define-lex-abbrev id + (:seq (:~ (:or "-" id-kapu)) (:* (:~ id-kapu)))) + (define basic-lexer (lexer-srcloc [(eof) (return-without-srcloc eof)] @@ -19,8 +22,7 @@ [(:or (:seq (:? digits) "." digits) (:seq digits ".")) (token 'DECIMAL (string->number lexeme))] - [(:seq (:~ (:or "-" id-kapu)) (:* (:~ id-kapu))) - (token 'ID (string->symbol lexeme))] + [id (token 'ID (string->symbol lexeme))] [(:or (from/to "\"" "\"") (from/to "'" "'")) (token 'STRING (substring lexeme diff --git a/beautiful-racket-demo/basic-demo-3/sample-require.rkt b/beautiful-racket-demo/basic-demo-3/sample-require.rkt index 14b3174..9799586 100644 --- a/beautiful-racket-demo/basic-demo-3/sample-require.rkt +++ b/beautiful-racket-demo/basic-demo-3/sample-require.rkt @@ -1,8 +1,7 @@ #lang basic-demo-3 -5 x = 5 -10 def f(x, y) = x * y -20 print f(9, f(4,5)) : print x -30 print 42 : import math/number-theory -40 print prime?(15) -50 import racket/base -60 print max(2, 4, 10, 8) \ No newline at end of file +10 import math/number-theory +20 print nth-prime(15) +30 print prime?(24) +40 import racket/base +50 print max(f(1), f(2), f(5), f(4)) +60 def f(x) = x + x \ No newline at end of file