diff --git a/beautiful-racket-demo/basic-demo/expander.rkt b/beautiful-racket-demo/basic-demo/expander.rkt index 7d1028f..6391b8c 100644 --- a/beautiful-racket-demo/basic-demo/expander.rkt +++ b/beautiful-racket-demo/basic-demo/expander.rkt @@ -46,7 +46,8 @@ (add1 line-idx))))) (define (b-rem val) (void)) -(define (b-print [val ""]) (displayln val)) -(define (b-sum . nums) (apply + nums)) -(define (b-num-expr expr) +(define (b-print . vals) + (displayln (string-append* (map ~a vals)))) +(define (b-sum . vals) (apply + vals)) +(define (b-expr expr) (if (integer? expr) (inexact->exact expr) expr)) \ No newline at end of file diff --git a/beautiful-racket-demo/basic-demo/lexer.rkt b/beautiful-racket-demo/basic-demo/lexer.rkt index 08a2cf7..9f95c19 100644 --- a/beautiful-racket-demo/basic-demo/lexer.rkt +++ b/beautiful-racket-demo/basic-demo/lexer.rkt @@ -9,7 +9,8 @@ ["\n" (token 'NEWLINE lexeme)] [whitespace (token lexeme #:skip? #t)] [(from/stop-before "rem" "\n") (token 'REM lexeme)] - [(:or "print" "goto" "end" "+" ":") lexeme] + [(:or "print" "goto" "end" + "+" ":" ";") (token lexeme lexeme)] [digits (token 'INTEGER (string->number lexeme))] [(:or (:seq (:? digits) "." digits) (:seq digits ".")) diff --git a/beautiful-racket-demo/basic-demo/parser.rkt b/beautiful-racket-demo/basic-demo/parser.rkt index aaeab76..ff898cf 100644 --- a/beautiful-racket-demo/basic-demo/parser.rkt +++ b/beautiful-racket-demo/basic-demo/parser.rkt @@ -5,8 +5,9 @@ b-line : b-line-number [b-statement] (/":" [b-statement])* @b-statement : b-rem | b-end | b-print | b-goto b-rem : REM b-end : /"end" -b-print : /"print" [STRING | b-num-expr] -b-goto : /"goto" b-num-expr -b-num-expr : b-sum +b-print : /"print" [b-printable] (/";" [b-printable])* +@b-printable : STRING | b-expr +b-goto : /"goto" b-expr +b-expr : b-sum b-sum : b-number (/"+" b-number)* @b-number : INTEGER | DECIMAL \ No newline at end of file diff --git a/beautiful-racket-demo/basic-demo/private/sample-pseudocode.rkt b/beautiful-racket-demo/basic-demo/private/sample-pseudocode.rkt index cb306a5..1decc26 100644 --- a/beautiful-racket-demo/basic-demo/private/sample-pseudocode.rkt +++ b/beautiful-racket-demo/basic-demo/private/sample-pseudocode.rkt @@ -4,5 +4,5 @@ (define (40) (end)) (define (60) (print "three") (print (+ 1.0 3))) (define (70) (goto (+ 11 18.5 0.5))) -(define (10) (print "one")) +(define (10) (print "o" "n" "e")) (define (20) (print) (goto 60) (end)) \ No newline at end of file diff --git a/beautiful-racket-demo/basic-demo/sample.rkt b/beautiful-racket-demo/basic-demo/sample.rkt index a3089f6..bf4b435 100644 --- a/beautiful-racket-demo/basic-demo/sample.rkt +++ b/beautiful-racket-demo/basic-demo/sample.rkt @@ -5,5 +5,5 @@ 40 end 60 print 'three' : print 1.0 + 3 70 goto 11. + 18.5 + .5 -10 print "one" +10 print "o" ; "n" ; "e" 20 print : goto 60.0 : end \ No newline at end of file