From 9aad4b0f241e85df2cc1129825872c589bc71747 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Mon, 21 May 2018 17:22:28 -0700 Subject: [PATCH] don't put chars in parse tree --- brag/brag/codegen/codegen.rkt | 1 - brag/brag/codegen/runtime.rkt | 8 +++---- brag/brag/test/test-01-equal.rkt | 32 ++++++++++++------------- brag/brag/test/test-baby-json-hider.rkt | 10 +++++++- brag/brag/test/test-baby-json.rkt | 10 +++++++- 5 files changed, 37 insertions(+), 24 deletions(-) diff --git a/brag/brag/codegen/codegen.rkt b/brag/brag/codegen/codegen.rkt index 493bf29..14d6697 100755 --- a/brag/brag/codegen/codegen.rkt +++ b/brag/brag/codegen/codegen.rkt @@ -167,7 +167,6 @@ (let loop ([x (syntax->datum (PARSE x))]) (cond [(list? x) (map loop x)] - [(char? x) (string x)] [else x]))) (define PARSE-TREE PARSE-TO-DATUM)))))])) diff --git a/brag/brag/codegen/runtime.rkt b/brag/brag/codegen/runtime.rkt index 71d9bb0..7267de1 100755 --- a/brag/brag/codegen/runtime.rkt +++ b/brag/brag/codegen/runtime.rkt @@ -76,11 +76,9 @@ [(? symbol?) (lookup next-token next-token start end)] - [(? string?) - (lookup (string->symbol next-token) next-token start end)] - - [(? char?) - (lookup (string->symbol (string next-token)) next-token start end)] + [(or (? string?) (? char?)) + (define next-token-str (format "~a" next-token)) + (lookup (string->symbol next-token-str) next-token-str start end)] ;; Compatibility [(? lex:token?) diff --git a/brag/brag/test/test-01-equal.rkt b/brag/brag/test/test-01-equal.rkt index dcb2138..e9b7925 100755 --- a/brag/brag/test/test-01-equal.rkt +++ b/brag/brag/test/test-01-equal.rkt @@ -6,25 +6,25 @@ (check-equal? (syntax->datum (parse "")) '(equal)) (check-equal? (syntax->datum (parse "01")) - '(equal (zero (equal) #\0) - (one (equal) #\1))) + '(equal (zero (equal) "0") + (one (equal) "1"))) (check-equal? (syntax->datum (parse "10")) - '(equal (one (equal) #\1) - (zero (equal) #\0))) + '(equal (one (equal) "1") + (zero (equal) "0"))) (check-equal? (syntax->datum (parse "0011")) - '(equal (zero (equal) #\0) - (one (equal (zero (equal) #\0) - (one (equal) #\1)) - #\1))) + '(equal (zero (equal) "0") + (one (equal (zero (equal) "0") + (one (equal) "1")) + "1"))) (check-equal? (syntax->datum (parse "0110")) - '(equal (one (equal (zero (equal) #\0) - (one (equal) #\1)) - #\1) - (zero (equal) #\0))) + '(equal (one (equal (zero (equal) "0") + (one (equal) "1")) + "1") + (zero (equal) "0"))) (check-equal? (syntax->datum (parse "1100")) - '(equal (one (equal) #\1) - (zero (equal (one (equal) #\1) - (zero (equal) #\0)) - #\0))) + '(equal (one (equal) "1") + (zero (equal (one (equal) "1") + (zero (equal) "0")) + "0"))) diff --git a/brag/brag/test/test-baby-json-hider.rkt b/brag/brag/test/test-baby-json-hider.rkt index b7580d6..473039c 100755 --- a/brag/brag/test/test-baby-json-hider.rkt +++ b/brag/brag/test/test-baby-json-hider.rkt @@ -16,4 +16,12 @@ (check-equal? (syntax->datum (parse "[[[{}]],[],[[{}]]]")) - '(json (array #\[ (json (array #\[ (json (array #\[ (json) #\])) #\])) #\, (json (array #\[ #\])) #\, (json (array #\[ (json (array #\[ (json) #\])) #\])) #\]))) + '(json + (array + "[" + (json (array "[" (json (array "[" (json) "]")) "]")) + "," + (json (array "[" "]")) + "," + (json (array "[" (json (array "[" (json) "]")) "]")) + "]"))) diff --git a/brag/brag/test/test-baby-json.rkt b/brag/brag/test/test-baby-json.rkt index dff09f4..d59fd2d 100755 --- a/brag/brag/test/test-baby-json.rkt +++ b/brag/brag/test/test-baby-json.rkt @@ -18,7 +18,15 @@ (check-equal? (syntax->datum (parse "[[[{}]],[],[[{}]]]")) - '(json (array #\[ (json (array #\[ (json (array #\[ (json (object #\{ #\})) #\])) #\])) #\, (json (array #\[ #\])) #\, (json (array #\[ (json (array #\[ (json (object #\{ #\})) #\])) #\])) #\]))) + '(json + (array + "[" + (json (array "[" (json (array "[" (json (object "{" "}")) "]")) "]")) + "," + (json (array "[" "]")) + "," + (json (array "[" (json (array "[" (json (object "{" "}")) "]")) "]")) + "]")))