From 54fb498c63f58283135ac0504236ec7afcb54861 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Fri, 15 Jun 2018 15:01:51 -0700 Subject: [PATCH] curly tests --- brag/examples/curly-quantifier.rkt | 5 +++-- brag/test/test-curly-quantifier.rkt | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/brag/examples/curly-quantifier.rkt b/brag/examples/curly-quantifier.rkt index 7f0d961..a2de3ac 100644 --- a/brag/examples/curly-quantifier.rkt +++ b/brag/examples/curly-quantifier.rkt @@ -1,7 +1,8 @@ #lang brag ;; test the curly quantifier -start : a-rule | b-rule | c-rule | d-rule +start : a-rule | b-rule | c-rule | d-rule | e-rule a-rule : "a"{2} ; exactly 2 b-rule : "b"{,2} ; up to 2 c-rule : "c"{2,} ; 2 or more -d-rule : "d"{2,3} ; 2 or 3 \ No newline at end of file +d-rule : "d"{2,3} ; 2 or 3 +e-rule : "e"{} ; 0 or more \ No newline at end of file diff --git a/brag/test/test-curly-quantifier.rkt b/brag/test/test-curly-quantifier.rkt index c531368..ad27540 100755 --- a/brag/test/test-curly-quantifier.rkt +++ b/brag/test/test-curly-quantifier.rkt @@ -21,3 +21,8 @@ (check-equal? (parse-to-datum "dd") '(start (d-rule "d" "d"))) (check-equal? (parse-to-datum "ddd") '(start (d-rule "d" "d" "d"))) (check-exn exn:fail:parsing? (λ () (parse-to-datum "dddd"))) + +(check-equal? (syntax->datum ((make-rule-parser e-rule) "")) '(e-rule)) ; to prevent ambiguity with b-rule while parsing empty string +(check-equal? (parse-to-datum "e") '(start (e-rule "e"))) +(check-equal? (parse-to-datum "ee") '(start (e-rule "e" "e"))) +(check-equal? (parse-to-datum "eee") '(start (e-rule "e" "e" "e"))) \ No newline at end of file