diff --git a/beautiful-racket-demo/basic-demo-2/expander.rkt b/beautiful-racket-demo/basic-demo-2/expander.rkt index 866ae7b..d8d53b3 100644 --- a/beautiful-racket-demo/basic-demo-2/expander.rkt +++ b/beautiful-racket-demo/basic-demo-2/expander.rkt @@ -7,9 +7,9 @@ (with-pattern ([((b-line NUM STMT ...) ...) #'(LINE ...)] [(LINE-FUNC ...) (prefix-id "line-" #'(NUM ...))] - [(VAR-NAME ...) (find-unique-var-names #'(LINE ...))]) + [(VAR-ID ...) (find-unique-var-ids #'(LINE ...))]) #'(#%module-begin - (define VAR-NAME 0) ... + (define VAR-ID 0) ... LINE ... (define line-table (apply hasheqv (append (list NUM LINE-FUNC) ...))) @@ -17,10 +17,10 @@ (begin-for-syntax (require racket/list) - (define (find-unique-var-names stx) + (define (find-unique-var-ids line-stxs) (remove-duplicates - (for/list ([var-stx (in-list (syntax-flatten stx))] - #:when (syntax-property var-stx 'b-id)) - var-stx) + (for/list ([stx (in-list (syntax-flatten line-stxs))] + #:when (syntax-property stx 'b-id)) + stx) #:key syntax->datum))) diff --git a/beautiful-racket-demo/basic-demo-2/go.rkt b/beautiful-racket-demo/basic-demo-2/go.rkt index 24f4b70..24ecfc8 100644 --- a/beautiful-racket-demo/basic-demo-2/go.rkt +++ b/beautiful-racket-demo/basic-demo-2/go.rkt @@ -1,6 +1,8 @@ #lang br (require "struct.rkt" "line.rkt" "misc.rkt") -(provide b-goto b-gosub b-return b-for b-next) +(provide b-end b-goto b-gosub b-return b-for b-next) + +(define (b-end) (raise (end-program-signal))) (define (b-goto num-expr) (raise (change-line-signal num-expr))) diff --git a/beautiful-racket-demo/basic-demo-2/misc.rkt b/beautiful-racket-demo/basic-demo-2/misc.rkt index 1f0e8ad..963910e 100644 --- a/beautiful-racket-demo/basic-demo-2/misc.rkt +++ b/beautiful-racket-demo/basic-demo-2/misc.rkt @@ -1,6 +1,6 @@ #lang br (require "struct.rkt") -(provide (all-defined-out)) +(provide b-rem b-print b-let b-input) (define (b-rem val) (void)) @@ -12,6 +12,4 @@ (define-macro (b-input ID) #'(b-let ID (let* ([str (read-line)] [num (string->number (string-trim str))]) - (or num str)))) - -(define (b-end) (raise (end-program-signal))) \ No newline at end of file + (or num str)))) \ No newline at end of file diff --git a/beautiful-racket-demo/basic-demo-2/parser.rkt b/beautiful-racket-demo/basic-demo-2/parser.rkt index cedea26..873fb39 100644 --- a/beautiful-racket-demo/basic-demo-2/parser.rkt +++ b/beautiful-racket-demo/basic-demo-2/parser.rkt @@ -4,7 +4,7 @@ b-program : [b-line] (/NEWLINE [b-line])* b-line : b-line-num [b-statement] (/":" [b-statement])* [b-rem] @b-line-num : INTEGER b-rem : REM -@b-statement : b-rem | b-end | b-print | b-goto | b-let +@b-statement : b-end | b-print | b-goto | b-let | b-input | b-def | b-gosub | b-return | b-for | b-next | b-if b-end : /"end" diff --git a/beautiful-racket-demo/basic-demo-2a/parser.rkt b/beautiful-racket-demo/basic-demo-2a/parser.rkt index 968ee75..5f503d8 100644 --- a/beautiful-racket-demo/basic-demo-2a/parser.rkt +++ b/beautiful-racket-demo/basic-demo-2a/parser.rkt @@ -1,8 +1,8 @@ #lang brag b-program : [b-line] (/NEWLINE [b-line])* -b-line : b-line-num [b-statement] (/":" [b-statement])* +b-line : b-line-num [b-statement] (/":" [b-statement])* [b-rem] @b-line-num : INTEGER -@b-statement : b-rem | b-end | b-print | b-goto +@b-statement : b-end | b-print | b-goto b-rem : REM b-end : /"end" b-print : /"print" [b-printable] (/";" [b-printable])*