From c4430ca8516ffb79737942575e865bad1e7896dc Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Tue, 3 May 2016 16:41:18 -0700 Subject: [PATCH] add br/ragg --- beautiful-racket-lib/info.rkt | 1 - beautiful-racket-ragg/LICENSE | 165 +++ beautiful-racket-ragg/README.md | 8 + beautiful-racket-ragg/br/ragg/Makefile | 12 + .../br/ragg/cfg-parser/cfg-parser.rkt | 921 ++++++++++++++ .../br/ragg/codegen/codegen.rkt | 429 +++++++ .../br/ragg/codegen/flatten.rkt | 186 +++ .../br/ragg/codegen/lang/reader.rkt | 68 + .../br/ragg/codegen/runtime.rkt | 170 +++ .../br/ragg/codegen/satisfaction.rkt | 207 +++ .../br/ragg/codegen/sexp-based-lang.rkt | 95 ++ .../br/ragg/codegen/sexp-based-lang.rkt alias | Bin 0 -> 731892 bytes .../br/ragg/examples/01-equal.rkt | 12 + .../br/ragg/examples/0n1.rkt | 3 + .../br/ragg/examples/0n1n.rkt | 3 + .../br/ragg/examples/baby-json.rkt | 16 + .../br/ragg/examples/bnf.rkt | 14 + .../br/ragg/examples/lua-parser.rkt | 111 ++ .../br/ragg/examples/nested-word-list.rkt | 3 + .../br/ragg/examples/python-grammar.rkt | 144 +++ .../examples/simple-arithmetic-grammar.rkt | 5 + .../br/ragg/examples/simple-line-drawing.rkt | 10 + .../simple-line-drawing/examples/letter-i.rkt | 4 + .../examples/simple-line-drawing/grammar.rkt | 10 + .../simple-line-drawing/interpret.rkt | 31 + .../simple-line-drawing/lang/reader.rkt | 22 + .../examples/simple-line-drawing/lexer.rkt | 27 + .../simple-line-drawing/semantics.rkt | 48 + .../br/ragg/examples/statlist-grammar.rkt | 14 + .../br/ragg/examples/wordy.rkt | 7 + beautiful-racket-ragg/br/ragg/info.rkt | 11 + beautiful-racket-ragg/br/ragg/lang/reader.rkt | 4 + .../br/ragg/private/internal-support.rkt | 36 + beautiful-racket-ragg/br/ragg/ragg.scrbl | 1107 +++++++++++++++++ beautiful-racket-ragg/br/ragg/rules/lexer.rkt | 104 ++ .../br/ragg/rules/parser.rkt | 219 ++++ .../br/ragg/rules/rule-structs.rkt | 47 + .../br/ragg/rules/runtime.rkt | 34 + .../br/ragg/rules/stx-types.rkt | 16 + beautiful-racket-ragg/br/ragg/rules/stx.rkt | 76 ++ beautiful-racket-ragg/br/ragg/support.rkt | 37 + .../br/ragg/test/exercise-python-grammar.rkt | 136 ++ .../br/ragg/test/test-01-equal.rkt | 30 + .../br/ragg/test/test-0n1.rkt | 50 + .../br/ragg/test/test-0n1n.rkt | 49 + .../br/ragg/test/test-all.rkt | 18 + .../br/ragg/test/test-baby-json.rkt | 25 + .../br/ragg/test/test-errors.rkt | 134 ++ .../br/ragg/test/test-flatten.rkt | 193 +++ .../br/ragg/test/test-lexer.rkt | 58 + .../br/ragg/test/test-old-token.rkt | 76 ++ .../br/ragg/test/test-parser.rkt | 129 ++ .../test/test-simple-arithmetic-grammar.rkt | 72 ++ .../br/ragg/test/test-simple-line-drawing.rkt | 72 ++ .../br/ragg/test/test-weird-grammar.rkt | 7 + .../br/ragg/test/test-wordy.rkt | 18 + .../br/ragg/test/weird-grammar.rkt | 6 + beautiful-racket-ragg/info.rkt | 7 + .../br/demo/basic/#sinewave.bas#2# | 250 ---- beautiful-racket/br/demo/basic/parser.rkt | 2 +- beautiful-racket/br/demo/basic/tokenizer.rkt | 2 +- beautiful-racket/br/demo/bf/bf-parser.rkt | 2 +- beautiful-racket/br/demo/bf/bf-reader.rkt | 2 +- .../br/demo/bf/test-tokenizer.rkt | 2 +- beautiful-racket/br/demo/hdl-tst/parser.rkt | 2 +- .../br/demo/hdl-tst/tokenizer.rkt | 2 +- beautiful-racket/br/demo/hdl/parser.rkt | 2 +- beautiful-racket/br/demo/hdl/tokenizer.rkt | 2 +- beautiful-racket/br/demo/txtadv/parser.rkt | 2 +- beautiful-racket/br/demo/txtadv/tokenizer.rkt | 2 +- beautiful-racket/info.rkt | 2 +- 71 files changed, 5528 insertions(+), 263 deletions(-) create mode 100755 beautiful-racket-ragg/LICENSE create mode 100755 beautiful-racket-ragg/README.md create mode 100755 beautiful-racket-ragg/br/ragg/Makefile create mode 100755 beautiful-racket-ragg/br/ragg/cfg-parser/cfg-parser.rkt create mode 100755 beautiful-racket-ragg/br/ragg/codegen/codegen.rkt create mode 100755 beautiful-racket-ragg/br/ragg/codegen/flatten.rkt create mode 100755 beautiful-racket-ragg/br/ragg/codegen/lang/reader.rkt create mode 100755 beautiful-racket-ragg/br/ragg/codegen/runtime.rkt create mode 100755 beautiful-racket-ragg/br/ragg/codegen/satisfaction.rkt create mode 100755 beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt create mode 100644 beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt alias create mode 100755 beautiful-racket-ragg/br/ragg/examples/01-equal.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/0n1.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/0n1n.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/baby-json.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/bnf.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/lua-parser.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/nested-word-list.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/python-grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-arithmetic-grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/examples/letter-i.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/interpret.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lang/reader.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lexer.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/semantics.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/statlist-grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/examples/wordy.rkt create mode 100755 beautiful-racket-ragg/br/ragg/info.rkt create mode 100755 beautiful-racket-ragg/br/ragg/lang/reader.rkt create mode 100755 beautiful-racket-ragg/br/ragg/private/internal-support.rkt create mode 100755 beautiful-racket-ragg/br/ragg/ragg.scrbl create mode 100755 beautiful-racket-ragg/br/ragg/rules/lexer.rkt create mode 100755 beautiful-racket-ragg/br/ragg/rules/parser.rkt create mode 100755 beautiful-racket-ragg/br/ragg/rules/rule-structs.rkt create mode 100755 beautiful-racket-ragg/br/ragg/rules/runtime.rkt create mode 100755 beautiful-racket-ragg/br/ragg/rules/stx-types.rkt create mode 100755 beautiful-racket-ragg/br/ragg/rules/stx.rkt create mode 100755 beautiful-racket-ragg/br/ragg/support.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/exercise-python-grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-01-equal.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-0n1.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-0n1n.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-all.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-baby-json.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-errors.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-flatten.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-lexer.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-old-token.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-parser.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-simple-arithmetic-grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-simple-line-drawing.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-weird-grammar.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/test-wordy.rkt create mode 100755 beautiful-racket-ragg/br/ragg/test/weird-grammar.rkt create mode 100755 beautiful-racket-ragg/info.rkt delete mode 100644 beautiful-racket/br/demo/basic/#sinewave.bas#2# diff --git a/beautiful-racket-lib/info.rkt b/beautiful-racket-lib/info.rkt index b175a1a..3086d63 100644 --- a/beautiful-racket-lib/info.rkt +++ b/beautiful-racket-lib/info.rkt @@ -4,4 +4,3 @@ (define version "0.01") (define deps '("base" "sugar")) (define build-deps '("racket-doc" "rackunit-lib" "scribble-lib")) -(define scribblings '(("br/scribblings/br.scrbl" ()))) diff --git a/beautiful-racket-ragg/LICENSE b/beautiful-racket-ragg/LICENSE new file mode 100755 index 0000000..65c5ca8 --- /dev/null +++ b/beautiful-racket-ragg/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/beautiful-racket-ragg/README.md b/beautiful-racket-ragg/README.md new file mode 100755 index 0000000..f4bb9e4 --- /dev/null +++ b/beautiful-racket-ragg/README.md @@ -0,0 +1,8 @@ +This repo contains Danny Yoo's RAGG, a Racket AST Generator Generator, +also known as a parser generator. + +install it using + +``` +raco pkg install ragg +``` diff --git a/beautiful-racket-ragg/br/ragg/Makefile b/beautiful-racket-ragg/br/ragg/Makefile new file mode 100755 index 0000000..579d424 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/Makefile @@ -0,0 +1,12 @@ +doc: + scribble ++xref-in setup/xref load-collections-xref --redirect-main http://docs.racket-lang.org/ --dest-name index.html manual.scrbl + +clean: + git clean -fdx . + +web: clean plt doc + scp -r * hashcollision.org:webapps/htdocs/ragg/ + + +plt: + raco pack --collect ragg.plt ragg diff --git a/beautiful-racket-ragg/br/ragg/cfg-parser/cfg-parser.rkt b/beautiful-racket-ragg/br/ragg/cfg-parser/cfg-parser.rkt new file mode 100755 index 0000000..0d56f8e --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/cfg-parser/cfg-parser.rkt @@ -0,0 +1,921 @@ +#lang racket/base +;; This module implements a parser form like the parser-tools's +;; `parser', except that it works on an arbitrary CFG (returning +;; the first sucecssful parse). + +;; I'm pretty sure that this is an implementation of Earley's +;; algorithm. + +;; To a first approximation, it's a backtracking parser. Alternative +;; for a non-terminal are computed in parallel, and multiple attempts +;; to compute the same result block until the first one completes. If +;; you get into deadlock, such as when trying to match +;; := +;; then it means that there's no successful parse, so everything +;; that's blocked fails. + +;; A cache holds the series of results for a particular non-terminal +;; at a particular starting location. (A series is used, instead of a +;; sinlge result, for backtracking.) Otherwise, the parser uses +;; backtracking search. Backtracking is implemented through explicit +;; success and failure continuations. Multiple results for a +;; particular nonterminal and location are kept only when they have +;; different lengths. (Otherwise, in the spirit of finding one +;; successful parse, only the first result is kept.) + +;; The parser-tools's `parse' is used to transform tokens in the +;; grammar to tokens specific to this parser. In other words, this +;; parser uses `parser' so that it doesn't have to know anything about +;; tokens. +;; + + + +(require parser-tools/yacc + parser-tools/lex) + +(require (for-syntax racket/base + syntax/boundmap + parser-tools/private-lex/token-syntax)) + +(provide cfg-parser) + +;; A raw token, wrapped so that we can recognize it: +(define-struct tok (name orig-name val start end)) + +;; Represents the thread scheduler: +(define-struct tasks (active active-back waits multi-waits cache progress?)) + +(define-for-syntax make-token-identifier-mapping make-hasheq) +(define-for-syntax token-identifier-mapping-get + (case-lambda + [(t tok) + (hash-ref t (syntax-e tok))] + [(t tok fail) + (hash-ref t (syntax-e tok) fail)])) +(define-for-syntax token-identifier-mapping-put! + (lambda (t tok v) + (hash-set! t (syntax-e tok) v))) +(define-for-syntax token-identifier-mapping-map + (lambda (t f) + (hash-map t f))) + +;; Used to calculate information on the grammar, such as whether +;; a particular non-terminal is "simple" instead of recursively defined. +(define-for-syntax (nt-fixpoint nts proc nt-ids patss) + (define (ormap-all val f as bs) + (cond + [(null? as) val] + [else (ormap-all (or (f (car as) (car bs)) val) + f + (cdr as) (cdr bs))])) + (let loop () + (when (ormap-all #f + (lambda (nt pats) + (let ([old (bound-identifier-mapping-get nts nt)]) + (let ([new (proc nt pats old)]) + (if (equal? old new) + #f + (begin + (bound-identifier-mapping-put! nts nt new) + #t))))) + nt-ids patss) + (loop)))) + +;; Tries parse-a followed by parse-b. If parse-a is not simple, +;; then after parse-a succeeds once, we parallelize parse-b +;; and trying a second result for parse-a. +(define (parse-and simple-a? parse-a parse-b + stream last-consumed-token depth end success-k fail-k + max-depth tasks) + (letrec ([mk-got-k + (lambda (success-k fail-k) + (lambda (val stream last-consumed-token depth max-depth tasks next1-k) + (if simple-a? + (parse-b val stream last-consumed-token depth end + (mk-got2-k success-k fail-k next1-k) + (mk-fail2-k success-k fail-k next1-k) + max-depth tasks) + (parallel-or + (lambda (success-k fail-k max-depth tasks) + (parse-b val stream last-consumed-token depth end + success-k fail-k + max-depth tasks)) + (lambda (success-k fail-k max-depth tasks) + (next1-k (mk-got-k success-k fail-k) + fail-k max-depth tasks)) + success-k fail-k max-depth tasks))))] + [mk-got2-k + (lambda (success-k fail-k next1-k) + (lambda (val stream last-consumed-token depth max-depth tasks next-k) + (success-k val stream last-consumed-token depth max-depth tasks + (lambda (success-k fail-k max-depth tasks) + (next-k (mk-got2-k success-k fail-k next1-k) + (mk-fail2-k success-k fail-k next1-k) + max-depth tasks)))))] + [mk-fail2-k + (lambda (success-k fail-k next1-k) + (lambda (max-depth tasks) + (next1-k (mk-got-k success-k fail-k) + fail-k + max-depth + tasks)))]) + (parse-a stream last-consumed-token depth end + (mk-got-k success-k fail-k) + fail-k + max-depth tasks))) + +;; Parallel or for non-terminal alternatives +(define (parse-parallel-or parse-a parse-b stream last-consumed-token depth end success-k fail-k max-depth tasks) + (parallel-or (lambda (success-k fail-k max-depth tasks) + (parse-a stream last-consumed-token depth end success-k fail-k max-depth tasks)) + (lambda (success-k fail-k max-depth tasks) + (parse-b stream last-consumed-token depth end success-k fail-k max-depth tasks)) + success-k fail-k max-depth tasks)) + +;; Generic parallel-or +(define (parallel-or parse-a parse-b success-k fail-k max-depth tasks) + (define answer-key (gensym)) + (letrec ([gota-k + (lambda (val stream last-consumed-token depth max-depth tasks next-k) + (report-answer answer-key + max-depth + tasks + (list val stream last-consumed-token depth next-k)))] + [faila-k + (lambda (max-depth tasks) + (report-answer answer-key + max-depth + tasks + null))]) + (let* ([tasks (queue-task + tasks + (lambda (max-depth tasks) + (parse-a gota-k + faila-k + max-depth tasks)))] + [tasks (queue-task + tasks + (lambda (max-depth tasks) + (parse-b gota-k + faila-k + max-depth tasks)))] + [queue-next (lambda (next-k tasks) + (queue-task tasks + (lambda (max-depth tasks) + (next-k gota-k + faila-k + max-depth tasks))))]) + (letrec ([mk-got-one + (lambda (immediate-next? get-nth success-k) + (lambda (val stream last-consumed-token depth max-depth tasks next-k) + (let ([tasks (if immediate-next? + (queue-next next-k tasks) + tasks)]) + (success-k val stream last-consumed-token depth max-depth + tasks + (lambda (success-k fail-k max-depth tasks) + (let ([tasks (if immediate-next? + tasks + (queue-next next-k tasks))]) + (get-nth max-depth tasks success-k fail-k)))))))] + [get-first + (lambda (max-depth tasks success-k fail-k) + (wait-for-answer #f max-depth tasks answer-key + (mk-got-one #t get-first success-k) + (lambda (max-depth tasks) + (get-second max-depth tasks success-k fail-k)) + #f))] + [get-second + (lambda (max-depth tasks success-k fail-k) + (wait-for-answer #f max-depth tasks answer-key + (mk-got-one #f get-second success-k) + fail-k #f))]) + (get-first max-depth tasks success-k fail-k))))) + +;; Non-terminal alternatives where the first is "simple" can be done +;; sequentially, which is simpler +(define (parse-or parse-a parse-b + stream last-consumed-token depth end success-k fail-k max-depth tasks) + (letrec ([mk-got-k + (lambda (success-k fail-k) + (lambda (val stream last-consumed-token depth max-depth tasks next-k) + (success-k val stream last-consumed-token depth + max-depth tasks + (lambda (success-k fail-k max-depth tasks) + (next-k (mk-got-k success-k fail-k) + (mk-fail-k success-k fail-k) + max-depth tasks)))))] + [mk-fail-k + (lambda (success-k fail-k) + (lambda (max-depth tasks) + (parse-b stream last-consumed-token depth end success-k fail-k max-depth tasks)))]) + (parse-a stream last-consumed-token depth end + (mk-got-k success-k fail-k) + (mk-fail-k success-k fail-k) + max-depth tasks))) + +;; Starts a thread +(define queue-task + (lambda (tasks t [progress? #t]) + (make-tasks (tasks-active tasks) + (cons t (tasks-active-back tasks)) + (tasks-waits tasks) + (tasks-multi-waits tasks) + (tasks-cache tasks) + (or progress? (tasks-progress? tasks))))) + +;; Reports an answer to a waiting thread: +(define (report-answer answer-key max-depth tasks val) + (let ([v (hash-ref (tasks-waits tasks) answer-key (lambda () #f))]) + (if v + (let ([tasks (make-tasks (cons (v val) + (tasks-active tasks)) + (tasks-active-back tasks) + (tasks-waits tasks) + (tasks-multi-waits tasks) + (tasks-cache tasks) + #t)]) + (hash-remove! (tasks-waits tasks) answer-key) + (swap-task max-depth tasks)) + ;; We have an answer ready too fast; wait + (swap-task max-depth + (queue-task tasks + (lambda (max-depth tasks) + (report-answer answer-key max-depth tasks val)) + #f))))) + +;; Reports an answer to multiple waiting threads: +(define (report-answer-all answer-key max-depth tasks val k) + (let ([v (hash-ref (tasks-multi-waits tasks) answer-key (lambda () null))]) + (hash-remove! (tasks-multi-waits tasks) answer-key) + (let ([tasks (make-tasks (append (map (lambda (a) (a val)) v) + (tasks-active tasks)) + (tasks-active-back tasks) + (tasks-waits tasks) + (tasks-multi-waits tasks) + (tasks-cache tasks) + #t)]) + (k max-depth tasks)))) + +;; Waits for an answer; if `multi?' is #f, this is sole waiter, otherwise +;; there might be many. Use wither #t or #f (and `report-answer' or +;; `report-answer-all', resptively) consistently for a particular answer key. +(define (wait-for-answer multi? max-depth tasks answer-key success-k fail-k deadlock-k) + (let ([wait (lambda (val) + (lambda (max-depth tasks) + (if val + (if (null? val) + (fail-k max-depth tasks) + (let-values ([(val stream last-consumed-token depth next-k) (apply values val)]) + (success-k val stream last-consumed-token depth max-depth tasks next-k))) + (deadlock-k max-depth tasks))))]) + (if multi? + (hash-set! (tasks-multi-waits tasks) answer-key + (cons wait (hash-ref (tasks-multi-waits tasks) answer-key + (lambda () null)))) + (hash-set! (tasks-waits tasks) answer-key wait)) + (let ([tasks (make-tasks (tasks-active tasks) + (tasks-active-back tasks) + (tasks-waits tasks) + (tasks-multi-waits tasks) + (tasks-cache tasks) + #t)]) + (swap-task max-depth tasks)))) + +;; Swap thread +(define (swap-task max-depth tasks) + ;; Swap in first active: + (if (null? (tasks-active tasks)) + (if (tasks-progress? tasks) + (swap-task max-depth + (make-tasks (reverse (tasks-active-back tasks)) + null + (tasks-waits tasks) + (tasks-multi-waits tasks) + (tasks-cache tasks) + #f)) + ;; No progress, so issue failure for all multi-waits + (if (zero? (hash-count (tasks-multi-waits tasks))) + (error 'swap-task "Deadlock") + (swap-task max-depth + (make-tasks (apply + append + (hash-map (tasks-multi-waits tasks) + (lambda (k l) + (map (lambda (v) (v #f)) l)))) + (tasks-active-back tasks) + (tasks-waits tasks) + (make-hasheq) + (tasks-cache tasks) + #t)))) + (let ([t (car (tasks-active tasks))] + [tasks (make-tasks (cdr (tasks-active tasks)) + (tasks-active-back tasks) + (tasks-waits tasks) + (tasks-multi-waits tasks) + (tasks-cache tasks) + (tasks-progress? tasks))]) + (t max-depth tasks)))) + +;; Finds the symbolic representative of a token class +(define-for-syntax (map-token toks tok) + (car (token-identifier-mapping-get toks tok))) + +(define no-pos-val (make-position #f #f #f)) +(define-for-syntax no-pos + (let ([npv ((syntax-local-certifier) #'no-pos-val)]) + (lambda (stx) npv))) +(define-for-syntax at-tok-pos + (lambda (sel expr) + (lambda (stx) + #`(let ([v #,expr]) (if v (#,sel v) no-pos-val))))) + +;; Builds a matcher for a particular alternative +(define-for-syntax (build-match nts toks pat handle $ctx) + (let loop ([pat pat] + [pos 1]) + (if (null? pat) + #`(success-k #,handle stream last-consumed-token depth max-depth tasks + (lambda (success-k fail-k max-depth tasks) + (fail-k max-depth tasks))) + (let ([id (datum->syntax (car pat) + (string->symbol (format "$~a" pos)))] + [id-start-pos (datum->syntax (car pat) + (string->symbol (format "$~a-start-pos" pos)))] + [id-end-pos (datum->syntax (car pat) + (string->symbol (format "$~a-end-pos" pos)))] + [n-end-pos (and (null? (cdr pat)) + (datum->syntax (car pat) '$n-end-pos))]) + (cond + [(bound-identifier-mapping-get nts (car pat) (lambda () #f)) + ;; Match non-termimal + #`(parse-and + ;; First part is simple? (If so, we don't have to parallelize the `and'.) + #,(let ([l (bound-identifier-mapping-get nts (car pat) (lambda () #f))]) + (or (not l) + (andmap values (caddr l)))) + #,(car pat) + (let ([original-stream stream]) + (lambda (#,id stream last-consumed-token depth end success-k fail-k max-depth tasks) + (let-syntax ([#,id-start-pos (at-tok-pos #'(if (eq? original-stream stream) + tok-end + tok-start) + #'(if (eq? original-stream stream) + last-consumed-token + (and (pair? original-stream) + (car original-stream))))] + [#,id-end-pos (at-tok-pos #'tok-end #'last-consumed-token)] + #,@(if n-end-pos + #`([#,n-end-pos (at-tok-pos #'tok-end #'last-consumed-token)]) + null)) + #,(loop (cdr pat) (add1 pos))))) + stream last-consumed-token depth + #,(let ([cnt (apply + + (map (lambda (item) + (cond + [(bound-identifier-mapping-get nts item (lambda () #f)) + => (lambda (l) (car l))] + [else 1])) + (cdr pat)))]) + #`(- end #,cnt)) + success-k fail-k max-depth tasks)] + [else + ;; Match token + (let ([tok-id (map-token toks (car pat))]) + #`(if (and (pair? stream) + (eq? '#,tok-id (tok-name (car stream)))) + (let* ([stream-a (car stream)] + [#,id (tok-val stream-a)] + [last-consumed-token (car stream)] + [stream (cdr stream)] + [depth (add1 depth)]) + (let ([max-depth (max max-depth depth)]) + (let-syntax ([#,id-start-pos (at-tok-pos #'tok-start #'stream-a)] + [#,id-end-pos (at-tok-pos #'tok-end #'stream-a)] + #,@(if n-end-pos + #`([#,n-end-pos (at-tok-pos #'tok-end #'stream-a)]) + null)) + #,(loop (cdr pat) (add1 pos))))) + (fail-k max-depth tasks)))]))))) + +;; Starts parsing to match a non-terminal. There's a minor +;; optimization that checks for known starting tokens. Otherwise, +;; use the cache, block if someone else is already trying the match, +;; and cache the result if it's computed. +;; The cache maps nontermial+startingpos+iteration to a result, where +;; the iteration is 0 for the first match attempt, 1 for the second, +;; etc. +(define (parse-nt/share key min-cnt init-tokens stream last-consumed-token depth end max-depth tasks success-k fail-k k) + (if (and (positive? min-cnt) + (pair? stream) + (not (memq (tok-name (car stream)) init-tokens))) + ;; No such leading token; give up + (fail-k max-depth tasks) + ;; Run pattern + (let loop ([n 0] + [success-k success-k] + [fail-k fail-k] + [max-depth max-depth] + [tasks tasks] + [k k]) + (let ([answer-key (gensym)] + [table-key (vector key depth n)] + [old-depth depth] + [old-stream stream]) + #;(printf "Loop ~a\n" table-key) + (cond + [(hash-ref (tasks-cache tasks) table-key (lambda () #f)) + => (lambda (result) + #;(printf "Reuse ~a\n" table-key) + (result success-k fail-k max-depth tasks))] + [else + #;(printf "Try ~a ~a\n" table-key (map tok-name stream)) + (hash-set! (tasks-cache tasks) table-key + (lambda (success-k fail-k max-depth tasks) + #;(printf "Wait ~a ~a\n" table-key answer-key) + (wait-for-answer #t max-depth tasks answer-key success-k fail-k + (lambda (max-depth tasks) + #;(printf "Deadlock ~a ~a\n" table-key answer-key) + (fail-k max-depth tasks))))) + (let result-loop ([max-depth max-depth][tasks tasks][k k]) + (letrec ([orig-stream stream] + [new-got-k + (lambda (val stream last-consumed-token depth max-depth tasks next-k) + ;; Check whether we already have a result that consumed the same amount: + (let ([result-key (vector #f key old-depth depth)]) + (cond + [(hash-ref (tasks-cache tasks) result-key (lambda () #f)) + ;; Go for the next-result + (result-loop max-depth + tasks + (lambda (end max-depth tasks success-k fail-k) + (next-k success-k fail-k max-depth tasks)))] + [else + #;(printf "Success ~a ~a\n" table-key + (map tok-name (let loop ([d old-depth][s old-stream]) + (if (= d depth) + null + (cons (car s) (loop (add1 d) (cdr s))))))) + (let ([next-k (lambda (success-k fail-k max-depth tasks) + (loop (add1 n) + success-k + fail-k + max-depth + tasks + (lambda (end max-depth tasks success-k fail-k) + (next-k success-k fail-k max-depth tasks))))]) + (hash-set! (tasks-cache tasks) result-key #t) + (hash-set! (tasks-cache tasks) table-key + (lambda (success-k fail-k max-depth tasks) + (success-k val stream last-consumed-token depth max-depth tasks next-k))) + (report-answer-all answer-key + max-depth + tasks + (list val stream last-consumed-token depth next-k) + (lambda (max-depth tasks) + (success-k val stream last-consumed-token depth max-depth tasks next-k))))])))] + [new-fail-k + (lambda (max-depth tasks) + #;(printf "Failure ~a\n" table-key) + (hash-set! (tasks-cache tasks) table-key + (lambda (success-k fail-k max-depth tasks) + (fail-k max-depth tasks))) + (report-answer-all answer-key + max-depth + tasks + null + (lambda (max-depth tasks) + (fail-k max-depth tasks))))]) + (k end max-depth tasks new-got-k new-fail-k)))]))))) + +(define-syntax (cfg-parser stx) + (syntax-case stx () + [(_ clause ...) + (let ([clauses (syntax->list #'(clause ...))]) + (let-values ([(start grammar cfg-error parser-clauses src-pos?) + (let ([all-toks (apply + append + (map (lambda (clause) + (syntax-case clause (tokens) + [(tokens t ...) + (apply + append + (map (lambda (t) + (let ([v (syntax-local-value t (lambda () #f))]) + (cond + [(terminals-def? v) + (map (lambda (v) + (cons v #f)) + (syntax->list (terminals-def-t v)))] + [(e-terminals-def? v) + (map (lambda (v) + (cons v #t)) + (syntax->list (e-terminals-def-t v)))] + [else null]))) + (syntax->list #'(t ...))))] + [_else null])) + clauses))] + [all-end-toks (apply + append + (map (lambda (clause) + (syntax-case clause (end) + [(end t ...) + (syntax->list #'(t ...))] + [_else null])) + clauses))]) + (let loop ([clauses clauses] + [cfg-start #f] + [cfg-grammar #f] + [cfg-error #f] + [src-pos? #f] + [parser-clauses null]) + (if (null? clauses) + (values cfg-start + cfg-grammar + cfg-error + (reverse parser-clauses) + src-pos?) + (syntax-case (car clauses) (start error grammar src-pos) + [(start tok) + (loop (cdr clauses) #'tok cfg-grammar cfg-error src-pos? parser-clauses)] + [(error expr) + (loop (cdr clauses) cfg-start cfg-grammar #'expr src-pos? parser-clauses)] + [(grammar [nt [pat handle0 handle ...] ...] ...) + (let ([nts (make-bound-identifier-mapping)] + [toks (make-token-identifier-mapping)] + [end-toks (make-token-identifier-mapping)] + [nt-ids (syntax->list #'(nt ...))] + [patss (map (lambda (stx) + (map syntax->list (syntax->list stx))) + (syntax->list #'((pat ...) ...)))]) + (for-each (lambda (nt) + (bound-identifier-mapping-put! nts nt (list 0))) + nt-ids) + (for-each (lambda (t) + (token-identifier-mapping-put! end-toks t #t)) + all-end-toks) + (for-each (lambda (t) + (unless (token-identifier-mapping-get end-toks (car t) (lambda () #f)) + (let ([id (gensym (syntax-e (car t)))]) + (token-identifier-mapping-put! toks (car t) + (cons id (cdr t)))))) + all-toks) + ;; Compute min max size for each non-term: + (nt-fixpoint + nts + (lambda (nt pats old-list) + (let ([new-cnt + (apply + min + (map (lambda (pat) + (apply + + + (map (lambda (elem) + (car + (bound-identifier-mapping-get nts + elem + (lambda () (list 1))))) + pat))) + pats))]) + (if (new-cnt . > . (car old-list)) + (cons new-cnt (cdr old-list)) + old-list))) + nt-ids patss) + ;; Compute set of toks that must appear at the beginning + ;; for a non-terminal + (nt-fixpoint + nts + (lambda (nt pats old-list) + (let ([new-list + (apply + append + (map (lambda (pat) + (let loop ([pat pat]) + (if (pair? pat) + (let ([l (bound-identifier-mapping-get + nts + (car pat) + (lambda () + (list 1 (map-token toks (car pat)))))]) + ;; If the non-terminal can match 0 things, + ;; then it might match something from the + ;; next pattern element. Otherwise, it must + ;; match the first element: + (if (zero? (car l)) + (append (cdr l) (loop (cdr pat))) + (cdr l))) + null))) + pats))]) + (let ([new (filter (lambda (id) + (andmap (lambda (id2) + (not (eq? id id2))) + (cdr old-list))) + new-list)]) + (if (pair? new) + ;; Drop dups in new list: + (let ([new (let loop ([new new]) + (if (null? (cdr new)) + new + (if (ormap (lambda (id) + (eq? (car new) id)) + (cdr new)) + (loop (cdr new)) + (cons (car new) (loop (cdr new))))))]) + (cons (car old-list) (append new (cdr old-list)))) + old-list)))) + nt-ids patss) + ;; Determine left-recursive clauses: + (for-each (lambda (nt pats) + (let ([l (bound-identifier-mapping-get nts nt)]) + (bound-identifier-mapping-put! nts nt (list (car l) + (cdr l) + (map (lambda (x) #f) pats))))) + nt-ids patss) + (nt-fixpoint + nts + (lambda (nt pats old-list) + (list (car old-list) + (cadr old-list) + (map (lambda (pat simple?) + (or simple? + (let ([l (map (lambda (elem) + (bound-identifier-mapping-get + nts + elem + (lambda () #f))) + pat)]) + (andmap (lambda (i) + (or (not i) + (andmap values (caddr i)))) + l)))) + pats (caddr old-list)))) + nt-ids patss) + ;; Build a definition for each non-term: + (loop (cdr clauses) + cfg-start + (map (lambda (nt pats handles $ctxs) + (define info (bound-identifier-mapping-get nts nt)) + (list nt + #`(let ([key (gensym '#,nt)]) + (lambda (stream last-consumed-token depth end success-k fail-k max-depth tasks) + (parse-nt/share + key #,(car info) '#,(cadr info) stream last-consumed-token depth end + max-depth tasks + success-k fail-k + (lambda (end max-depth tasks success-k fail-k) + #,(let loop ([pats pats] + [handles (syntax->list handles)] + [$ctxs (syntax->list $ctxs)] + [simple?s (caddr info)]) + (if (null? pats) + #'(fail-k max-depth tasks) + #`(#,(if (or (null? (cdr pats)) + (car simple?s)) + #'parse-or + #'parse-parallel-or) + (lambda (stream last-consumed-token depth end success-k fail-k max-depth tasks) + #,(build-match nts + toks + (car pats) + (car handles) + (car $ctxs))) + (lambda (stream last-consumed-token depth end success-k fail-k max-depth tasks) + #,(loop (cdr pats) + (cdr handles) + (cdr $ctxs) + (cdr simple?s))) + stream last-consumed-token depth end success-k fail-k max-depth tasks))))))))) + nt-ids + patss + (syntax->list #'(((begin handle0 handle ...) ...) ...)) + (syntax->list #'((handle0 ...) ...))) + cfg-error + src-pos? + (list* + (with-syntax ([((tok tok-id . $e) ...) + (token-identifier-mapping-map toks + (lambda (k v) + (list* k + (car v) + (if (cdr v) + #f + '$1))))] + [(pos ...) + (if src-pos? + #'($1-start-pos $1-end-pos) + #'(#f #f))]) + #`(grammar (start [() null] + [(atok start) (cons $1 $2)]) + (atok [(tok) (make-tok 'tok-id 'tok $e pos ...)] ...))) + #`(start start) + parser-clauses)))] + [(grammar . _) + (raise-syntax-error + #f + "bad grammar clause" + stx + (car clauses))] + [(src-pos) + (loop (cdr clauses) + cfg-start + cfg-grammar + cfg-error + #t + (cons (car clauses) parser-clauses))] + [_else + (loop (cdr clauses) + cfg-start + cfg-grammar + cfg-error + src-pos? + (cons (car clauses) parser-clauses))]))))]) + #`(let ([orig-parse (parser + [error (lambda (a b c) + (error 'cfg-parser "unexpected ~a token: ~a" b c))] + . #,parser-clauses)] + [error-proc #,cfg-error]) + (letrec #,grammar + (lambda (get-tok) + (let ([tok-list (orig-parse get-tok)]) + (letrec ([success-k + (lambda (val stream last-consumed-token depth max-depth tasks next) + (if (null? stream) + val + (next success-k fail-k max-depth tasks)))] + [fail-k (lambda (max-depth tasks) + (cond + [(null? tok-list) + (if error-proc + (error-proc #t + 'no-tokens + #f + (make-position #f #f #f) + (make-position #f #f #f)) + (error + 'cfg-parse + "no tokens"))] + [else + (let ([bad-tok (list-ref tok-list + (min (sub1 (length tok-list)) + max-depth))]) + (if error-proc + (error-proc #t + (tok-orig-name bad-tok) + (tok-val bad-tok) + (tok-start bad-tok) + (tok-end bad-tok)) + (error + 'cfg-parse + "failed at ~a" + (tok-val bad-tok))))]))]) + (#,start tok-list + ;; we simulate a token at the very beginning with zero width + ;; for use with the position-generating code (*-start-pos, *-end-pos). + (if (null? tok-list) + (tok #f #f #f + (position 1 + #,(if src-pos? #'1 #'#f) + #,(if src-pos? #'0 #'#f)) + (position 1 + #,(if src-pos? #'1 #'#f) + #,(if src-pos? #'0 #'#f))) + (tok (tok-name (car tok-list)) + (tok-orig-name (car tok-list)) + (tok-val (car tok-list)) + (tok-start (car tok-list)) + (tok-start (car tok-list)))) + 0 + (length tok-list) + success-k + fail-k + 0 + (make-tasks null null + (make-hasheq) (make-hasheq) + (make-hash) #t)))))))))])) + + +(module* test racket/base + (require (submod "..") + parser-tools/lex + racket/block + rackunit) + + ;; Test: parsing regular expressions. + ;; Here is a test case on locations: + (block + (define-tokens regexp-tokens (ANCHOR STAR OR LIT LPAREN RPAREN EOF)) + (define lex (lexer-src-pos ["|" (token-OR lexeme)] + ["^" (token-ANCHOR lexeme)] + ["*" (token-STAR lexeme)] + [(repetition 1 +inf.0 alphabetic) (token-LIT lexeme)] + ["(" (token-LPAREN lexeme)] + [")" (token-RPAREN lexeme)] + [whitespace (return-without-pos (lex input-port))] + [(eof) (token-EOF 'eof)])) + (define -parse (cfg-parser + (tokens regexp-tokens) + (start top) + (end EOF) + (src-pos) + (grammar [top [(maybe-anchor regexp) + (cond [$1 + `(anchored ,$2 ,(pos->sexp $1-start-pos) ,(pos->sexp $2-end-pos))] + [else + `(unanchored ,$2 ,(pos->sexp $1-start-pos) ,(pos->sexp $2-end-pos))])]] + [maybe-anchor [(ANCHOR) #t] + [() #f]] + [regexp [(regexp STAR) `(star ,$1 ,(pos->sexp $1-start-pos) ,(pos->sexp $2-end-pos))] + [(regexp OR regexp) `(or ,$1 ,$3 ,(pos->sexp $1-start-pos) ,(pos->sexp $3-end-pos))] + [(LPAREN regexp RPAREN) `(group ,$2 ,(pos->sexp $1-start-pos) ,(pos->sexp $3-end-pos))] + [(LIT) `(lit ,$1 ,(pos->sexp $1-start-pos) ,(pos->sexp $1-end-pos))]]))) + (define (pos->sexp pos) + (position-offset pos)) + + (define (parse s) + (define ip (open-input-string s)) + (port-count-lines! ip) + (-parse (lambda () (lex ip)))) + + (check-equal? (parse "abc") + '(unanchored (lit "abc" 1 4) 1 4)) + (check-equal? (parse "a | (b*) | c") + '(unanchored (or (or (lit "a" 1 2) + (group (star (lit "b" 6 7) 6 8) 5 9) + 1 9) + (lit "c" 12 13) + 1 13) + 1 13))) + + + + + + ;; Tests used during development + (define-tokens non-terminals (PLUS MINUS STAR BAR COLON EOF)) + + (define lex + (lexer + ["+" (token-PLUS '+)] + ["-" (token-MINUS '-)] + ["*" (token-STAR '*)] + ["|" (token-BAR '||)] + [":" (token-COLON '|:|)] + [whitespace (lex input-port)] + [(eof) (token-EOF 'eof)])) + + (define parse + (cfg-parser + (tokens non-terminals) + (start ) + (end EOF) + (error (lambda (a b stx) + (error 'parse "failed at ~s" stx))) + (grammar [ [(PLUS) "plus"] + [( BAR ) (list $1 $2 $3)] + [( COLON) (list $1)]] + [ [(MINUS) "minus"] + [( STAR) (cons $1 $2)]] + [ [( MINUS) "yes"]] + [ [(PLUS) 'plus] + [(MINUS) 'minus]] + [ [() '0] + [( PLUS) (add1 $1)] + [( PLUS) (add1 $1)]]))) + + (let ([p (open-input-string #;"+*|-|-*|+**" #;"-|+*|+**" + #;"+*|+**|-" #;"-|-*|-|-*" + #;"-|-*|-|-**|-|-*|-|-**" + "-|-*|-|-**|-|-*|-|-***|-|-*|-|-**|-|-*|-|-****|-|-*|-|-**|-|-*|-|-*** + |-|-*|-|-**|-|-*|-|-*****|-|-*|-|-**|-|-*|-|-***|-|-*|-|-**|-|-*|-|-****| + -|-*|-|-**|-|-*|-|-***|-|-*|-|-**|-|-*|-|-*****" + ;; This one fails: + #;"+*")]) + (check-equal? (parse (lambda () (lex p))) + '((((((((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *) + || + (((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *)) + . + *) + || + (((((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *) + || + (((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *)) + . + *)) + . + *) + || + (((((((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *) + || + (((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *)) + . + *) + || + (((((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *) + || + (((((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *) || (((("minus" || "minus") . *) || (("minus" || "minus") . *)) . *)) . *)) + . + *)) + . + *))))) diff --git a/beautiful-racket-ragg/br/ragg/codegen/codegen.rkt b/beautiful-racket-ragg/br/ragg/codegen/codegen.rkt new file mode 100755 index 0000000..d5594a8 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/codegen/codegen.rkt @@ -0,0 +1,429 @@ +#lang racket/base + +(require (for-template racket/base) + racket/list + racket/set + racket/syntax + syntax/srcloc + br/ragg/rules/stx-types + "flatten.rkt" + syntax/id-table + (prefix-in sat: "satisfaction.rkt") + (prefix-in support: br/ragg/support) + (prefix-in stxparse: syntax/parse)) + +(provide rules-codegen) + + +;; Generates the body of the module. +;; FIXME: abstract this so we can just call (rules ...) without +;; generating the whole module body. +(define (rules-codegen stx + #:parser-provider-module [parser-provider-module 'parser-tools/yacc] + #:parser-provider-form [parser-provider-form 'parser]) + (syntax-case stx () + [(_ r ...) + (begin + ;; (listof stx) + (define rules (syntax->list #'(r ...))) + + (when (empty? rules) + (raise-syntax-error 'ragg + (format "The grammar does not appear to have any rules") + stx)) + + (check-all-rules-defined! rules) + (check-all-rules-no-duplicates! rules) + (check-all-rules-satisfiable! rules) + + ;; We flatten the rules so we can use the yacc-style ruleset that parser-tools + ;; supports. + (define flattened-rules (flatten-rules rules)) + + (define generated-rule-codes (map flat-rule->yacc-rule flattened-rules)) + + ;; The first rule, by default, is the start rule. + (define rule-ids (for/list ([a-rule (in-list rules)]) + (rule-id a-rule))) + (define start-id (first rule-ids)) + + + (define-values (implicit-tokens ;; (listof identifier) + explicit-tokens) ;; (listof identifier) + (rules-collect-token-types rules)) + + ;; (listof symbol) + (define implicit-token-types + (map string->symbol + (set->list (list->set (map syntax-e implicit-tokens))))) + + ;; (listof symbol) + (define explicit-token-types + (set->list (list->set (map syntax-e explicit-tokens)))) + + ;; (listof symbol) + (define token-types + (set->list (list->set (append (map (lambda (x) (string->symbol (syntax-e x))) + implicit-tokens) + (map syntax-e explicit-tokens))))) + + (with-syntax ([start-id start-id] + + [(token-type ...) token-types] + + [(token-type-constructor ...) + (map (lambda (x) (string->symbol (format "token-~a" x))) + token-types)] + + [(explicit-token-types ...) explicit-token-types] + [(implicit-token-types ...) implicit-token-types] + [(implicit-token-types-str ...) (map symbol->string implicit-token-types)] + [(implicit-token-type-constructor ...) + (map (lambda (x) (string->symbol (format "token-~a" x))) + implicit-token-types)] + [generated-grammar #`(grammar #,@generated-rule-codes)] + [parser-module parser-provider-module] + [parser-form parser-provider-form]) + (quasisyntax/loc stx + (begin + (require parser-tools/lex + parser-module + br/ragg/codegen/runtime + br/ragg/support + br/ragg/private/internal-support + racket/set + (for-syntax syntax/parse racket/base)) + + (provide parse + make-rule-parser + all-token-types + #;current-source + #;current-parser-error-handler + #;current-tokenizer-error-handler + #;[struct-out exn:fail:parsing] + ) + + (define-tokens enumerated-tokens (token-type ...)) + + ;; all-token-types lists all the tokens (except for EOF) + (define all-token-types + (set-remove (set 'token-type ...) 'EOF)) + + ;; For internal use by the permissive tokenizer only: + (define all-tokens-hash/mutable + (make-hash (list ;; Note: we also allow the eof object here, to make + ;; the permissive tokenizer even nicer to work with. + (cons eof token-EOF) + (cons 'token-type token-type-constructor) ...))) + + + #;(define default-lex/1 + (lexer-src-pos [implicit-token-types-str + (token 'implicit-token-types lexeme)] + ... + [(eof) (token eof)])) + + (define-syntax (make-rule-parser stx-2) + (syntax-parse stx-2 + [(_ start-rule:id) + (begin + ;; HACK HACK HACK + ;; The cfg-parser depends on the start-rule provided in (start ...) to have the same + ;; context as the rest of this body, so I need to hack this. I don't like this, but + ;; I don't know what else to do. Hence recolored-start-rule. + (unless (member (syntax-e #'start-rule) + '#,(map syntax-e rule-ids)) + (raise-syntax-error #f + (format "Rule ~a is not defined in the grammar" (syntax-e #'start-rule)) + stx-2)) + + (define recolored-start-rule (datum->syntax (syntax #,stx) (syntax-e #'start-rule))) + #`(let ([THE-GRAMMAR (parser-form (tokens enumerated-tokens) + (src-pos) + (start #,recolored-start-rule) + (end EOF) + (error THE-ERROR-HANDLER) + generated-grammar)]) + (case-lambda [(tokenizer) + (define next-token + (make-permissive-tokenizer tokenizer all-tokens-hash/mutable)) + (THE-GRAMMAR next-token)] + [(source tokenizer) + (parameterize ([current-source source]) + (parse tokenizer))])))])) + + (define parse (make-rule-parser start-id))))))])) + + +;; Given a flattened rule, returns a syntax for the code that +;; preserves as much source location as possible. +;; +;; Each rule is defined to return a list with the following structure: +;; +;; stx :== (name (U tokens rule-stx) ...) +;; +(define (flat-rule->yacc-rule a-flat-rule) + (syntax-case a-flat-rule () + [(rule-type origin name clauses ...) + (begin + (define translated-clauses + (map (lambda (clause) (translate-clause clause #'name #'origin)) + (syntax->list #'(clauses ...)))) + (with-syntax ([(translated-clause ...) translated-clauses]) + #`[name translated-clause ...]))])) + + + +;; translates a single primitive rule clause. +;; A clause is a simple list of ids, lit, vals, and inferred-id elements. +;; The action taken depends on the pattern type. +(define (translate-clause a-clause rule-name/false origin) + (define translated-patterns + (let loop ([primitive-patterns (syntax->list a-clause)]) + (cond + [(empty? primitive-patterns) + '()] + [else + (cons (syntax-case (first primitive-patterns) (id lit token inferred-id) + [(id val) + #'val] + [(lit val) + (datum->syntax #f (string->symbol (syntax-e #'val)) #'val)] + [(token val) + #'val] + [(inferred-id val reason) + #'val]) + (loop (rest primitive-patterns)))]))) + + (define translated-actions + (for/list ([translated-pattern (in-list translated-patterns)] + [primitive-pattern (syntax->list a-clause)] + [pos (in-naturals 1)]) + (with-syntax ([$X + (format-id translated-pattern "$~a" pos)] + [$X-start-pos + (format-id translated-pattern "$~a-start-pos" pos)] + [$X-end-pos + (format-id translated-pattern "$~a-end-pos" pos)]) + (syntax-case primitive-pattern (id lit token inferred-id) + ;; When a rule usage is inferred, the value of $X is a syntax object + ;; whose head is the name of the inferred rule . We strip that out, + ;; leaving the residue to be absorbed. + [(inferred-id val reason) + #'(syntax-case $X () + [(inferred-rule-name . rest) + (syntax->list #'rest)])] + [(id val) + #`(list $X)] + [(lit val) + #`(list (atomic-datum->syntax $X $X-start-pos $X-end-pos))] + [(token val) + #`(list (atomic-datum->syntax $X $X-start-pos $X-end-pos))])))) + + (define whole-rule-loc + (if (empty? translated-patterns) + #'(list (current-source) #f #f #f #f) + (with-syntax ([$1-start-pos (datum->syntax (first translated-patterns) '$1-start-pos)] + [$n-end-pos (format-id (last translated-patterns) "$~a-end-pos" (length translated-patterns))]) + #`(positions->srcloc $1-start-pos $n-end-pos)))) + + (with-syntax ([(translated-pattern ...) translated-patterns] + [(translated-action ...) translated-actions]) + #`[(translated-pattern ...) + (rule-components->syntax '#,rule-name/false translated-action ... + #:srcloc #,whole-rule-loc)])) + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; collect-token-types: (listof rule-syntax) -> (values (listof identifier) (listof identifier)) +;; +;; Given a rule, automatically derive the list of implicit and +;; explicit token types we need to generate. +;; +;; Note: EOF is reserved, and will always be included in the list +;; of explicit token types, though the user is not allow to express it themselves. +(define (rules-collect-token-types rules) + (define-values (implicit explicit) + (for/fold ([implicit '()] + [explicit (list (datum->syntax (first rules) 'EOF))]) + ([r (in-list rules)]) + (rule-collect-token-types r implicit explicit))) + (values (reverse implicit) (reverse explicit))) + +(define (rule-collect-token-types a-rule implicit explicit) + (syntax-case a-rule (rule) + [(rule id a-pattern) + (pattern-collect-implicit-token-types #'a-pattern implicit explicit)])) + +(define (pattern-collect-implicit-token-types a-pattern implicit explicit) + (let loop ([a-pattern a-pattern] + [implicit implicit] + [explicit explicit]) + (syntax-case a-pattern (id lit token choice repeat maybe seq) + [(id val) + (values implicit explicit)] + [(lit val) + (values (cons #'val implicit) explicit)] + [(token val) + (begin + (when (eq? (syntax-e #'val) 'EOF) + (raise-syntax-error #f "Token EOF is reserved and can not be used in a grammar" #'val)) + (values implicit (cons #'val explicit)))] + [(choice vals ...) + (for/fold ([implicit implicit] + [explicit explicit]) + ([v (in-list (syntax->list #'(vals ...)))]) + (loop v implicit explicit))] + [(repeat min val) + (loop #'val implicit explicit)] + [(maybe val) + (loop #'val implicit explicit)] + [(seq vals ...) + (for/fold ([implicit implicit] + [explicit explicit]) + ([v (in-list (syntax->list #'(vals ...)))]) + (loop v implicit explicit))]))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; rule-id: rule -> identifier-stx +;; Get the binding id of a rule. +(define (rule-id a-rule) + (syntax-case a-rule (rule) + [(rule id a-pattern) + #'id])) + +(define (rule-pattern a-rule) + (syntax-case a-rule (rule) + [(rule id a-pattern) + #'a-pattern])) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; check-all-rules-defined!: (listof rule-stx) -> void +(define (check-all-rules-defined! rules) + (define table (make-free-id-table)) + ;; Pass one: collect all the defined rule names. + (for ([a-rule (in-list rules)]) + (free-id-table-set! table (rule-id a-rule) #t)) + ;; Pass two: check each referenced id, and make sure it's been defined. + (for ([a-rule (in-list rules)]) + (for ([referenced-id (in-list (rule-collect-used-ids a-rule))]) + (unless (free-id-table-ref table referenced-id (lambda () #f)) + (raise-syntax-error #f (format "Rule ~a has no definition" (syntax-e referenced-id)) + referenced-id))))) + +;; check-all-rules-no-duplicates!: (listof rule-stx) -> void +(define (check-all-rules-no-duplicates! rules) + (define table (make-free-id-table)) + ;; Pass one: collect all the defined rule names. + (for ([a-rule (in-list rules)]) + (define maybe-other-rule-id (free-id-table-ref table (rule-id a-rule) (lambda () #f))) + (when maybe-other-rule-id + (raise-syntax-error #f (format "Rule ~a has a duplicate definition" (syntax-e (rule-id a-rule))) + (rule-id a-rule) + #f + (list (rule-id a-rule) maybe-other-rule-id))) + (free-id-table-set! table (rule-id a-rule) (rule-id a-rule)))) + + + +;; rule-collect-used-ids: rule-stx -> (listof identifier) +;; Given a rule, extracts a list of identifiers +(define (rule-collect-used-ids a-rule) + (syntax-case a-rule (rule) + [(rule id a-pattern) + (pattern-collect-used-ids #'a-pattern '())])) + +;; pattern-collect-used-ids: pattern-stx (listof identifier) -> (listof identifier) +;; Returns a flat list of rule identifiers referenced in the pattern. +(define (pattern-collect-used-ids a-pattern acc) + (let loop ([a-pattern a-pattern] + [acc acc]) + (syntax-case a-pattern (id lit token choice repeat maybe seq) + [(id val) + (cons #'val acc)] + [(lit val) + acc] + [(token val) + acc] + [(choice vals ...) + (for/fold ([acc acc]) + ([v (in-list (syntax->list #'(vals ...)))]) + (loop v acc))] + [(repeat min val) + (loop #'val acc)] + [(maybe val) + (loop #'val acc)] + [(seq vals ...) + (for/fold ([acc acc]) + ([v (in-list (syntax->list #'(vals ...)))]) + (loop v acc))]))) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; check-all-rules-satisfiable: (listof rule-stx) -> void +;; Does a simple graph traversal / topological sort-like thing to make sure that, for +;; any rule, there's some finite sequence of tokens that +;; satisfies it. If this is not the case, then something horrible +;; has happened, and we need to tell the user about it. +;; +;; NOTE: Assumes all referenced rules have definitions. +(define (check-all-rules-satisfiable! rules) + (define toplevel-rule-table (make-free-id-table)) + (for ([a-rule (in-list rules)]) + (free-id-table-set! toplevel-rule-table + (rule-id a-rule) + (sat:make-and))) + (define leaves '()) + + (define (make-leaf) + (define a-leaf (sat:make-and)) + (set! leaves (cons a-leaf leaves)) + a-leaf) + + (define (process-pattern a-pattern) + (syntax-case a-pattern (id lit token choice repeat maybe seq) + [(id val) + (free-id-table-ref toplevel-rule-table #'val)] + [(lit val) + (make-leaf)] + [(token val) + (make-leaf)] + [(choice vals ...) + (begin + (define an-or-node (sat:make-or)) + (for ([v (in-list (syntax->list #'(vals ...)))]) + (define a-child (process-pattern v)) + (sat:add-child! an-or-node a-child)) + an-or-node)] + [(repeat min val) + (syntax-case #'min () + [0 + (make-leaf)] + [else + (process-pattern #'val)])] + [(maybe val) + (make-leaf)] + [(seq vals ...) + (begin + (define an-and-node (sat:make-and)) + (for ([v (in-list (syntax->list #'(vals ...)))]) + (define a-child (process-pattern v)) + (sat:add-child! an-and-node a-child)) + an-and-node)])) + + (for ([a-rule (in-list rules)]) + (define rule-node (free-id-table-ref toplevel-rule-table (rule-id a-rule))) + (sat:add-child! rule-node (process-pattern (rule-pattern a-rule)))) + + (for ([a-leaf leaves]) + (sat:visit! a-leaf)) + + (for ([a-rule (in-list rules)]) + (define rule-node (free-id-table-ref toplevel-rule-table (rule-id a-rule))) + (unless (sat:node-yes? rule-node) + (raise-syntax-error #f (format "Rule ~a has no finite derivation" (syntax-e (rule-id a-rule))) + (rule-id a-rule))))) diff --git a/beautiful-racket-ragg/br/ragg/codegen/flatten.rkt b/beautiful-racket-ragg/br/ragg/codegen/flatten.rkt new file mode 100755 index 0000000..44a78d3 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/codegen/flatten.rkt @@ -0,0 +1,186 @@ +#lang racket/base +(require br/ragg/rules/stx-types + (for-syntax racket/base)) + +(provide flatten-rule + flatten-rules + prim-rule) + + + +(define (make-fresh-name) + (let ([n 0]) + (lambda () + (set! n (add1 n)) + (string->symbol (format "%rule~a" n))))) + +(define default-fresh-name + (make-fresh-name)) + + +;; Translates rules to lists of primitive rules. + + +(define (flatten-rules rules #:fresh-name [fresh-name default-fresh-name]) + (define ht (make-hash)) + (apply append (map (lambda (a-rule) (flatten-rule a-rule + #:ht ht + #:fresh-name fresh-name)) + rules))) + + +;; flatten-rule: rule -> (listof primitive-rule) +(define (flatten-rule a-rule + #:fresh-name [fresh-name default-fresh-name] + + ;; ht: (hashtableof pattern-hash-key pat) + #:ht [ht (make-hash)]) + + (let recur ([a-rule a-rule] + [inferred? #f]) + + ;; lift-nonprimitive-pattern: pattern -> (values (listof primitive-rule) pattern) + ;; Turns non-primitive patterns into primitive patterns, and produces a set of + ;; derived rules. + (define (lift-nonprimitive-pattern a-pat) + (cond + [(primitive-pattern? a-pat) + (values '() (linearize-primitive-pattern a-pat))] + [(hash-has-key? ht (pattern->hash-key a-pat)) + (values '() (list (hash-ref ht (pattern->hash-key a-pat))))] + [else + (define head (syntax-case a-pat () [(head rest ...) #'head])) + (define new-name (datum->syntax #f (fresh-name) a-pat)) + (define new-inferred-id (datum->syntax #f `(inferred-id ,new-name ,head) a-pat)) + (hash-set! ht (pattern->hash-key a-pat) new-inferred-id) + (values (recur #`(rule #,new-name #,a-pat) head) + (list new-inferred-id))])) + + (define (lift-nonprimitive-patterns pats) + (define-values (rules patterns) + (for/fold ([inferred-ruless '()] + [patternss '()]) + ([p (in-list pats)]) + (define-values (new-rules new-ps) + (lift-nonprimitive-pattern p)) + (values (cons new-rules inferred-ruless) + (cons new-ps patternss)))) + (values (apply append (reverse rules)) + (apply append (reverse patterns)))) + + (with-syntax ([head (if inferred? #'inferred-prim-rule #'prim-rule)] + [origin (syntax-case a-rule (rule) [(rule name (pat-head rest ...)) #'pat-head])]) + (syntax-case a-rule (rule) + [(rule name pat) + (syntax-case #'pat (id inferred-id lit token choice repeat maybe seq) + + ;; The primitive types stay as they are: + [(id val) + (list #'(head origin name [pat]))] + [(inferred-id val reason) + (list #'(head origin name [pat]))] + [(lit val) + (list #'(head origin name [pat]))] + [(token val) + (list #'(head origin name [pat]))] + + + ;; Everything else might need lifting: + [(choice sub-pat ...) + (begin + (define-values (inferred-ruless/rev new-sub-patss/rev) + (for/fold ([rs '()] [ps '()]) + ([p (syntax->list #'(sub-pat ...))]) + (let-values ([(new-r new-p) + (lift-nonprimitive-pattern p)]) + (values (cons new-r rs) (cons new-p ps))))) + (with-syntax ([((sub-pat ...) ...) (reverse new-sub-patss/rev)]) + (append (list #'(head origin name [sub-pat ...] ...)) + (apply append (reverse inferred-ruless/rev)))))] + + [(repeat min sub-pat) + (begin + (define-values (inferred-rules new-sub-pats) + (lift-nonprimitive-pattern #'sub-pat)) + (with-syntax ([(sub-pat ...) new-sub-pats]) + (cons (cond [(= (syntax-e #'min) 0) + #`(head origin name + [(inferred-id name repeat) sub-pat ...] + [])] + [(= (syntax-e #'min) 1) + #`(head origin name + [(inferred-id name repeat) sub-pat ...] + [sub-pat ...])]) + inferred-rules)))] + + [(maybe sub-pat) + (begin + (define-values (inferred-rules new-sub-pats) + (lift-nonprimitive-pattern #'sub-pat)) + (with-syntax ([(sub-pat ...) new-sub-pats]) + (cons #'(head origin name + [sub-pat ...] + []) + inferred-rules)))] + + [(seq sub-pat ...) + (begin + (define-values (inferred-rules new-sub-pats) + (lift-nonprimitive-patterns (syntax->list #'(sub-pat ...)))) + (with-syntax ([(sub-pat ...) new-sub-pats]) + (cons #'(head origin name [sub-pat ...]) + inferred-rules)))])])))) + + +;; Given a pattern, return a key appropriate for a hash. +(define (pattern->hash-key a-pat) + (syntax->datum a-pat)) + + +;; Returns true if the pattern looks primitive +(define (primitive-pattern? a-pat) + (syntax-case a-pat (id lit token choice repeat maybe seq) + [(id val) + #t] + [(lit val) + #t] + [(token val) + #t] + [(choice sub-pat ...) + #f] + [(repeat min val) + #f] + [(maybe sub-pat) + #f] + [(seq sub-pat ...) + (andmap primitive-pattern? (syntax->list #'(sub-pat ...)))])) + + +;; Given a primitive pattern (id, lit, token, and seqs only containing +;; primitive patterns), returns a linear sequence of just id, lits, +;; and tokens. +(define (linearize-primitive-pattern a-pat) + (define (traverse a-pat acc) + (syntax-case a-pat (id inferred-id lit token seq) + [(id val) + (cons a-pat acc)] + [(inferred-id val reason) + (cons a-pat acc)] + [(lit val) + (cons a-pat acc)] + [(token val) + (cons a-pat acc)] + [(seq vals ...) + (foldl traverse acc (syntax->list #'(vals ...)))])) + (reverse (traverse a-pat '()))) + + + +(define-syntax (prim-rule stx) + (raise-syntax-error #f "internal error: should not be macro expanded" stx)) + +(define-syntax (inferred-prim-rule stx) + (raise-syntax-error #f "internal error: should not be macro expanded" stx)) + +(define-syntax (inferred-id stx) + (raise-syntax-error #f "internal error: should not be macro expanded" stx)) diff --git a/beautiful-racket-ragg/br/ragg/codegen/lang/reader.rkt b/beautiful-racket-ragg/br/ragg/codegen/lang/reader.rkt new file mode 100755 index 0000000..b741674 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/codegen/lang/reader.rkt @@ -0,0 +1,68 @@ +#lang s-exp syntax/module-reader +br/ragg/codegen/sexp-based-lang +#:read my-read +#:read-syntax my-read-syntax +#:info my-get-info +#:whole-body-readers? #t + +(require br/ragg/rules/parser + br/ragg/rules/lexer + br/ragg/rules/stx + br/ragg/rules/rule-structs) + +(define (my-read in) + (syntax->datum (my-read-syntax #f in))) + +(define (my-read-syntax src in) + (define-values (first-line first-column first-position) (port-next-location in)) + (define tokenizer (tokenize in)) + (define rules + (parameterize ([current-parser-error-handler + (lambda (tok-ok? tok-name tok-value start-pos end-pos) + (raise-syntax-error + #f + (format "Error while parsing grammar near: ~a [line=~a, column=~a, position=~a]" + tok-value + (pos-line start-pos) + (pos-col start-pos) + (pos-offset start-pos)) + (datum->syntax #f + (string->symbol (format "~a" tok-value)) + (list src + (pos-line start-pos) + (pos-col start-pos) + (pos-offset start-pos) + (if (and (number? (pos-offset end-pos)) + (number? (pos-offset start-pos))) + (- (pos-offset end-pos) + (pos-offset start-pos)) + #f)))))]) + (grammar-parser tokenizer))) + (define-values (last-line last-column last-position) (port-next-location in)) + (list (rules->stx src rules + #:original-stx (datum->syntax #f 'original-stx + (list src + first-line + first-column + first-position + (if (and (number? last-position) + (number? first-position)) + (- last-position first-position) + #f)))))) + + +;; Extension: we'd like to cooperate with DrRacket and tell +;; it to use the default, textual lexer and color scheme when +;; editing bf programs. +;; +;; See: http://docs.racket-lang.org/guide/language-get-info.html +;; for more details, as well as the documentation in +;; syntax/module-reader. +(define (my-get-info key default default-filter) + (case key + [(color-lexer) + (dynamic-require 'syntax-color/default-lexer + 'default-lexer)] + [else + (default-filter key default)])) + diff --git a/beautiful-racket-ragg/br/ragg/codegen/runtime.rkt b/beautiful-racket-ragg/br/ragg/codegen/runtime.rkt new file mode 100755 index 0000000..d38b244 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/codegen/runtime.rkt @@ -0,0 +1,170 @@ +#lang racket/base + +(require racket/match + racket/list + racket/generator + (prefix-in lex: parser-tools/lex) + br/ragg/support + br/ragg/private/internal-support) + + +(provide THE-ERROR-HANDLER + make-permissive-tokenizer + atomic-datum->syntax + positions->srcloc + rule-components->syntax) + + + +;; The level of indirection here is necessary since the yacc grammar wants a +;; function value for the error handler up front. We want to delay that decision +;; till parse time. +(define (THE-ERROR-HANDLER tok-ok? tok-name tok-value start-pos end-pos) + (match (positions->srcloc start-pos end-pos) + [(list src line col offset span) + ((current-parser-error-handler) tok-name + tok-value + offset + line + col + span)])) + + + + +(define no-position (lex:position #f #f #f)) +(define (no-position? p) + (not + (or (lex:position-line p) + (lex:position-col p) + (lex:position-offset p)))) + + +;; make-permissive-tokenizer: (U (sequenceof (U token token-struct eof void)) (-> (U token token-struct eof void))) hash -> (-> position-token) +;; Creates a tokenizer from the given value. +;; FIXME: clean up code. +(define (make-permissive-tokenizer tokenizer token-type-hash) + (define tokenizer-thunk (cond + [(sequence? tokenizer) + (sequence->generator tokenizer)] + [(procedure? tokenizer) + tokenizer])) + + ;; lookup: symbol any pos pos -> position-token + (define (lookup type val start-pos end-pos) + (lex:position-token + ((hash-ref token-type-hash type + (lambda () + ((current-tokenizer-error-handler) (format "~a" type) val + (lex:position-offset start-pos) + (lex:position-line start-pos) + (lex:position-col start-pos) + (and (number? (lex:position-offset start-pos)) + (number? (lex:position-offset end-pos)) + (- (lex:position-offset end-pos) + (lex:position-offset start-pos)))))) + val) + start-pos end-pos)) + + (define (permissive-tokenizer) + (define next-token (tokenizer-thunk)) + (let loop ([next-token next-token]) + (match next-token + [(or (? eof-object?) (? void?)) + (lookup 'EOF eof no-position no-position)] + + [(? symbol?) + (lookup next-token next-token no-position no-position)] + + [(? string?) + (lookup (string->symbol next-token) next-token no-position no-position)] + + [(? char?) + (lookup (string->symbol (string next-token)) next-token no-position no-position)] + + ;; Compatibility + [(? lex:token?) + (loop (token (lex:token-name next-token) + (lex:token-value next-token)))] + + [(token-struct type val offset line column span skip?) + (cond [skip? + ;; skip whitespace, and just tokenize again. + (permissive-tokenizer)] + + [(hash-has-key? token-type-hash type) + (define start-pos (lex:position offset line column)) + ;; try to synthesize a consistent end position. + (define end-pos (lex:position (if (and (number? offset) (number? span)) + (+ offset span) + offset) + line + (if (and (number? column) (number? span)) + (+ column span) + column))) + (lookup type val start-pos end-pos)] + [else + ;; We ran into a token of unrecognized type. Let's raise an appropriate error. + ((current-tokenizer-error-handler) type val + offset line column span)])] + + [(lex:position-token t s e) + (define a-position-token (loop t)) + (lex:position-token (lex:position-token-token a-position-token) + (if (no-position? (lex:position-token-start-pos a-position-token)) + s + (lex:position-token-start-pos a-position-token)) + (if (no-position? (lex:position-token-end-pos a-position-token)) + e + (lex:position-token-end-pos a-position-token)))] + + [else + ;; Otherwise, we have no idea how to treat this as a token. + ((current-tokenizer-error-handler) 'unknown-type (format "~a" next-token) + #f #f #f #f)]))) + permissive-tokenizer) + + + +;; positions->srcloc: position position -> (list source line column offset span) +;; Given two positions, returns a srcloc-like structure, where srcloc is the value +;; consumed as the third argument to datum->syntax. +(define (positions->srcloc start-pos end-pos) + (list (current-source) + (lex:position-line start-pos) + (lex:position-col start-pos) + (lex:position-offset start-pos) + (if (and (number? (lex:position-offset end-pos)) + (number? (lex:position-offset start-pos))) + (- (lex:position-offset end-pos) + (lex:position-offset start-pos)) + #f))) + + +;; We create a syntax using read-syntax; by definition, it should have the +;; original? property set to #t, which we then copy over to syntaxes constructed +;; with atomic-datum->syntax and rule-components->syntax. +(define stx-with-original?-property + (read-syntax #f (open-input-string "original"))) + + +;; atomic-datum->syntax: datum position position +;; Helper that does the ugly work in wrapping a datum into a syntax +;; with source location. +(define (atomic-datum->syntax d start-pos end-pos) + (datum->syntax #f d (positions->srcloc start-pos end-pos) stx-with-original?-property)) + + + +;; rule-components->syntax: (U symbol false) (listof stx) ... #:srcloc (U #f (list src line column offset span)) -> stx +;; Creates an stx out of the rule name and its components. +;; The location information of the rule spans that of its components. +(define (rule-components->syntax rule-name/false #:srcloc [srcloc #f] . components) + (define flattened-components (apply append components)) + (datum->syntax #f + (apply append + (list + (datum->syntax #f rule-name/false srcloc stx-with-original?-property)) + components) + srcloc + stx-with-original?-property)) diff --git a/beautiful-racket-ragg/br/ragg/codegen/satisfaction.rkt b/beautiful-racket-ragg/br/ragg/codegen/satisfaction.rkt new file mode 100755 index 0000000..07f20ac --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/codegen/satisfaction.rkt @@ -0,0 +1,207 @@ +#lang racket/base + +(provide make-and make-or node? node-val node-yes? visit! add-child!) + +(require racket/match) + +;; I can't get no... satisfaction. +;; +;; A small module to make sure a small constraint system can be satisfied. +;; +;; Small variation on topological sort where we need both AND and OR nodes. + + +(struct node (type val yes? parents count-to-satisfy) #:mutable) +;; or nodes are satisfied if any of the children is satisfied. +;; and nodes are satisfied if all of the children are satisfied. + + +;; visit!: node -> void +;; Visit a node, and marking it if it's all satisfied. Propagate +;; satisfaction to parents as appropriate. +(define visit! + (let () + (define (dec! n) + (set-node-count-to-satisfy! n (max 0 (sub1 (node-count-to-satisfy n)))) + (when (and (not (node-yes? n)) + (= (node-count-to-satisfy n) 0)) + (sat! n))) + + (define (sat! n) + (set-node-yes?! n #t) + (for ([p (in-list (node-parents n))]) + (dec! p))) + + (lambda (n) + (unless (node-yes? n) + (when (= (node-count-to-satisfy n) 0) + (sat! n)))))) + + +;; make-or: X -> node +;; Create an or node +(define (make-or [val #f]) + (node 'or val #f '() 1)) + + +;; make-and: X -> node +;; Create an and node +(define (make-and [val #f]) + (node 'and val #f '() 0)) + + +;; add-child!: node node -> void +;; Attach a child c to the parent node p. +(define (add-child! p c) + (set-node-parents! c (cons p (node-parents c))) + (match p + [(node 'or _ _ _ count-to-satisfy) + (void)] + [(node 'and _ _ _ count-to-satisfy) + (set-node-count-to-satisfy! p (add1 count-to-satisfy))])) + + +(module* test racket + (require (submod "..") + racket/block + rackunit) + + ;; a ::= a + (block + ;; Self-looping "a" and-node should not say yes after visiting. + (define a (make-and 'a)) + (add-child! a a) + (visit! a) + (check-false (node-yes? a))) + + + ;; a ::= a + (block + ;; Self-looping "a" or-node should not say yes after visiting. + (define a (make-or 'a)) + (add-child! a a) + (visit! a) + (check-false (node-yes? a))) + + + ;; This case should never happen in my situation, but we should check. + (block + ;; Empty "a" or-node should not say yes after visiting. + (define a (make-or 'a)) + (visit! a) + (check-false (node-yes? a))) + + + ;; a : TOKEN + (block + ;; Empty "a" and-node SHOULD say yes after visiting. + (define a (make-and 'a)) + (visit! a) + (check-true (node-yes? a))) + + + ;; a : a | b + ;; b : TOKEN + (block + (define a (make-or 'a)) + (add-child! a a) + (define b (make-and 'b)) + (add-child! a b) + (visit! b) + (check-true (node-yes? a)) + (check-true (node-yes? b))) + + ;; a : a b + ;; b : TOKEN + (block + (define a (make-and 'a)) + (define b (make-and 'b)) + (define TOKEN (make-and 'TOKEN)) + (add-child! a a) + (add-child! a b) + (add-child! b TOKEN) + (visit! TOKEN) + (check-false (node-yes? a)) + (check-true (node-yes? b)) + (check-true (node-yes? TOKEN))) + + ;; a : b + ;; b : a + (block + (define a (make-and 'a)) + (define b (make-and 'b)) + (add-child! a b) + (add-child! b a) + (check-false (node-yes? a)) + (check-false (node-yes? b))) + + ;; a : "a" b + ;; b : a | b + (block + (define a (make-and 'a)) + (define b (make-or 'b)) + (define lit (make-and "a")) + (add-child! a lit) + (add-child! a b) + (add-child! b a) + (add-child! b b) + (visit! lit) + (check-false (node-yes? a)) + (check-false (node-yes? b)) + (check-true (node-yes? lit))) + + + ;; x : x y + ;; y : LIT + (block + (define x (make-and "x")) + (define y (make-and "y")) + (define lit (make-and "LIT")) + (add-child! x x) + (add-child! x y) + (add-child! y lit) + (visit! lit) + (check-false (node-yes? x)) + (check-true (node-yes? y)) + (check-true (node-yes? lit))) + + + ;; expr: LPAREN expr RPAREN | ATOM + (block + (define LPAREN (make-and)) + (define RPAREN (make-and)) + (define expr (make-or)) + (define expr-1 (make-and)) + (define expr-2 (make-and)) + (define ATOM (make-and)) + (add-child! expr expr-1) + (add-child! expr expr-2) + (add-child! expr-1 LPAREN) + (add-child! expr-1 expr) + (add-child! expr-1 RPAREN) + (add-child! expr-2 ATOM) + (visit! LPAREN) + (visit! RPAREN) + (visit! ATOM) + (check-true (node-yes? expr))) + + + + ;; expr: LPAREN expr RPAREN + (block + (define LPAREN (make-and)) + (define RPAREN (make-and)) + (define expr (make-or)) + (define expr-1 (make-and)) + (define expr-2 (make-and)) + (define ATOM (make-and)) + (add-child! expr expr-1) + (add-child! expr expr-2) + (add-child! expr-1 LPAREN) + (add-child! expr-1 expr) + (add-child! expr-1 RPAREN) + (visit! LPAREN) + (visit! RPAREN) + (check-false (node-yes? expr))) + + ) diff --git a/beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt b/beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt new file mode 100755 index 0000000..80acdf7 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt @@ -0,0 +1,95 @@ +#lang racket/base + +;; A language level for automatically generating parsers out of BNF grammars. +;; +;; Danny Yoo (dyoo@hashcollision.org) +;; +;; Intent: make it trivial to generate languages for Racket. At the +;; moment, I find it painful to use parser-tools. This library is +;; meant to make it less agonizing. +;; +;; The intended use of this language is as follows: +;; +;;;;; s-exp-grammar.rkt ;;;;;;;;; +;; #lang br/ragg +;; s-exp : "(" s-exp* ")" | ATOM +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +;; What this generates is: +;; +;; * parse: a function that consumes a source and a +;; position-aware lexer, and produces a syntax object. +;; +;; * make-rule-parser: a custom parser given a provided start rule. +;; +;; You'll still need to do a little work, by providing a lexer that +;; defines what the uppercased tokens mean. For example, you can +;; use the parser-tools/lex lexer tools: +;; +;; (require ragg/support +;; parser-tools/lex +;; parser-tools/lex-sre) +;; +;; (define tokenize +;; (lexer-src-pos +;; [(:+ alphabetic) +;; (token 'ATOM lexeme)] +;; [whitespace +;; (return-without-pos (tokenize/1 input-port))] +;; [(:or "(" ")") +;; (token lexeme lexeme)])) +;; + +;; However, that should be all you need. The output of an +;; generated grammar is an honest-to-goodness syntax +;; object with source locations, fully-labeled by the rules. +;; +;; (parse (tokenize an-input-port)) +;; +;; + +;; The first rule is treated as the start rule; any successful parse +;; must finish with end-of-file. + + +;; Terminology: +;; + + +;; A rule is a rule identifier, followed by a colon ":", followed by a +;; pattern. + +;; A rule identifier is an identifier that is not in upper case. +;; A rule identifier should follow the Racket rules for identifiers, +;; except that it can't contain * or +. +;; +;; A token is a rule identifier that is all in upper case. + + + +;; A pattern may either be +;; +;; * an implicit sequence of patterns, +;; +;; * a literal string, +;; +;; * a rule identifier, +;; +;; * a quanitifed pattern, either with "*" or "+", +;; +;; * an optional pattern: a pattern surrounded by "[" and "]", or +;; +;; * a grouped sequence: a pattern surrounded by "(" and ")". + + +(require (for-syntax racket/base + "codegen.rkt")) + +(provide rules + (rename-out [#%plain-module-begin #%module-begin])) + +(define-syntax (rules stx) + (rules-codegen #:parser-provider-module 'br/ragg/cfg-parser/cfg-parser ;; 'parser-tools/yacc + #:parser-provider-form 'cfg-parser ;; 'parser + stx)) diff --git a/beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt alias b/beautiful-racket-ragg/br/ragg/codegen/sexp-based-lang.rkt alias new file mode 100644 index 0000000000000000000000000000000000000000..f550a79193df1e3f143123eeb13d85ec267851b6 GIT binary patch literal 731892 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/wQM07_WTXpQ*wzF96M}cLrwJgeC2rZ?cXmk53)Y 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

9P(gy7b)0V!pBrSR&J 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Ъ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%0DSpwVdm)#Y(uEnJEHW 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

Mz^V=`BS=Q9LiSu5RPjBa^&O47 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%0DUF*iy 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 : | + : "<" ">" "::=" + + : " " | "" ## "" is empty string, i.e. no whitespace + : | "|" + : | + : | + : | "<" ">" + : '"' '"' | "'" "'" ## actually, the original BNF did not use quotes diff --git a/beautiful-racket-ragg/br/ragg/examples/lua-parser.rkt b/beautiful-racket-ragg/br/ragg/examples/lua-parser.rkt new file mode 100755 index 0000000..da3192f --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/lua-parser.rkt @@ -0,0 +1,111 @@ +#lang br/ragg + +;; Lua parser, adapted from: +;; http://www.lua.org/manual/5.1/manual.html#8 +;; + + +chunk : (stat ["; "])* [laststat ["; "]] + +block : chunk + +stat : varlist "=" explist | + functioncall | + DO block END | + WHILE exp DO block END | + REPEAT block UNTIL exp | + IF exp THEN block (ELSEIF exp THEN block)* [ELSE block] END | + FOR NAME "=" exp "," exp ["," exp] DO block END | + FOR namelist IN explist DO block END | + FUNCTION funcname funcbody | + LOCAL FUNCTION NAME funcbody | + LOCAL namelist ["=" explist] + +laststat : RETURN [explist] | BREAK + +funcname : NAME ("." NAME)* [":" NAME] + +varlist : var ("," var)* + +var : NAME | prefixexp "[" exp "]" | prefixexp "." NAME + +namelist : NAME ("," NAME)* + +explist : (exp ",")* exp + + +;; Note by dyoo: The parsing of exp deviates from Lua in that we have these administrative +;; rules to explicitly represent the precedence rules. +;; +;; See: http://www.lua.org/manual/5.1/manual.html#2.5.6 +;; +;; Ragg doesn't yet automatically desugar operator precedence rules. +;; I'm doing it by hand at the moment, which is not ideal, so a future version of +;; ragg will have a story about describing precedence. +;; +;; Operator precedence in Lua follows the table below, from lower to higher priority: +;; +;; or exp_1 +;; and exp_2 +;; < > <= >= ~= == exp_3 +;; .. exp_4 +;; + - exp_5 +;; * / % exp_6 +;; not # - (unary) exp_7 +;; ^ exp_8 +;; +;; As usual, you can use parentheses to change the precedences of an expression. +;; The concatenation ('..') and exponentiation ('^') operators are right associative. +;; All other binary operators are left associative. +;; +;; The original grammar rule before encoding precedence was: +;; +;; exp : NIL | FALSE | TRUE | NUMBER | STRING | "..." | function | +;; prefixexp | tableconstructor | exp binop exp | unop exp + +exp : exp_1 +exp_1: exp_1 binop_1 exp_2 | exp_2 +exp_2: exp_2 binop_2 exp_3 | exp_3 +exp_3: exp_3 binop_3 exp_4 | exp_4 +exp_4: exp_5 binop_4 exp_4 | exp_5 ;; right associative +exp_5: exp_5 binop_5 exp_6 | exp_6 +exp_6: exp_6 binop_6 exp_7 | exp_7 +exp_7: unop exp_8 +exp_8: exp_9 binop_8 exp_8 | exp_9 ;; right associative +exp_9: NIL | FALSE | TRUE | NUMBER | STRING | "..." | function | + prefixexp | tableconstructor +binop_1: OR +binop_2: AND +binop_3: "<" | ">" | "<=" | ">=" | "~=" | "==" +binop_4: ".." +binop_5: "+" | "-" +binop_6: "*" | "/" | "%" +binop_8: "^" +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +prefixexp : var | functioncall | "(" exp ")" + +functioncall : prefixexp args | prefixexp ":" NAME args + +args : "(" [explist] ")" | tableconstructor | STRING + +function : FUNCTION funcbody + +funcbody : "(" [parlist] ")" block END + +parlist : namelist ["," "..."] | "..." + +tableconstructor : "{" [fieldlist] "}" + +fieldlist : field (fieldsep field)* [fieldsep] + +field : "[" exp "]" "=" exp | NAME "=" exp | exp + +fieldsep : "," | ";" + +binop : "+" | "-" | "*" | "/" | "^" | "%" | ".." | + "<" | "<=" | ">" | ">=" | "==" | "~=" | + AND | OR + +unop : "-" | NOT | "#" \ No newline at end of file diff --git a/beautiful-racket-ragg/br/ragg/examples/nested-word-list.rkt b/beautiful-racket-ragg/br/ragg/examples/nested-word-list.rkt new file mode 100755 index 0000000..6df6687 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/nested-word-list.rkt @@ -0,0 +1,3 @@ +#lang br/ragg +nested-word-list: WORD + | LEFT-PAREN nested-word-list* RIGHT-PAREN diff --git a/beautiful-racket-ragg/br/ragg/examples/python-grammar.rkt b/beautiful-racket-ragg/br/ragg/examples/python-grammar.rkt new file mode 100755 index 0000000..21daae0 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/python-grammar.rkt @@ -0,0 +1,144 @@ +#lang br/ragg + +# Grammar for Python + +# Note: Changing the grammar specified in this file will most likely +# require corresponding changes in the parser module +# (../Modules/parsermodule.c). If you can't make the changes to +# that module yourself, please co-ordinate the required changes +# with someone who can; ask around on python-dev for help. Fred +# Drake will probably be listening there. + +# NOTE WELL: You should also follow all the steps listed in PEP 306, +# "How to Change Python's Grammar" + +# Start symbols for the grammar: +# single_input is a single interactive statement; +# file_input is a module or sequence of commands read from an input file; +# eval_input is the input for the eval() and input() functions. +# NB: compound_stmt in single_input is followed by extra NEWLINE! +file_input: (NEWLINE | stmt)* ENDMARKER +single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE +eval_input: testlist NEWLINE* ENDMARKER + +decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE +decorators: decorator+ +decorated: decorators (classdef | funcdef) +funcdef: 'def' NAME parameters ':' suite +parameters: '(' [varargslist] ')' +varargslist: ((fpdef ['=' test] ',')* + ('*' NAME [',' '**' NAME] | '**' NAME) | + fpdef ['=' test] (',' fpdef ['=' test])* [',']) +fpdef: NAME | '(' fplist ')' +fplist: fpdef (',' fpdef)* [','] + +stmt: simple_stmt | compound_stmt +simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE +small_stmt: (expr_stmt | print_stmt | del_stmt | pass_stmt | flow_stmt | + import_stmt | global_stmt | exec_stmt | assert_stmt) +expr_stmt: testlist (augassign (yield_expr|testlist) | + ('=' (yield_expr|testlist))*) +augassign: ('+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | + '<<=' | '>>=' | '**=' | '//=') +# For normal assignments, additional restrictions enforced by the interpreter +print_stmt: 'print' ( [ test (',' test)* [','] ] | + '>>' test [ (',' test)+ [','] ] ) +del_stmt: 'del' exprlist +pass_stmt: 'pass' +flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt +break_stmt: 'break' +continue_stmt: 'continue' +return_stmt: 'return' [testlist] +yield_stmt: yield_expr +raise_stmt: 'raise' [test [',' test [',' test]]] +import_stmt: import_name | import_from +import_name: 'import' dotted_as_names +import_from: ('from' ('.'* dotted_name | '.'+) + 'import' ('*' | '(' import_as_names ')' | import_as_names)) +import_as_name: NAME ['as' NAME] +dotted_as_name: dotted_name ['as' NAME] +import_as_names: import_as_name (',' import_as_name)* [','] +dotted_as_names: dotted_as_name (',' dotted_as_name)* +dotted_name: NAME ('.' NAME)* +global_stmt: 'global' NAME (',' NAME)* +exec_stmt: 'exec' expr ['in' test [',' test]] +assert_stmt: 'assert' test [',' test] + +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] +while_stmt: 'while' test ':' suite ['else' ':' suite] +for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] +try_stmt: ('try' ':' suite + ((except_clause ':' suite)+ + ['else' ':' suite] + ['finally' ':' suite] | + 'finally' ':' suite)) +with_stmt: 'with' with_item (',' with_item)* ':' suite +with_item: test ['as' expr] +# NB compile.c makes sure that the default except clause is last +except_clause: 'except' [test [('as' | ',') test]] +suite: simple_stmt | NEWLINE INDENT stmt+ DEDENT + +# Backward compatibility cruft to support: +# [ x for x in lambda: True, lambda: False if x() ] +# even while also allowing: +# lambda x: 5 if x else 2 +# (But not a mix of the two) +testlist_safe: old_test [(',' old_test)+ [',']] +old_test: or_test | old_lambdef +old_lambdef: 'lambda' [varargslist] ':' old_test + +test: or_test ['if' or_test 'else' test] | lambdef +or_test: and_test ('or' and_test)* +and_test: not_test ('and' not_test)* +not_test: 'not' not_test | comparison +comparison: expr (comp_op expr)* +comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not' +expr: xor_expr ('|' xor_expr)* +xor_expr: and_expr ('^' and_expr)* +and_expr: shift_expr ('&' shift_expr)* +shift_expr: arith_expr (('<<'|'>>') arith_expr)* +arith_expr: term (('+'|'-') term)* +term: factor (('*'|'/'|'%'|'//') factor)* +factor: ('+'|'-'|'~') factor | power +power: atom trailer* ['**' factor] +atom: ('(' [yield_expr|testlist_comp] ')' | + '[' [listmaker] ']' | + '{' [dictorsetmaker] '}' | + '`' testlist1 '`' | + NAME | NUMBER | STRING+) +listmaker: test ( list_for | (',' test)* [','] ) +testlist_comp: test ( comp_for | (',' test)* [','] ) +lambdef: 'lambda' [varargslist] ':' test +trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME +subscriptlist: subscript (',' subscript)* [','] +subscript: '.' '.' '.' | test | [test] ':' [test] [sliceop] +sliceop: ':' [test] +exprlist: expr (',' expr)* [','] +testlist: test (',' test)* [','] +dictorsetmaker: ( (test ':' test (comp_for | (',' test ':' test)* [','])) | + (test (comp_for | (',' test)* [','])) ) + +classdef: 'class' NAME ['(' [testlist] ')'] ':' suite + +arglist: (argument ',')* (argument [','] + |'*' test (',' argument)* [',' '**' test] + |'**' test) +# The reason that keywords are test nodes instead of NAME is that using NAME +# results in an ambiguity. ast.c makes sure it's a NAME. +argument: test [comp_for] | test '=' test + +list_iter: list_for | list_if +list_for: 'for' exprlist 'in' testlist_safe [list_iter] +list_if: 'if' old_test [list_iter] + +comp_iter: comp_for | comp_if +comp_for: 'for' exprlist 'in' or_test [comp_iter] +comp_if: 'if' old_test [comp_iter] + +testlist1: test (',' test)* + +# not used in grammar, but may appear in "node" passed from Parser to Compiler +encoding_decl: NAME + +yield_expr: 'yield' [testlist] diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-arithmetic-grammar.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-arithmetic-grammar.rkt new file mode 100755 index 0000000..08442eb --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-arithmetic-grammar.rkt @@ -0,0 +1,5 @@ +#lang br/ragg + +expr : term ('+' term)* +term : factor ('*' factor)* +factor : INT diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing.rkt new file mode 100755 index 0000000..a22465f --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing.rkt @@ -0,0 +1,10 @@ +#lang br/ragg + +;; +;; See: http://stackoverflow.com/questions/12345647/rewrite-this-script-by-designing-an-interpreter-in-racket +;; + +drawing: rows* +rows: repeat chunk+ ";" +repeat: INTEGER +chunk: INTEGER STRING diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/examples/letter-i.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/examples/letter-i.rkt new file mode 100755 index 0000000..7626fc8 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/examples/letter-i.rkt @@ -0,0 +1,4 @@ +#lang br/ragg/examples/simple-line-drawing +3 9 X; +6 3 b 3 X 3 b; +3 9 X; diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/grammar.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/grammar.rkt new file mode 100755 index 0000000..a22465f --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/grammar.rkt @@ -0,0 +1,10 @@ +#lang br/ragg + +;; +;; See: http://stackoverflow.com/questions/12345647/rewrite-this-script-by-designing-an-interpreter-in-racket +;; + +drawing: rows* +rows: repeat chunk+ ";" +repeat: INTEGER +chunk: INTEGER STRING diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/interpret.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/interpret.rkt new file mode 100755 index 0000000..e6cec0c --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/interpret.rkt @@ -0,0 +1,31 @@ +#lang racket/base +(require syntax/parse) + +(provide interpret-drawing) + +(define (interpret-drawing drawing-stx) + (syntax-parse drawing-stx + [({~literal drawing} row-stxs ...) + + (for ([row-stx (syntax->list #'(row-stxs ...))]) + (interpret-row row-stx))])) + + +(define (interpret-row row-stx) + (syntax-parse row-stx + [({~literal rows} + ({~literal repeat} repeat-number) + chunks ... ";") + + (for ([i (syntax-e #'repeat-number)]) + (for ([chunk-stx (syntax->list #'(chunks ...))]) + (interpret-chunk chunk-stx)) + (newline))])) + + +(define (interpret-chunk chunk-stx) + (syntax-parse chunk-stx + [({~literal chunk} chunk-size chunk-string) + + (for ([k (syntax-e #'chunk-size)]) + (display (syntax-e #'chunk-string)))])) diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lang/reader.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lang/reader.rkt new file mode 100755 index 0000000..13c69c4 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lang/reader.rkt @@ -0,0 +1,22 @@ +#lang s-exp syntax/module-reader +br/ragg/examples/simple-line-drawing/semantics +#:read my-read +#:read-syntax my-read-syntax +#:info my-get-info +#:whole-body-readers? #t + +(require br/ragg/examples/simple-line-drawing/lexer + br/ragg/examples/simple-line-drawing/grammar) + +(define (my-read in) + (syntax->datum (my-read-syntax #f in))) + +(define (my-read-syntax src ip) + (list (parse src (tokenize ip)))) + +(define (my-get-info key default default-filter) + (case key + [(color-lexer) + (dynamic-require 'syntax-color/default-lexer 'default-lexer)] + [else + (default-filter key default)])) diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lexer.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lexer.rkt new file mode 100755 index 0000000..6ef3cf4 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/lexer.rkt @@ -0,0 +1,27 @@ +#lang racket/base + +(provide tokenize) + +;; A simple lexer for simple-line-drawing. +(require br/ragg/support + parser-tools/lex) + +(define (tokenize ip) + (port-count-lines! ip) + (define my-lexer + (lexer-src-pos + [(repetition 1 +inf.0 numeric) + (token 'INTEGER (string->number lexeme))] + [upper-case + (token 'STRING lexeme)] + ["b" + (token 'STRING " ")] + [";" + (token ";" lexeme)] + [whitespace + (token 'WHITESPACE lexeme #:skip? #t)] + [(eof) + (void)])) + (define (next-token) (my-lexer ip)) + next-token) + diff --git a/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/semantics.rkt b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/semantics.rkt new file mode 100755 index 0000000..028662d --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/simple-line-drawing/semantics.rkt @@ -0,0 +1,48 @@ +#lang racket/base +(require (for-syntax racket/base syntax/parse)) + +(provide #%module-begin + ;; We reuse Racket's treatment of raw datums, specifically + ;; for strings and numbers: + #%datum + + ;; And otherwise, we provide definitions of these three forms. + ;; During compiliation, Racket uses these definitions to + ;; rewrite into for loops, displays, and newlines. + drawing rows chunk) + +;; Define a few compile-time functions to do the syntax rewriting: +(begin-for-syntax + (define (compile-drawing drawing-stx) + (syntax-parse drawing-stx + [({~literal drawing} row-stxs ...) + + (syntax/loc drawing-stx + (begin row-stxs ...))])) + + (define (compile-rows row-stx) + (syntax-parse row-stx + [({~literal rows} + ({~literal repeat} repeat-number) + chunks ... + ";") + + (syntax/loc row-stx + (for ([i repeat-number]) + chunks ... + (newline)))])) + + (define (compile-chunk chunk-stx) + (syntax-parse chunk-stx + [({~literal chunk} chunk-size chunk-string) + + (syntax/loc chunk-stx + (for ([k chunk-size]) + (display chunk-string)))]))) + + +;; Wire up the use of "drawing", "rows", and "chunk" to these +;; transformers: +(define-syntax drawing compile-drawing) +(define-syntax rows compile-rows) +(define-syntax chunk compile-chunk) diff --git a/beautiful-racket-ragg/br/ragg/examples/statlist-grammar.rkt b/beautiful-racket-ragg/br/ragg/examples/statlist-grammar.rkt new file mode 100755 index 0000000..026b76e --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/statlist-grammar.rkt @@ -0,0 +1,14 @@ +#lang br/ragg + +## Statlist grammar + +statlist : stat+ +stat: ID '=' expr + | 'print' expr + +expr: multExpr ('+' multExpr)* +multExpr: primary (('*'|'.') primary)* +primary : + INT + | ID + | '[' expr ("," expr)* ']' diff --git a/beautiful-racket-ragg/br/ragg/examples/wordy.rkt b/beautiful-racket-ragg/br/ragg/examples/wordy.rkt new file mode 100755 index 0000000..7430770 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/examples/wordy.rkt @@ -0,0 +1,7 @@ +#lang br/ragg +;; A parser for a silly language +sentence: verb optional-adjective object +verb: greeting +optional-adjective: ["happy" | "frumpy"] +greeting: "hello" | "hola" | "aloha" +object: "world" | WORLD diff --git a/beautiful-racket-ragg/br/ragg/info.rkt b/beautiful-racket-ragg/br/ragg/info.rkt new file mode 100755 index 0000000..894cc3b --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/info.rkt @@ -0,0 +1,11 @@ +#lang setup/infotab +(define name "ragg") +(define categories '(devtools)) +(define can-be-loaded-with 'all) +(define required-core-version "5.3.1") +(define version "1.0") +(define repositories '("4.x")) +(define scribblings '(("ragg.scrbl"))) +(define blurb '("ragg: a Racket AST Generator Generator. A design goal is to be easy for beginners to use. Given a grammar in EBNF, ragg produces a parser that generates Racket's native syntax objects with full source location.")) +(define release-notes '((p "First release."))) +(define deps (list)) diff --git a/beautiful-racket-ragg/br/ragg/lang/reader.rkt b/beautiful-racket-ragg/br/ragg/lang/reader.rkt new file mode 100755 index 0000000..5a6c52e --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/lang/reader.rkt @@ -0,0 +1,4 @@ +#lang racket/base + +(require "../codegen/lang/reader.rkt") +(provide (all-from-out "../codegen/lang/reader.rkt")) diff --git a/beautiful-racket-ragg/br/ragg/private/internal-support.rkt b/beautiful-racket-ragg/br/ragg/private/internal-support.rkt new file mode 100755 index 0000000..abaf0ac --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/private/internal-support.rkt @@ -0,0 +1,36 @@ +#lang racket/base + +(require br/ragg/support) + +(provide current-source + current-parser-error-handler + current-tokenizer-error-handler) + +;; During parsing, we should define the source of the input. +(define current-source (make-parameter #f)) + + +;; When an parse error happens, we call the current-parser-error-handler: +(define current-parser-error-handler + (make-parameter + (lambda (tok-name tok-value offset line col span) + (raise (exn:fail:parsing + (format "Encountered parsing error near token ~e (~e) while parsing ~e [line=~a, column=~a, offset=~a]" + tok-name tok-value + (current-source) + line col offset) + (current-continuation-marks) + (list (srcloc (current-source) line col offset span))))))) + +;; When a tokenization error happens, we call the current-tokenizer-error-handler. +(define current-tokenizer-error-handler + (make-parameter + (lambda (tok-type tok-value offset line column span) + (raise (exn:fail:parsing + (format "Encountered unexpected token ~e (~e) while parsing ~e [line=~a, column=~a, offset=~a]" + tok-type + tok-value + (current-source) + line column offset) + (current-continuation-marks) + (list (srcloc (current-source) line column offset span))))))) diff --git a/beautiful-racket-ragg/br/ragg/ragg.scrbl b/beautiful-racket-ragg/br/ragg/ragg.scrbl new file mode 100755 index 0000000..9b90b9b --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/ragg.scrbl @@ -0,0 +1,1107 @@ +#lang scribble/manual +@(require scribble/eval + racket/date + file/md5 + (for-label racket + br/ragg/support + br/ragg/examples/nested-word-list + (only-in parser-tools/lex lexer-src-pos) + (only-in syntax/parse syntax-parse ~literal))) + + +@(define (lookup-date filename [default ""]) + (cond + [(file-exists? filename) + (define modify-seconds (file-or-directory-modify-seconds filename)) + (define a-date (seconds->date modify-seconds)) + (date->string a-date)] + [else + default])) + +@(define (compute-md5sum filename [default ""]) + (cond [(file-exists? filename) + (bytes->string/utf-8 (call-with-input-file filename md5 #:mode 'binary))] + [else + default])) + + + +@title{ragg: a Racket AST Generator Generator} +@author+email["Danny Yoo" "dyoo@hashcollision.org"] + + +@section{Informal quickstart} + +@(define my-eval (make-base-eval)) +@(my-eval '(require br/ragg/examples/nested-word-list + racket/list + racket/match)) + +Salutations! Let's consider the following scenario: say that we're given the +following string: +@racketblock["(radiant (humble))"] + + +@margin-note{(... and pretend that we don't already know about the built-in +@racket[read] function.)} How do we go about turning this kind of string into a +structured value? That is, how would we @emph{parse} it? + +We need to first consider the shape of the things we'd like to parse. The +string above looks like a deeply nested list of words. How might we describe +this formally? A convenient notation to describe the shape of these things is +@link["http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form"]{Backus-Naur +Form} (BNF). So let's try to notate the structure of nested word lists in BNF. + + +@nested[#:style 'code-inset]{ +@verbatim{ +nested-word-list: WORD + | LEFT-PAREN nested-word-list* RIGHT-PAREN +}} + +What we intend by this notation is this: @racket[nested-word-list] is either an +atomic @racket[WORD], or a parenthesized list of any number of +@racket[nested-word-list]s. We use the character @litchar{*} to represent zero +or more repetitions of the previous thing, and we treat the uppercased +@racket[LEFT-PAREN], @racket[RIGHT-PAREN], and @racket[WORD] as placeholders +for atomic @emph{tokens}. + +@margin-note{See @secref{install-ragg} for instructions on installing +@tt{ragg.}} +Here are a few examples of tokens: +@interaction[#:eval my-eval +(require br/ragg/support) +(token 'LEFT-PAREN) +(token 'WORD "crunchy" #:span 7) +(token 'RIGHT-PAREN)] + + +Have we made progress? At this point, we only have a BNF description in hand, +but we're still missing a @emph{parser}, something to take that description and +use it to make structures out of a sequence of tokens. + + +It's clear that we don't yet have a program because there's no @litchar{#lang} +line. We should add one. Put @litchar{#lang br/ragg} at the top of the BNF +description, and save it as a file called @filepath{nested-word-list.rkt}. + +@filebox["nested-word-list.rkt"]{ +@verbatim{ +#lang br/ragg +nested-word-list: WORD + | LEFT-PAREN nested-word-list* RIGHT-PAREN +}} + +Now it is a proper program. But what does it do? + +@interaction[#:eval my-eval +@eval:alts[(require "nested-word-list.rkt") (void)] +parse +] + +It gives us a @racket[parse] function. Let's investigate what @racket[parse] +does for us. What happens if we pass it a sequence of tokens? + +@interaction[#:eval my-eval + (define a-parsed-value + (parse (list (token 'LEFT-PAREN "(") + (token 'WORD "some") + (token 'LEFT-PAREN "[") + (token 'WORD "pig") + (token 'RIGHT-PAREN "]") + (token 'RIGHT-PAREN ")")))) + a-parsed-value] + +Wait... that looks suspiciously like a syntax object! +@interaction[#:eval my-eval +(syntax->datum a-parsed-value) +] + + +That's @racket[(some [pig])], essentially. + +What happens if we pass it a more substantial source of tokens? +@interaction[#:eval my-eval +@code:comment{tokenize: string -> (sequenceof token-struct?)} +@code:comment{Generate tokens from a string:} +(define (tokenize s) + (for/list ([str (regexp-match* #px"\\(|\\)|\\w+" s)]) + (match str + ["(" + (token 'LEFT-PAREN str)] + [")" + (token 'RIGHT-PAREN str)] + [else + (token 'WORD str)]))) + +@code:comment{For example:} +(define token-source (tokenize "(welcome (to (((ragg)) ())))")) +(define v (parse token-source)) +(syntax->datum v) +] + +Welcome to @tt{ragg}. + + + + + + + +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +@section{Introduction} + +@tt{ragg} is a parsing framework for Racket with the design goal to be easy +to use. It includes the following features: +@itemize[ + +@item{It provides a @litchar{#lang} for writing extended BNF grammars. +A module written in @litchar{#lang br/ragg} automatically generates a +parser. The output of this parser tries to follow +@link["http://en.wikipedia.org/wiki/How_to_Design_Programs"]{HTDP} +doctrine; the structure of the grammar informs the structure of the +Racket syntax objects it generates.} + +@item{The language uses a few conventions to simplify the expression of +grammars. The first rule in the grammar is automatically assumed to be the +starting production. Identifiers in uppercase are assumed to represent +terminal tokens, and are otherwise the names of nonterminals.} + +@item{Tokenizers can be developed completely independently of parsers. +@tt{ragg} takes a liberal view on tokens: they can be strings, +symbols, or instances constructed with @racket[token]. Furthermore, +tokens can optionally provide location: if tokens provide location, the +generated syntax objects will as well.} + +@item{The underlying parser should be able to handle ambiguous grammars.} + +@item{It should integrate with the rest of the Racket +@link["http://docs.racket-lang.org/guide/languages.html"]{language toolchain}.} + +] + +@subsection[#:tag "install-ragg"]{Installation} + +@itemize[ + +@item{@margin-note{At the time of this writing, Racket 5.3.2 is in +@link["http://pre.racket-lang.org/"]{pre-release}.} If you are using a version +of Racket > 5.3.1, then follow the instructions on the +@link["https://plt-etc.byu.edu:9004/info/ragg"]{PLaneT2 page}.} + + + +@item{For those who are using Racket <= 5.3.1, you can download the following PLT package: + +@nested[#:style 'inset]{@link["ragg.plt"]{ragg.plt} [md5sum: @compute-md5sum["ragg.plt" "ab79038b40e510a5cf13363825c4aef4"]] + + Last updated: @lookup-date["ragg.plt" "Wednesday, January 16th, 2013"] + } + +Once downloaded, either use DrRacket's package installation features +(@link["http://docs.racket-lang.org/drracket/Menus.html#(idx._(gentag._57._(lib._scribblings/drracket/drracket..scrbl)))"]{Install +PLT File...} under DrRacket's File menu), or use the command line: +@nested[#:style 'inset]{@tt{raco setup -A ragg.plt}}} + +] + + + +@subsection{Example: a small DSL for ASCII diagrams} + +@margin-note{This is a +@link["http://stackoverflow.com/questions/12345647/rewrite-this-script-by-designing-an-interpreter-in-racket"]{restatement +of a question on Stack Overflow}.} To motivate @tt{ragg}'s design, let's look +at the following toy problem: we'd like to define a language for +drawing simple ASCII diagrams. We'd like to be able write something like this: + +@nested[#:style 'inset]{ +@verbatim|{ +3 9 X; +6 3 b 3 X 3 b; +3 9 X; +}|} + +whose interpretation should generate the following picture: + +@nested[#:style 'inset]{ +@verbatim|{ +XXXXXXXXX +XXXXXXXXX +XXXXXXXXX + XXX + XXX + XXX + XXX + XXX + XXX +XXXXXXXXX +XXXXXXXXX +XXXXXXXXX +}|} + + + +@subsection{Syntax and semantics} +We're being very fast-and-loose with what we mean by the program above, so +let's try to nail down some meanings. Each line of the program has a semicolon +at the end, and describes the output of several @emph{rows} of the line +drawing. Let's look at two of the lines in the example: + +@itemize[ +@item{@litchar{3 9 X;}: ``Repeat the following 3 times: print @racket["X"] nine times, followed by +a newline.''} + +@item{@litchar{6 3 b 3 X 3 b;}: ``Repeat the following 6 times: print @racket[" "] three times, +followed by @racket["X"] three times, followed by @racket[" "] three times, followed by a newline.''} +] + +Then each line consists of a @emph{repeat} number, followed by pairs of +(number, character) @emph{chunks}. We will +assume here that the intent of the lowercased character @litchar{b} is to +represent the printing of a 1-character whitespace @racket[" "], and for other +uppercase letters to represent the printing of themselves. + +Once we have a better idea of the pieces of each line, we have a better chance +to capture that meaning in a formal notation. Once we have each instruction in +a structured format, we should be able to interpret it with a straighforward +case analysis. + +Here is a first pass at expressing the structure of these line-drawing +programs. + + +@subsection{Parsing the concrete syntax} +@filebox["simple-line-drawing.rkt"]{ +@verbatim|{ +#lang br/ragg +drawing: rows* +rows: repeat chunk+ ";" +repeat: INTEGER +chunk: INTEGER STRING +}| +} + +@margin-note{@secref{ragg-syntax} describes @tt{ragg}'s syntax in more detail.} +We write a @tt{ragg} program as an extended BNF grammar, where patterns can be: +@itemize[ +@item{the names of other rules (e.g. @racket[chunk])} +@item{literal and symbolic token names (e.g. @racket[";"], @racket[INTEGER])} +@item{quantified patterns (e.g. @litchar{+} to represent one-or-more repetitions)} +] +The result of a @tt{ragg} program is a module with a @racket[parse] function +that can parse tokens and produce a syntax object as a result. + +Let's exercise this function: +@interaction[#:eval my-eval +(require br/ragg/support) +@eval:alts[(require "simple-line-drawing.rkt") + (require br/ragg/examples/simple-line-drawing)] +(define stx + (parse (list (token 'INTEGER 6) + (token 'INTEGER 2) + (token 'STRING " ") + (token 'INTEGER 3) + (token 'STRING "X") + ";"))) +(syntax->datum stx) +] + +Tokens can either be: plain strings, symbols, or instances produced by the +@racket[token] function. (Plus a few more special cases, one in which we'll describe in a +moment.) + +Preferably, we want to attach each token with auxiliary source location +information. The more source location we can provide, the better, as the +syntax objects produced by @racket[parse] will incorporate them. + +Let's write a helper function, a @emph{lexer}, to help us construct tokens more +easily. The Racket standard library comes with a module called +@racketmodname[parser-tools/lex] which can help us write a position-sensitive +tokenizer: + +@interaction[#:eval my-eval +(require parser-tools/lex) +(define (tokenize ip) + (port-count-lines! ip) + (define my-lexer + (lexer-src-pos + [(repetition 1 +inf.0 numeric) + (token 'INTEGER (string->number lexeme))] + [upper-case + (token 'STRING lexeme)] + ["b" + (token 'STRING " ")] + [";" + (token ";" lexeme)] + [whitespace + (token 'WHITESPACE lexeme #:skip? #t)] + [(eof) + (void)])) + (define (next-token) (my-lexer ip)) + next-token) + +(define a-sample-input-port (open-input-string "6 2 b 3 X;")) +(define token-thunk (tokenize a-sample-input-port)) +@code:comment{Now we can pass token-thunk to the parser:} +(define another-stx (parse token-thunk)) +(syntax->datum another-stx) +@code:comment{The syntax object has location information:} +(syntax-line another-stx) +(syntax-column another-stx) +(syntax-span another-stx) +] + + +There are a few things to note from this lexer example: +@itemize[ + +@item{The @racket[parse] function can consume either sequences of tokens, or a +function that produces tokens. Both of these are considered sources of +tokens.} + +@item{As a special case for acceptable tokens, a token can also be an instance +of the @racket[position-token] structure of @racketmodname[parser-tools/lex], +in which case the token will try to derive its position from that of the +position-token.} + +@item{The @racket[parse] function will stop reading from a token source if any +token is @racket[void].} + +@item{The @racket[parse] function will skip over any token with the +@racket[#:skip?] attribute. Elements such as whitespace and comments will +often have @racket[#:skip?] set to @racket[#t].} + +] + + +@subsection{From parsing to interpretation} + +We now have a parser for programs written in this simple-line-drawing language. +Our parser will give us back syntax objects: +@interaction[#:eval my-eval +(define parsed-program + (parse (tokenize (open-input-string "3 9 X; 6 3 b 3 X 3 b; 3 9 X;")))) +(syntax->datum parsed-program) +] + +Moreover, we know that these syntax objects have a regular, predictable +structure. Their structure follows the grammar, so we know we'll be looking at +values of the form: + +@racketblock[ + (drawing (rows (repeat ) + (chunk ) ... ";") + ...) +] + +where @racket[drawing], @racket[rows], @racket[repeat], and @racket[chunk] +should be treated literally, and everything else will be numbers or strings. + + +Still, these syntax object values are just inert structures. How do we +interpret them, and make them @emph{print}? We did claim at the beginning of +this section that these syntax objects should be fairly easy to case-analyze +and interpret, so let's do it. + +@margin-note{This is a very quick-and-dirty treatment of @racket[syntax-parse]. +See the @racketmodname[syntax/parse] documentation for a gentler guide to its +features.} Racket provides a special form called @racket[syntax-parse] in the +@racketmodname[syntax/parse] library. @racket[syntax-parse] lets us do a +structural case-analysis on syntax objects: we provide it a set of patterns to +parse and actions to perform when those patterns match. + + +As a simple example, we can write a function that looks at a syntax object and +says @racket[#t] if it's the literal @racket[yes], and @racket[#f] otherwise: + +@interaction[#:eval my-eval +(require syntax/parse) +@code:comment{yes-syntax-object?: syntax-object -> boolean} +@code:comment{Returns true if the syntax-object is yes.} +(define (yes-syntax-object? stx) + (syntax-parse stx + [(~literal yes) + #t] + [else + #f])) +(yes-syntax-object? #'yes) +(yes-syntax-object? #'nooooooooooo) +] + +Here, we use @racket[~literal] to let @racket[syntax-parse] know that +@racket[yes] should show up literally in the syntax object. The patterns can +also have some structure to them, such as: +@racketblock[({~literal drawing} rows-stxs ...)] +which matches on syntax objects that begin, literally, with @racket[drawing], +followed by any number of rows (which are syntax objects too). + + +Now that we know a little bit more about @racket[syntax-parse], +we can use it to do a case analysis on the syntax +objects that our @racket[parse] function gives us. +We start by defining a function on syntax objects of the form @racket[(drawing +rows-stx ...)]. +@interaction[#:eval my-eval +(define (interpret-drawing drawing-stx) + (syntax-parse drawing-stx + [({~literal drawing} rows-stxs ...) + + (for ([rows-stx (syntax->list #'(rows-stxs ...))]) + (interpret-rows rows-stx))]))] + +When we encounter a syntax object with @racket[(drawing rows-stx +...)], then @racket[interpret-rows] each @racket[rows-stx]. + +@;The pattern we +@;express in @racket[syntax-parse] above marks what things should be treated +@;literally, and the @racket[...] is a a part of the pattern matching language +@;known by @racket[syntax-parse] that lets us match multiple instances of the +@;last pattern. + + +Let's define @racket[interpret-rows] now: +@interaction[#:eval my-eval +(define (interpret-rows rows-stx) + (syntax-parse rows-stx + [({~literal rows} + ({~literal repeat} repeat-number) + chunks ... ";") + + (for ([i (syntax-e #'repeat-number)]) + (for ([chunk-stx (syntax->list #'(chunks ...))]) + (interpret-chunk chunk-stx)) + (newline))]))] + +For a @racket[rows], we extract out the @racket[repeat-number] out of the +syntax object and use it as the range of the @racket[for] loop. The inner loop +walks across each @racket[chunk-stx] and calls @racket[interpret-chunk] on it. + + +Finally, we need to write a definition for @racket[interpret-chunk]. We want +it to extract out the @racket[chunk-size] and @racket[chunk-string] portions, +and print to standard output: + +@interaction[#:eval my-eval +(define (interpret-chunk chunk-stx) + (syntax-parse chunk-stx + [({~literal chunk} chunk-size chunk-string) + + (for ([k (syntax-e #'chunk-size)]) + (display (syntax-e #'chunk-string)))])) +] + + +@margin-note{Here are the definitions in a single file: +@link["examples/simple-line-drawing/interpret.rkt"]{interpret.rkt}.} +With these definitions in hand, now we can pass it syntax objects +that we construct directly by hand: + +@interaction[#:eval my-eval +(interpret-chunk #'(chunk 3 "X")) +(interpret-drawing #'(drawing (rows (repeat 5) (chunk 3 "X") ";"))) +] + +or we can pass it the result generated by our parser: +@interaction[#:eval my-eval +(define parsed-program + (parse (tokenize (open-input-string "3 9 X; 6 3 b 3 X 3 b; 3 9 X;")))) +(interpret-drawing parsed-program)] + +And now we've got an interpreter! + + +@subsection{From interpretation to compilation} + +@margin-note{For a gentler tutorial on writing @litchar{#lang} extensions, see: +@link["http://hashcollision.org/brainfudge"]{F*dging up a Racket}.} (Just as a +warning: the following material is slightly more advanced, but shows how +writing a compiler for the line-drawing language reuses the ideas for the +interpreter.) + +Wouldn't it be nice to be able to write something like: + +@nested[#:style 'inset]{ +@verbatim|{ +3 9 X; +6 3 b 3 X 3 b; +3 9 X; +}|} + +and have Racket automatically compile this down to something like this? +@racketblock[ +(for ([i 3]) + (for ([k 9]) (displayln "X")) + (newline)) + +(for ([i 6]) + (for ([k 3]) (displayln " ")) + (for ([k 3]) (displayln "X")) + (for ([k 3]) (displayln " ")) + (newline)) + +(for ([i 3]) + (for ([k 9]) (displayln "X")) + (newline)) +] + +Well, of course it won't work: we don't have a @litchar{#lang} line. + +Let's add one. + +@filebox["letter-i.rkt"]{ +@verbatim|{ +#lang br/ragg/examples/simple-line-drawing +3 9 X; +6 3 b 3 X 3 b; +3 9 X; +}| +} + +Now @filepath{letter-i.rkt} is a program. + + +How does this work? From the previous sections, we've seen how to take the +contents of a file and interpret it. What we want to do now is teach Racket +how to compile programs labeled with this @litchar{#lang} line. We'll do two +things: + +@itemize[ +@item{Tell Racket to use the @tt{ragg}-generated parser and lexer we defined +earlier whenever it sees a program written with +@litchar{#lang br/ragg/examples/simple-line-drawing}.} + +@item{Define transformation rules for @racket[drawing], @racket[rows], and + @racket[chunk] to rewrite these into standard Racket forms.} +] + +The second part, the writing of the transformation rules, will look very +similar to the definitions we wrote for the interpreter, but the transformation +will happen at compile-time. (We @emph{could} just resort to simply calling +into the interpreter we just wrote up, but this section is meant to show that +compilation is also viable.) + + +We do the first part by defining a @emph{module reader}: a +@link["http://docs.racket-lang.org/guide/syntax_module-reader.html"]{module +reader} tells Racket how to parse and compile a file. Whenever Racket sees a +@litchar{#lang }, it looks for a corresponding module reader in +@filepath{/lang/reader}. + +Here's the definition for +@filepath{br/ragg/examples/simple-line-drawing/lang/reader.rkt}: + +@filebox["br/ragg/examples/simple-line-drawing/lang/reader.rkt"]{ +@codeblock|{ +#lang s-exp syntax/module-reader +br/ragg/examples/simple-line-drawing/semantics +#:read my-read +#:read-syntax my-read-syntax +#:whole-body-readers? #t + +(require br/ragg/examples/simple-line-drawing/lexer + br/ragg/examples/simple-line-drawing/grammar) + +(define (my-read in) + (syntax->datum (my-read-syntax #f in))) + +(define (my-read-syntax src ip) + (list (parse src (tokenize ip)))) +}| +} + +We use a helper module @racketmodname[syntax/module-reader], which provides +utilities for creating a module reader. It uses the lexer and +@tt{ragg}-generated parser we defined earlier (saved into +@link["http://hashcollision.org/ragg/examples/simple-line-drawing/lexer.rkt"]{lexer.rkt} +and +@link["http://hashcollision.org/ragg/examples/simple-line-drawing/grammar.rkt"]{grammar.rkt} +modules), and also tells Racket that it should compile the forms in the syntax +object using a module called @filepath{semantics.rkt}. + +@margin-note{For a systematic treatment on capturing the semantics of +a language, see @link["http://cs.brown.edu/~sk/Publications/Books/ProgLangs/"]{Programming Languages: Application and +Interpretation}.} + +Let's look into @filepath{semantics.rkt} and see what's involved in +compilation: +@filebox["br/ragg/examples/simple-line-drawing/semantics.rkt"]{ +@codeblock|{ +#lang racket/base +(require (for-syntax racket/base syntax/parse)) + +(provide #%module-begin + ;; We reuse Racket's treatment of raw datums, specifically + ;; for strings and numbers: + #%datum + + ;; And otherwise, we provide definitions of these three forms. + ;; During compiliation, Racket uses these definitions to + ;; rewrite into for loops, displays, and newlines. + drawing rows chunk) + +;; Define a few compile-time functions to do the syntax rewriting: +(begin-for-syntax + (define (compile-drawing drawing-stx) + (syntax-parse drawing-stx + [({~literal drawing} rows-stxs ...) + + (syntax/loc drawing-stx + (begin rows-stxs ...))])) + + (define (compile-rows rows-stx) + (syntax-parse rows-stx + [({~literal rows} + ({~literal repeat} repeat-number) + chunks ... + ";") + + (syntax/loc rows-stx + (for ([i repeat-number]) + chunks ... + (newline)))])) + + (define (compile-chunk chunk-stx) + (syntax-parse chunk-stx + [({~literal chunk} chunk-size chunk-string) + + (syntax/loc chunk-stx + (for ([k chunk-size]) + (display chunk-string)))]))) + + +;; Wire up the use of "drawing", "rows", and "chunk" to these +;; transformers: +(define-syntax drawing compile-drawing) +(define-syntax rows compile-rows) +(define-syntax chunk compile-chunk) +}| +} + +The semantics hold definitions for @racket[compile-drawing], +@racket[compile-rows], and @racket[compile-chunk], similar to what we had for +interpretation with @racket[interpret-drawing], @racket[interpret-rows], and +@racket[interpret-chunk]. However, compilation is not the same as +interpretation: each definition does not immediately execute the act of +drawing, but rather returns a syntax object whose evaluation will do the actual +work. + +There are a few things to note: + +@itemize[ + +@item{@tt{ragg}'s native data structure is the syntax object because the +majority of Racket's language-processing infrastructure knows how to read and +write this structured value.} + + +@item{ +@margin-note{By the way, we can just as easily rewrite the semantics so that +@racket[compile-rows] does explicitly call @racket[compile-chunk]. Often, +though, it's easier to write the transformation functions in this piecemeal way +and depend on the Racket macro expansion system to do the rewriting as it +encounters each of the forms.} +Unlike in interpretation, @racket[compile-rows] doesn't +compile each chunk by directly calling @racket[compile-chunk]. Rather, it +depends on the Racket macro expander to call each @racket[compile-XXX] function +as it encounters a @racket[drawing], @racket[rows], or @racket[chunk] in the +parsed value. The three statements at the bottom of @filepath{semantics.rkt} inform +the macro expansion system to do this: + +@racketblock[ +(define-syntax drawing compile-drawing) +(define-syntax rows compile-rows) +(define-syntax chunk compile-chunk) +]} +] + + +Altogether, @tt{ragg}'s intent is to be a parser generator generator for Racket +that's easy and fun to use. It's meant to fit naturally with the other tools +in the Racket language toolchain. Hopefully, it will reduce the friction in +making new languages with alternative concrete syntaxes. + +The rest of this document describes the @tt{ragg} language and the parsers it +generates. + + +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +@section{The language} + +@subsection[#:tag "ragg-syntax"]{Syntax and terminology} +A program in the @tt{ragg} language consists of the language line +@litchar{#lang br/ragg}, followed by a collection of @tech{rule}s and +@tech{line comment}s. + +A @deftech{rule} is a sequence consisting of: a @tech{rule identifier}, a colon +@litchar{":"}, and a @tech{pattern}. + +A @deftech{rule identifier} is an @tech{identifier} that is not in upper case. + +A @deftech{token identifier} is an @tech{identifier} that is in upper case. + +An @deftech{identifier} is a character sequence of letters, numbers, and +characters in @racket["-.!$%&/<=>?^_~@"]. It must not contain +@litchar{*} or @litchar{+}, as those characters are used to denote +quantification. + + +A @deftech{pattern} is one of the following: +@itemize[ +@item{an implicit sequence of @tech{pattern}s separated by whitespace} +@item{a terminal: either a literal string or a @tech{token identifier}} +@item{a @tech{rule identifier}} +@item{a @deftech{choice pattern}: a sequence of @tech{pattern}s delimited with @litchar{|} characters.} +@item{a @deftech{quantifed pattern}: a @tech{pattern} followed by either @litchar{*} (``zero or more'') or @litchar{+} (``one or more'')} +@item{an @deftech{optional pattern}: a @tech{pattern} surrounded by @litchar{[} and @litchar{]}} +@item{an explicit sequence: a @tech{pattern} surrounded by @litchar{(} and @litchar{)}}] + +A @deftech{line comment} begins with either @litchar{#} or @litchar{;} and +continues till the end of the line. + + +For example, in the following program: +@nested[#:style 'inset +@verbatim|{ +#lang br/ragg +;; A parser for a silly language +sentence: verb optional-adjective object +verb: greeting +optional-adjective: ["happy" | "frumpy"] +greeting: "hello" | "hola" | "aloha" +object: "world" | WORLD +}|] + +the elements @tt{sentence}, @tt{verb}, @tt{greeting}, and @tt{object} are rule +identifiers. The first rule, @litchar{sentence: verb optional-adjective +object}, is a rule whose right side is an implicit pattern sequence of three +sub-patterns. The uppercased @tt{WORLD} is a token identifier. The fourth rule in the program associates @tt{greeting} with a @tech{choice pattern}. + + + +More examples: +@itemize[ + +@item{A +@link["http://hashcollision.org/ragg/examples/01-equal.rkt"]{BNF} for binary +strings that contain an equal number of zeros and ones. +@verbatim|{ +#lang br/ragg +equal: [zero one | one zero] ;; equal number of "0"s and "1"s. +zero: "0" equal | equal "0" ;; has an extra "0" in it. +one: "1" equal | equal "1" ;; has an extra "1" in it. +}| +} + +@item{A @link["http://hashcollision.org/ragg/examples/baby-json.rkt"]{BNF} for +@link["http://www.json.org/"]{JSON}-like structures. +@verbatim|{ +#lang br/ragg +json: number | string + | array | object +number: NUMBER +string: STRING +array: "[" [json ("," json)*] "]" +object: "{" [kvpair ("," kvpair)*] "}" +kvpair: ID ":" json +}| +} +] + +The @link["https://github.com/dyoo/ragg"]{ragg github source repository} +includes +@link["https://github.com/dyoo/ragg/tree/master/ragg/examples"]{several more +examples}. + + + +@subsection{Syntax errors} + +Besides the basic syntax errors that can occur with a malformed grammar, there +are a few other classes of situations that @litchar{#lang br/ragg} will consider +as syntax errors. + +@tt{ragg} will raise a syntax error if the grammar: +@itemize[ +@item{doesn't have any rules.} + +@item{has a rule with the same left hand side as any other rule.} + +@item{refers to rules that have not been defined. e.g. the +following program: +@nested[#:style 'code-inset +@verbatim|{ +#lang br/ragg +foo: [bar] +}| +] +should raise an error because @tt{bar} has not been defined, even though +@tt{foo} refers to it in an @tech{optional pattern}.} + + +@item{uses the token name @racket[EOF]; the end-of-file token type is reserved +for internal use by @tt{ragg}.} + + +@item{contains a rule that has no finite derivation. e.g. the following +program: +@nested[#:style 'code-inset +@verbatim|{ +#lang br/ragg +infinite-a: "a" infinite-a +}| +] +should raise an error because no finite sequence of tokens will satisfy +@tt{infinite-a}.} + +] + +Otherwise, @tt{ragg} should be fairly tolerant and permit even ambiguous +grammars. + +@subsection{Semantics} +@declare-exporting[br/ragg/examples/nested-word-list] + +A program written in @litchar{#lang br/ragg} produces a module that provides a few +bindings. The most important of these is @racket[parse]: + +@defproc[(parse [source any/c #f] + [token-source (or/c (sequenceof token) + (-> token))]) + syntax?]{ + +Parses the sequence of @tech{tokens} according to the rules in the grammar, using the +first rule as the start production. The parse must completely consume +@racket[token-source]. + +The @deftech{token source} can either be a sequence, or a 0-arity function that +produces @tech{tokens}. + +A @deftech{token} in @tt{ragg} can be any of the following values: +@itemize[ +@item{a string} +@item{a symbol} +@item{an instance produced by @racket[token]} +@item{an instance produced by the token constructors of @racketmodname[parser-tools/lex]} +@item{an instance of @racketmodname[parser-tools/lex]'s @racket[position-token] whose + @racket[position-token-token] is a @tech{token}.} +] + +A token whose type is either @racket[void] or @racket['EOF] terminates the +source. + + +If @racket[parse] succeeds, it will return a structured syntax object. The +structure of the syntax object follows the overall structure of the rules in +the BNF. For each rule @racket[r] and its associated pattern @racket[p], +@racket[parse] generates a syntax object @racket[#'(r p-value)] where +@racket[p-value]'s structure follows a case analysis on @racket[p]: + +@itemize[ +@item{For implicit and explicit sequences of @tech{pattern}s @racket[p1], + @racket[p2], ..., the corresponding values, spliced into the + structure.} +@item{For terminals, the value associated to the token.} +@item{For @tech{rule identifier}s: the associated parse value for the rule.} +@item{For @tech{choice pattern}s: the associated parse value for one of the matching subpatterns.} +@item{For @tech{quantifed pattern}s and @tech{optional pattern}s: the corresponding values, spliced into the structure.} +] + +Consequently, it's only the presence of @tech{rule identifier}s in a rule's +pattern that informs the parser to introduces nested structure into the syntax +object. + + +If the grammar has ambiguity, @tt{ragg} will choose and return a parse, though +it does not guarantee which one it chooses. + + +If the parse cannot be performed successfully, or if a token in the +@racket[token-source] uses a type that isn't mentioned in the grammar, then +@racket[parse] raises an instance of @racket[exn:fail:parsing].} + + + +It's often convenient to extract a parser for other non-terminal rules in the +grammar, and not just for the first rule. A @tt{ragg}-generated module also +provides a form called @racket[make-rule-parser] to extract a parser for the +other non-terminals: + +@defform[#:id make-rule-parser + (make-rule-parser name)]{ +Constructs a parser for the @racket[name] of one of the non-terminals +in the grammar. + +For example, given the @tt{ragg} program +@filepath{simple-arithmetic-grammar.rkt}: +@filebox["simple-arithmetic-grammar.rkt"]{ +@verbatim|{ +#lang br/ragg +expr : term ('+' term)* +term : factor ('*' factor)* +factor : INT +}| +} +the following interaction shows how to extract a parser for @racket[term]s. +@interaction[#:eval my-eval +@eval:alts[(require "simple-arithmetic-grammar.rkt") + (require br/ragg/examples/simple-arithmetic-grammar)] +(define term-parse (make-rule-parser term)) +(define tokens (list (token 'INT 3) + "*" + (token 'INT 4))) +(syntax->datum (parse tokens)) +(syntax->datum (term-parse tokens)) + +(define another-token-sequence + (list (token 'INT 1) "+" (token 'INT 2) + "*" (token 'INT 3))) +(syntax->datum (parse another-token-sequence)) +@code:comment{Note that term-parse will break on another-token-sequence} +@code:comment{as it does not know what to do with the "+"} +(term-parse another-token-sequence) +] + +} + + +Finally, the module provides a set of all the used token types in the grammar +in @racket[all-token-types]: +@defthing[all-token-types (setof symbol?)]{ +A set of all the token types used in a grammar. + +For example: +@interaction[#:eval my-eval +@eval:alts[(require "simple-arithmetic-grammar.rkt") + (require br/ragg/examples/simple-arithmetic-grammar)] +all-token-types +] + +} + + + + + +@section{Support API} + +@defmodule[br/ragg/support] + +The @racketmodname[br/ragg/support] module provides functions to interact with +@tt{ragg} programs. The most useful is the @racket[token] function, which +produces tokens to be parsed. + +@defproc[(token [type (or/c string? symbol?)] + [val any/c #f] + [#:line line (or/c positive-integer? #f) #f] + [#:column column (or/c natural-number? #f) #f] + [#:offset offset (or/c positive-integer? #f) #f] + [#:span span (or/c natural-number? #f) #f] + [#:skip? skip? boolean? #f] + ) + token-struct?]{ +Creates instances of @racket[token-struct]s. + +The syntax objects produced by a parse will inject the value @racket[val] in +place of the token name in the grammar. + +If @racket[#:skip?] is true, then the parser will skip over it during a +parse.} + + +@defstruct[token-struct ([type symbol?] + [val any/c] + [offset (or/c positive-integer? #f)] + [line (or/c natural-number? #f)] + [column (or/c positive-integer? #f)] + [span (or/c natural-number? #f)] + [skip? boolean?]) + #:transparent]{ +The token structure type. + +Rather than directly using the @racket[token-struct] constructor, please use +the helper function @racket[token] to construct instances. +} + + + + +@defstruct[(exn:fail:parsing exn:fail) + ([message string?] + [continuation-marks continuation-mark-set?] + [srclocs (listof srcloc?)])]{ +The exception raised when parsing fails. + +@racket[exn:fail:parsing] implements Racket's @racket[prop:exn:srcloc] +property, so if this exception reaches DrRacket's default error handler, +DrRacket should highlight the offending locations in the source.} + + + + + + +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +@section{Caveats and things to do} + +Here are a few caveats and future aims for @tt{ragg}. + +@itemize[ + +@item{@tt{ragg} doesn't currently have a good story about operator precedence. +Future versions of @tt{ragg} will support the specification of operator +precedence to deal with grammar ambiguity, probably by extending the BNF +grammar rules in @litchar{#lang br/ragg} with keyword arguments.} + + +@item{I currently depend on the lexer framework provided by +@racketmodname[parser-tools/lex], which has a steeper learning curve than I'd +like. A future version of @tt{ragg} will probably try to provide a nicer set +of tools for defining lexers.} + + +@item{The underlying parsing engine (an Earley-style parser) has not been fully +optimized, so it may exhibit degenerate parse times. A future version of +@tt{ragg} will guarantee @math{O(n^3)} time bounds so that at the very least, +parses will be polynomial-time.} + + +@item{@tt{ragg} doesn't yet have a good story on dealing with parser error +recovery. If a parse fails, it tries to provide the source location, but does +little else.} + +@item{@tt{ragg} is slightly misnamed: what it really builds is a concrete +syntax tree rather than an abstract syntax tree. A future version of @tt{ragg} +will probably support annotations on patterns so that they can be omitted or +transformed in the parser output.} + +] + + +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +@;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +@section{Miscellaneous and thanks} + +Thanks to Matthew Flatt for pointing me to @racket[cfg-parser] from the +@racket[cfg-parser] library. Joe Politz gave me good advice and +feedback. Also, he suggested the name ``ragg''. Other alternatives I'd been +considering were ``autogrammar'' or ``chompy''. Thankfully, he is a better +Namer than me. Daniel Patterson provided feedback that led to +@racket[make-rule-parser]. Robby Findler and Guillaume Marceau provided +steadfast suggestions to look into other parsing frameworks like +@link["http://en.wikipedia.org/wiki/Syntax_Definition_Formalism"]{SDF} and +@link["http://sablecc.org/"]{SableCC}. Special thanks to Shriram +Krishnamurthi, who convinced me that other people might find this package +useful. + + +@close-eval[my-eval] diff --git a/beautiful-racket-ragg/br/ragg/rules/lexer.rkt b/beautiful-racket-ragg/br/ragg/rules/lexer.rkt new file mode 100755 index 0000000..8022b65 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/rules/lexer.rkt @@ -0,0 +1,104 @@ +#lang racket/base +(require parser-tools/lex + (prefix-in : parser-tools/lex-sre) + "parser.rkt" + "rule-structs.rkt") + +(provide lex/1 tokenize) + +;; A newline can be any one of the following. +(define-lex-abbrev NL (:or "\r\n" "\r" "\n")) + +;; Slightly modified from the read.rkt example in parser-tools, treating +;; +, :, and * as reserved, non-identifier characters. +(define-lex-abbrevs + [letter (:or (:/ "a" "z") (:/ #\A #\Z))] + [digit (:/ #\0 #\9)] + [id-char (:or letter digit (char-set "-.!$%&/<=>?^_~@"))] + ) + +(define-lex-abbrev id + (:& (complement (:+ digit)) + (:+ id-char))) + + + + + +(define lex/1 + (lexer-src-pos + [(:: "'" + (:* (:or "\\'" (:~ "'" "\\"))) + "'") + (token-LIT lexeme)] + [(:: "\"" + (:* (:or "\\\"" (:~ "\"" "\\"))) + "\"") + (token-LIT lexeme)] + ["(" + (token-LPAREN lexeme)] + ["[" + (token-LBRACKET lexeme)] + [")" + (token-RPAREN lexeme)] + ["]" + (token-RBRACKET lexeme)] + ["|" + (token-PIPE lexeme)] + [(:or "+" "*") + (token-REPEAT lexeme)] + [whitespace + ;; Skip whitespace + (return-without-pos (lex/1 input-port))] + ;; Skip comments up to end of line + [(:: (:or "#" ";") + (complement (:: (:* any-char) NL (:* any-char))) + (:or NL "")) + ;; Skip comments up to end of line. + (return-without-pos (lex/1 input-port))] + [(eof) + (token-EOF lexeme)] + [(:: id (:* whitespace) ":") + (token-RULE_HEAD lexeme)] + [id + (token-ID lexeme)] + + ;; We call the error handler for everything else: + [(:: any-char) + (let-values ([(rest-of-text end-pos-2) + (lex-nonwhitespace input-port)]) + ((current-parser-error-handler) + #f + 'error + (string-append lexeme rest-of-text) + (position->pos start-pos) + (position->pos end-pos-2)))])) + + +;; This is the helper for the error production. +(define lex-nonwhitespace + (lexer + [(:+ (char-complement whitespace)) + (values lexeme end-pos)] + [any-char + (values lexeme end-pos)] + [(eof) + (values "" end-pos)])) + + + +;; position->pos: position -> pos +;; Coerses position structures from parser-tools/lex to our own pos structures. +(define (position->pos a-pos) + (pos (position-offset a-pos) + (position-line a-pos) + (position-col a-pos))) + + + +;; tokenize: input-port -> (-> token) +(define (tokenize ip + #:source [source (object-name ip)]) + (lambda () + (parameterize ([file-path source]) + (lex/1 ip)))) diff --git a/beautiful-racket-ragg/br/ragg/rules/parser.rkt b/beautiful-racket-ragg/br/ragg/rules/parser.rkt new file mode 100755 index 0000000..27a5822 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/rules/parser.rkt @@ -0,0 +1,219 @@ +#lang racket/base +(require parser-tools/yacc + parser-tools/lex + racket/list + racket/match + "rule-structs.rkt") + +;; A parser for grammars. + +(provide tokens + token-LPAREN + token-RPAREN + token-LBRACKET + token-RBRACKET + token-PIPE + token-REPEAT + token-RULE_HEAD + token-ID + token-LIT + token-EOF + grammar-parser + + current-source + current-parser-error-handler + + [struct-out rule] + [struct-out lhs-id] + [struct-out pattern] + [struct-out pattern-id] + [struct-out pattern-lit] + [struct-out pattern-token] + [struct-out pattern-choice] + [struct-out pattern-repeat] + [struct-out pattern-maybe] + [struct-out pattern-seq]) + +(define-tokens tokens (LPAREN + RPAREN + LBRACKET + RBRACKET + PIPE + REPEAT + RULE_HEAD + ID + LIT + EOF)) + +;; grammar-parser: (-> token) -> (listof rule) +(define grammar-parser + (parser + (tokens tokens) + (src-pos) + (start rules) + (end EOF) + + (grammar + [rules + [(rules*) $1]] + + [rules* + [(rule rules*) + (cons $1 $2)] + [() + '()]] + + ;; I have a separate token type for rule identifiers to avoid the + ;; shift/reduce conflict that happens with the implicit sequencing + ;; of top-level rules. i.e. the parser can't currently tell, when + ;; it sees an ID, if it should shift or reduce to a new rule. + [rule + [(RULE_HEAD pattern) + (begin + (define trimmed (regexp-replace #px"\\s*:$" $1 "")) + (rule (position->pos $1-start-pos) + (position->pos $2-end-pos) + (lhs-id (position->pos $1-start-pos) + (pos (+ (position-offset $1-start-pos) + (string-length trimmed)) + (position-line $1-start-pos) + (position-col $1-start-pos)) + trimmed) + $2))]] + + [pattern + [(implicit-pattern-sequence PIPE pattern) + (if (pattern-choice? $3) + (pattern-choice (position->pos $1-start-pos) + (position->pos $3-end-pos) + (cons $1 (pattern-choice-vals $3))) + (pattern-choice (position->pos $1-start-pos) + (position->pos $3-end-pos) + (list $1 $3)))] + [(implicit-pattern-sequence) + $1]] + + [implicit-pattern-sequence + [(repeatable-pattern implicit-pattern-sequence) + (if (pattern-seq? $2) + (pattern-seq (position->pos $1-start-pos) + (position->pos $2-end-pos) + (cons $1 (pattern-seq-vals $2))) + (pattern-seq (position->pos $1-start-pos) + (position->pos $2-end-pos) + (list $1 $2)))] + [(repeatable-pattern) + $1]] + + [repeatable-pattern + [(atomic-pattern REPEAT) + (cond [(string=? $2 "*") + (pattern-repeat (position->pos $1-start-pos) + (position->pos $2-end-pos) + 0 $1)] + [(string=? $2 "+") + (pattern-repeat (position->pos $1-start-pos) + (position->pos $2-end-pos) + 1 $1)] + [else + (error 'grammar-parse "unknown repetition operator ~e" $2)])] + [(atomic-pattern) + $1]] + + [atomic-pattern + [(LIT) + (pattern-lit (position->pos $1-start-pos) + (position->pos $1-end-pos) + (substring $1 1 (sub1 (string-length $1))))] + + [(ID) + (if (token-id? $1) + (pattern-token (position->pos $1-start-pos) + (position->pos $1-end-pos) + $1) + (pattern-id (position->pos $1-start-pos) + (position->pos $1-end-pos) + $1))] + + [(LBRACKET pattern RBRACKET) + (pattern-maybe (position->pos $1-start-pos) + (position->pos $3-end-pos) + $2)] + + [(LPAREN pattern RPAREN) + (relocate-pattern $2 (position->pos $1-start-pos) (position->pos $3-end-pos))]]) + + + (error (lambda (tok-ok? tok-name tok-value start-pos end-pos) + ((current-parser-error-handler) tok-ok? tok-name tok-value (position->pos start-pos) (position->pos end-pos)))))) + + +;; relocate-pattern: pattern -> pattern +;; Rewrites the pattern's start and end pos accordingly. +(define (relocate-pattern a-pat start-pos end-pos) + (match a-pat + [(pattern-id _ _ v) + (pattern-id start-pos end-pos v)] + [(pattern-token _ _ v) + (pattern-token start-pos end-pos v)] + [(pattern-lit _ _ v) + (pattern-lit start-pos end-pos v)] + [(pattern-choice _ _ vs) + (pattern-choice start-pos end-pos vs)] + [(pattern-repeat _ _ m v) + (pattern-repeat start-pos end-pos m v)] + [(pattern-maybe _ _ v) + (pattern-maybe start-pos end-pos v)] + [(pattern-seq _ _ vs) + (pattern-seq start-pos end-pos vs)] + [else + (error 'relocate-pattern "Internal error when relocating ~s\n" a-pat)])) + + +; token-id: string -> boolean +;; Produces true if the id we see should be treated as the name of a token. +;; By convention, tokens are all upper-cased. +(define (token-id? id) + (string=? (string-upcase id) + id)) + + + +;; position->pos: position -> pos +;; Coerses position structures from parser-tools/lex to our own pos structures. +(define (position->pos a-pos) + (pos (position-offset a-pos) + (position-line a-pos) + (position-col a-pos))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; During parsing, we should define the source of the input. +(define current-source (make-parameter #f)) + + +;; When bad things happen, we need to emit errors with source location. +(struct exn:fail:parse-grammar exn:fail (srclocs) + #:transparent + #:property prop:exn:srclocs (lambda (instance) + (exn:fail:parse-grammar-srclocs instance))) + +(define current-parser-error-handler + (make-parameter + (lambda (tok-ok? tok-name tok-value start-pos end-pos) + (raise (exn:fail:parse-grammar + (format "Error while parsing grammar near: ~e [line=~a, column=~a, position=~a]" + tok-value + (pos-line start-pos) + (pos-col start-pos) + (pos-offset start-pos)) + (current-continuation-marks) + (list (srcloc (current-source) + (pos-line start-pos) + (pos-col start-pos) + (pos-offset start-pos) + (if (and (number? (pos-offset end-pos)) + (number? (pos-offset start-pos))) + (- (pos-offset end-pos) + (pos-offset start-pos)) + #f)))))))) diff --git a/beautiful-racket-ragg/br/ragg/rules/rule-structs.rkt b/beautiful-racket-ragg/br/ragg/rules/rule-structs.rkt new file mode 100755 index 0000000..28dfcef --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/rules/rule-structs.rkt @@ -0,0 +1,47 @@ +#lang racket/base +(provide (all-defined-out)) + + +;; We keep our own position structure because parser-tools/lex's position +;; structure is non-transparent, hence highly resistant to unit testing. +(struct pos (offset line col) + #:transparent) + + + +(struct rule (start end lhs pattern) + #:transparent) + +(struct lhs-id (start end val) + #:transparent) + + +;; A pattern can be one of the following: +(struct pattern (start end) + #:transparent) + +(struct pattern-id pattern (val) + #:transparent) + + +;; Token structure to be defined by the user +(struct pattern-token pattern (val) + #:transparent) + +;; Token structure defined as the literal string to be matched. +(struct pattern-lit pattern (val) + #:transparent) + +(struct pattern-choice pattern (vals) + #:transparent) + +(struct pattern-repeat pattern (min ;; either 0 or 1 + val) + #:transparent) + +(struct pattern-maybe pattern (val) + #:transparent) + +(struct pattern-seq pattern (vals) + #:transparent) + diff --git a/beautiful-racket-ragg/br/ragg/rules/runtime.rkt b/beautiful-racket-ragg/br/ragg/rules/runtime.rkt new file mode 100755 index 0000000..45ec14a --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/rules/runtime.rkt @@ -0,0 +1,34 @@ +#lang racket/base +(require parser-tools/lex) + +(provide (all-defined-out)) + +;; During parsing, we should define the source of the input. +(define current-source (make-parameter #f)) + + +;; When bad things happen, we need to emit errors with source location. +(struct exn:fail:parse-grammar exn:fail (srclocs) + #:transparent + #:property prop:exn:srclocs (lambda (instance) + (exn:fail:parse-grammar-srclocs instance))) + +(define current-parser-error-handler + (make-parameter + (lambda (tok-ok? tok-name tok-value start-pos end-pos) + (raise (exn:fail:parse-grammar + (format "Error while parsing grammar near: ~e [line=~a, column~a, position=~a]" + tok-value + (position-line start-pos) + (position-col start-pos) + (position-offset start-pos)) + (current-continuation-marks) + (list (srcloc (current-source) + (position-line start-pos) + (position-col start-pos) + (position-offset start-pos) + (if (and (number? (position-offset end-pos)) + (number? (position-offset start-pos))) + (- (position-offset end-pos) + (position-offset start-pos)) + #f)))))))) diff --git a/beautiful-racket-ragg/br/ragg/rules/stx-types.rkt b/beautiful-racket-ragg/br/ragg/rules/stx-types.rkt new file mode 100755 index 0000000..e0ac70a --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/rules/stx-types.rkt @@ -0,0 +1,16 @@ +#lang racket/base +(provide (all-defined-out)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; These are just here to provide bindings for Check Syntax. +;; Otherwise, we should never hit these, as the toplevel rules-codegen +;; should eliminate all uses of these if it does the right thing. +(define (rules stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (rule stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (id stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (lit stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (token stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (choice stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (repeat stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (maybe stx) (raise-syntax-error #f "Used out of context of rules" stx)) +(define (seq stx) (raise-syntax-error #f "Used out of context of rules" stx)) \ No newline at end of file diff --git a/beautiful-racket-ragg/br/ragg/rules/stx.rkt b/beautiful-racket-ragg/br/ragg/rules/stx.rkt new file mode 100755 index 0000000..013fd50 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/rules/stx.rkt @@ -0,0 +1,76 @@ +#lang racket/base + +(require "rule-structs.rkt" + parser-tools/lex + racket/match + syntax/strip-context) + +(provide rules->stx) + +;; Given a sequence of rules, we translate these to syntax objects. + +;; rules->stx: (listof rule) -> syntax +(define (rules->stx source rules #:original-stx [original-stx #f]) + (define rule-stxs + (map (lambda (stx) (rule->stx source stx)) + rules)) + (datum->syntax #f + `(rules ,@rule-stxs) + original-stx)) + + +(define (rule->stx source a-rule) + (define id-stx + (datum->syntax #f + (string->symbol (lhs-id-val (rule-lhs a-rule))) + (list source + (pos-line (lhs-id-start (rule-lhs a-rule))) + (pos-col (lhs-id-start (rule-lhs a-rule))) + (pos-offset (lhs-id-start (rule-lhs a-rule))) + (if (and (number? (pos-offset (lhs-id-start (rule-lhs a-rule)))) + (number? (pos-offset (lhs-id-end (rule-lhs a-rule))))) + (- (pos-offset (lhs-id-end (rule-lhs a-rule))) + (pos-offset (lhs-id-start (rule-lhs a-rule)))) + #f)))) + (define pattern-stx (pattern->stx source (rule-pattern a-rule))) + (define line (pos-line (rule-start a-rule))) + (define column (pos-col (rule-start a-rule))) + (define position (pos-offset (rule-start a-rule))) + (define span (if (and (number? (pos-offset (rule-start a-rule))) + (number? (pos-offset (rule-end a-rule)))) + (- (pos-offset (rule-end a-rule)) + (pos-offset (rule-start a-rule))) + #f)) + (datum->syntax #f + `(rule ,id-stx ,pattern-stx) + (list source line column position span))) + +(define (pattern->stx source a-pattern) + (define recur (lambda (s) (pattern->stx source s))) + + (define line (pos-line (pattern-start a-pattern))) + (define column (pos-col (pattern-start a-pattern))) + (define position (pos-offset (pattern-start a-pattern))) + (define span (if (and (number? (pos-offset (pattern-start a-pattern))) + (number? (pos-offset (pattern-end a-pattern)))) + (- (pos-offset (pattern-end a-pattern)) + (pos-offset (pattern-start a-pattern))) + #f)) + (define source-location (list source line column position span)) + (datum->syntax #f + (match a-pattern + [(struct pattern-id (start end val)) + `(id ,(datum->syntax #f (string->symbol val) source-location))] + [(struct pattern-lit (start end val)) + `(lit ,(datum->syntax #f val source-location))] + [(struct pattern-token (start end val)) + `(token ,(datum->syntax #f (string->symbol val) source-location))] + [(struct pattern-choice (start end vals)) + `(choice ,@(map recur vals))] + [(struct pattern-repeat (start end min val)) + `(repeat ,min ,(recur val))] + [(struct pattern-maybe (start end val)) + `(maybe ,(recur val))] + [(struct pattern-seq (start end vals)) + `(seq ,@(map recur vals))]) + source-location)) diff --git a/beautiful-racket-ragg/br/ragg/support.rkt b/beautiful-racket-ragg/br/ragg/support.rkt new file mode 100755 index 0000000..e63d868 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/support.rkt @@ -0,0 +1,37 @@ +#lang racket/base + +(provide [struct-out token-struct] + token + [struct-out exn:fail:parsing]) + +(struct token-struct (type val offset line column span skip?) + #:transparent) + + +;; Token constructor. +;; This is intended to be a general token structure constructor that's nice +;; to work with. +;; It should cooperate with the tokenizers constructed with make-permissive-tokenizer. +(define token + (lambda (type ;; (U symbol string) + [val #f] ;; any + #:offset [offset #f] ;; (U #f number) + #:line [line #f] ;; (U #f number) + #:column [column #f] ;; (U #f number) + #:span [span #f] ;; boolean + #:skip? [skip? #f]) + (token-struct (if (string? type) (string->symbol type) type) + val + offset line column span skip?))) + + +;; When bad things happen, we need to emit errors with source location. +(struct exn:fail:parsing exn:fail (srclocs) + #:transparent + #:property prop:exn:srclocs (lambda (instance) + (exn:fail:parsing-srclocs instance))) + + + + + diff --git a/beautiful-racket-ragg/br/ragg/test/exercise-python-grammar.rkt b/beautiful-racket-ragg/br/ragg/test/exercise-python-grammar.rkt new file mode 100755 index 0000000..361c2ba --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/exercise-python-grammar.rkt @@ -0,0 +1,136 @@ +#lang racket +(require br/ragg/examples/python-grammar + br/ragg/support + python-tokenizer + racket/generator + parser-tools/lex + racket/match + rackunit) + + + +(define (kludge-nl-dedent-endmarker toks) + ;; Kludge! If the last three tokens in the stream are: + ;; NL, DEDENT, ENDMARKER, + ;; then switch them around to: + ;; DEDENT, NEWLINE, ENDMARKER + ;; The Python tokenizer is doing something funny here, and I think + ;; it's a bug in tokenize.py (and, transitively, the python-tokenizer + ;; PLaneT package). + (cond [(< (length toks) 3) + toks] + [else + (define last-three-toks (take-right toks 3)) + (match last-three-toks + [(list (list 'NL nl-text start-loc end-loc rest-str) + (and t2 (list 'DEDENT _ ...)) + (and t3 (list 'ENDMARKER _ ...))) + (append (drop-right toks 3) + (list t2 + (list 'NEWLINE nl-text start-loc end-loc rest-str) + t3))] + [else + toks])])) + +(define (adapt-python-tokenizer ip #:end-marker-to-eof? [end-marker-to-eof? #f]) + (define generated-tokens (kludge-nl-dedent-endmarker + (sequence->list (generate-tokens ip)))) + (define tokens (sequence->generator generated-tokens)) + (lambda () + (let loop () + (define next-token (tokens)) + (match next-token + [(list type text (list start-line start-col) (list end-line end-col) rest-string) + ;; FIXME: improve the Python tokenizer to hold offsets too. + (define start-pos (position #f start-line start-col)) + (define end-pos (position #f end-line end-col)) + (cond + [(eq? type 'NL) + ;; Skip over NL tokens: they are meant to represent the continuation + ;; of a logical line. + (loop)] + [else + (position-token (case type + [(NAME) + (cond [(set-member? all-token-types (string->symbol text)) + (token (string->symbol text) text)] + [else + (token 'NAME text)])] + [(OP) + (token (string->symbol text) text)] + [(NUMBER) + (token 'NUMBER text)] + [(STRING) + (token 'STRING text)] + [(COMMENT) + (token 'WHITESPACE #:skip? #t)] + [(NEWLINE) + (token 'NEWLINE text)] + [(DEDENT) + (token 'DEDENT text)] + [(INDENT) + (token 'INDENT text)] + [(ERRORTOKEN) + (error 'uh-oh)] + [(ENDMARKER) + (if end-marker-to-eof? + (token eof) + (token 'ENDMARKER text))]) + start-pos + end-pos)])] + [(? void) + (token eof)])))) + + +(define sample-tokens (adapt-python-tokenizer + (open-input-string #<datum (parse "hello.py" sample-tokens))) + + + + +(define parse-expr (make-rule-parser expr)) + + +(check-equal? + (syntax->datum (parse-expr + (adapt-python-tokenizer (open-input-string "42") + #:end-marker-to-eof? #t))) + '(expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "42")))))))))) + + + +(check-equal? + (syntax->datum (parse-expr + (adapt-python-tokenizer (open-input-string "(lambda x,y: y,x)") + #:end-marker-to-eof? #t))) + '(expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "(" (testlist_comp (test (lambdef "lambda" (varargslist (fpdef "x") "," (fpdef "y")) ":" (test (or_test (and_test (not_test (comparison (expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "y")))))))))))))))) "," (test (or_test (and_test (not_test (comparison (expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "x"))))))))))))))) ")")))))))))) + + +(check-equal? + (syntax->datum (parse-expr + (adapt-python-tokenizer (open-input-string "sqrt(x^2+y^2)") + #:end-marker-to-eof? #t))) + '(expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "sqrt") (trailer "(" (arglist (argument (test (or_test (and_test (not_test (comparison (expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "x"))))))) "^" (and_expr (shift_expr (arith_expr (term (factor (power (atom "2")))) "+" (term (factor (power (atom "y"))))))) "^" (and_expr (shift_expr (arith_expr (term (factor (power (atom "2")))))))))))))))) ")")))))))))) + + + +(define parse-single-input (make-rule-parser single_input)) +(check-equal? + (syntax->datum + (parse-single-input + (adapt-python-tokenizer (open-input-string "def f(x):\n return x*x\n\n") + #:end-marker-to-eof? #t))) + '(single_input + (compound_stmt + (funcdef "def" "f" (parameters "(" (varargslist (fpdef "x")) ")") ":" (suite "\n" " " (stmt (simple_stmt (small_stmt (flow_stmt (return_stmt "return" (testlist (test (or_test (and_test (not_test (comparison (expr (xor_expr (and_expr (shift_expr (arith_expr (term (factor (power (atom "x"))) "*" (factor (power (atom "x")))))))))))))))))) "\n")) ""))) "\n")) diff --git a/beautiful-racket-ragg/br/ragg/test/test-01-equal.rkt b/beautiful-racket-ragg/br/ragg/test/test-01-equal.rkt new file mode 100755 index 0000000..d6284e7 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-01-equal.rkt @@ -0,0 +1,30 @@ +#lang racket/base + +(require br/ragg/examples/01-equal + rackunit) + +(check-equal? (syntax->datum (parse "")) + '(equal)) +(check-equal? (syntax->datum (parse "01")) + '(equal (zero (equal) #\0) + (one (equal) #\1))) +(check-equal? (syntax->datum (parse "10")) + '(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))) +(check-equal? (syntax->datum (parse "0110")) + '(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))) + diff --git a/beautiful-racket-ragg/br/ragg/test/test-0n1.rkt b/beautiful-racket-ragg/br/ragg/test/test-0n1.rkt new file mode 100755 index 0000000..520d5b9 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-0n1.rkt @@ -0,0 +1,50 @@ +#lang racket/base + +(require br/ragg/examples/0n1 + br/ragg/support + rackunit) + +(define (lex ip) + (port-count-lines! ip) + (lambda () + (define next-char (read-char ip)) + (cond [(eof-object? next-char) + (token eof)] + [(char=? next-char #\0) + (token "0" "0")] + [(char=? next-char #\1) + (token "1" "1")]))) + + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "1")))) + '(rule "1")) + + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "01")))) + '(rule "0" "1")) + + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "001")))) + '(rule "0" "0" "1")) + + +(check-exn exn:fail:parsing? + (lambda () + (parse #f (lex (open-input-string "0"))))) + +(check-exn exn:fail:parsing? + (lambda () + (parse #f (lex (open-input-string "10"))))) + +(check-exn exn:fail:parsing? + (lambda () + (parse #f (lex (open-input-string "010"))))) + + +;; This should fail predictably because we're passing in tokens +;; that the parser doesn't know. +(check-exn exn:fail:parsing? + (lambda () (parse '("zero" "one" "zero")))) +(check-exn (regexp (regexp-quote + "Encountered unexpected token \"zero\" (\"zero\") while parsing")) + (lambda () (parse '("zero" "one" "zero")))) diff --git a/beautiful-racket-ragg/br/ragg/test/test-0n1n.rkt b/beautiful-racket-ragg/br/ragg/test/test-0n1n.rkt new file mode 100755 index 0000000..5d6e9b1 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-0n1n.rkt @@ -0,0 +1,49 @@ +#lang racket/base +(require br/ragg/examples/0n1n + br/ragg/support + rackunit) + +(define (lex ip) + (port-count-lines! ip) + (lambda () + (define next-char (read-char ip)) + (cond [(eof-object? next-char) + (token eof)] + [(char=? next-char #\0) + (token "0" "0")] + [(char=? next-char #\1) + (token "1" "1")]))) + + +;; The only rule in the grammar is: +;; +;; rule-0n1n: ["0" rule-0n1n "1"] +;; +;; It makes use of the "maybe" pattern. The result type of the +;; grammar rule is: +;; +;; rule-0n1n: (U #f +;; (list "0" rule-0n1n "1")) + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "0011")))) + '(rule-0n1n "0" (rule-0n1n "0" (rule-0n1n) "1") "1")) + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "01")))) + '(rule-0n1n "0" (rule-0n1n) "1")) + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "")))) + '(rule-0n1n)) + +(check-equal? (syntax->datum (parse #f (lex (open-input-string "000111")))) + '(rule-0n1n "0" (rule-0n1n "0" (rule-0n1n "0" (rule-0n1n) "1") "1") "1")) + + + +(check-exn exn:fail:parsing? + (lambda () (parse #f (lex (open-input-string "0001111"))))) + +(check-exn exn:fail:parsing? + (lambda () (parse #f (lex (open-input-string "0001110"))))) + +(check-exn exn:fail:parsing? + (lambda () (parse #f (lex (open-input-string "10001110"))))) diff --git a/beautiful-racket-ragg/br/ragg/test/test-all.rkt b/beautiful-racket-ragg/br/ragg/test/test-all.rkt new file mode 100755 index 0000000..b989dbb --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-all.rkt @@ -0,0 +1,18 @@ +#lang racket/base + + +(require "test-0n1.rkt" + "test-0n1n.rkt" + "test-01-equal.rkt" + "test-simple-arithmetic-grammar.rkt" + "test-baby-json.rkt" + "test-wordy.rkt" + "test-simple-line-drawing.rkt" + "test-flatten.rkt" + "test-lexer.rkt" + "test-parser.rkt" + "exercise-python-grammar.rkt" + "test-errors.rkt" + "test-old-token.rkt" + "test-weird-grammar.rkt" + (submod br/ragg/codegen/satisfaction test)) diff --git a/beautiful-racket-ragg/br/ragg/test/test-baby-json.rkt b/beautiful-racket-ragg/br/ragg/test/test-baby-json.rkt new file mode 100755 index 0000000..b9c97f9 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-baby-json.rkt @@ -0,0 +1,25 @@ +#lang racket/base +(require br/ragg/examples/baby-json + br/ragg/support + rackunit) + +(check-equal? + (syntax->datum + (parse (list "{" + (token 'ID "message") + ":" + (token 'STRING "'hello world'") + "}"))) + '(json (object "{" + (kvpair "message" ":" (json (string "'hello world'"))) + "}"))) + + +(check-equal? + (syntax->datum + (parse "[[[{}]],[],[[{}]]]")) + '(json (array #\[ (json (array #\[ (json (array #\[ (json (object #\{ #\})) #\])) #\])) #\, (json (array #\[ #\])) #\, (json (array #\[ (json (array #\[ (json (object #\{ #\})) #\])) #\])) #\]))) + + + + diff --git a/beautiful-racket-ragg/br/ragg/test/test-errors.rkt b/beautiful-racket-ragg/br/ragg/test/test-errors.rkt new file mode 100755 index 0000000..d3ea23e --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-errors.rkt @@ -0,0 +1,134 @@ +#lang racket/base + +(require rackunit + (for-syntax racket/base)) + +;; The tests in this module make sure we produce proper error messages +;; on weird grammars. + + +(define-namespace-anchor anchor) +(define ns (namespace-anchor->namespace anchor)) +(define (c prog) + (parameterize ([current-namespace ns] + [read-accept-reader #t]) + (define ip (open-input-string prog)) + (port-count-lines! ip) + (compile (read-syntax #f ip)))) + + +;; Helper to let me quickly write compile-error checks. +(define-syntax (check-compile-error stx) + (syntax-case stx () + [(_ prog expected-msg) + (quasisyntax/loc stx + (begin #,(syntax/loc stx + (check-exn (regexp (regexp-quote expected-msg)) + (lambda () + (c prog)))) + #,(syntax/loc stx + (check-exn exn:fail:syntax? + (lambda () + (c prog))))))])) + + + + + +(check-compile-error "#lang br/ragg" + "The grammar does not appear to have any rules") + +(check-compile-error "#lang br/ragg\nfoo" + "Error while parsing grammar near: foo [line=2, column=0, position=12]") + +(check-compile-error "#lang br/ragg\nnumber : 42" + "Error while parsing grammar near: 42 [line=2, column=9, position=21]") + +(check-compile-error "#lang br/ragg\nnumber : 1" + "Error while parsing grammar near: 1 [line=2, column=9, position=21]") + + + +(check-compile-error "#lang br/ragg\n x: NUMBER\nx:STRING" + "Rule x has a duplicate definition") + +;; Check to see that missing definitions for rules also raise good syntax +;; errors: + +(check-compile-error "#lang br/ragg\nx:y" + "Rule y has no definition") + +(check-compile-error "#lang br/ragg\nnumber : 1flarbl" + "Rule 1flarbl has no definition") + + + + +(check-compile-error "#lang br/ragg\nprogram: EOF" + "Token EOF is reserved and can not be used in a grammar") + + + +;; Nontermination checks: +(check-compile-error "#lang br/ragg\nx : x" + "Rule x has no finite derivation") + + + +(check-compile-error #<symbol (format "r~a" n))))) + + +;; Simple literals +(check-equal? (map syntax->datum (flatten-rule #'(rule expr (lit "hello")))) + '((prim-rule lit expr [(lit "hello")]))) + +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr + (seq (lit "hello") + (lit "world"))))) + '((prim-rule seq expr [(lit "hello") (lit "world")]))) + + +(check-equal? (map syntax->datum (flatten-rule #'(rule expr (token HELLO)))) + '((prim-rule token expr [(token HELLO)]))) + +(check-equal? (map syntax->datum (flatten-rule #'(rule expr (id rule-2)))) + '((prim-rule id expr [(id rule-2)]))) + + +;; Sequences of primitives +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (seq (lit "1") (seq (lit "2") (lit "3")))))) + '((prim-rule seq expr + [(lit "1") (lit "2") (lit "3")]))) + +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (seq (seq (lit "1") (lit "2")) (lit "3"))))) + '((prim-rule seq expr + [(lit "1") (lit "2") (lit "3")]))) + + +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (seq (seq (lit "1")) (seq (lit "2") (lit "3")))))) + '((prim-rule seq expr + [(lit "1") (lit "2") (lit "3")]))) + + + +;; choices +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (choice (id rule-2) (id rule-3))))) + '((prim-rule choice expr + [(id rule-2)] + [(id rule-3)]))) + +(check-equal? (map syntax->datum + (flatten-rule #'(rule sexp (choice (seq (lit "(") (lit ")")) + (seq))) + #:fresh-name (make-fresh-name))) + '((prim-rule choice sexp + [(lit "(") (lit ")")] []))) + +(check-equal? (map syntax->datum + (flatten-rule #'(rule sexp (choice (seq (seq (lit "(") (token BLAH)) + (lit ")")) + (seq))) + #:fresh-name (make-fresh-name))) + '((prim-rule choice sexp + [(lit "(") (token BLAH) (lit ")")] []))) + + + + +;; maybe +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (maybe (id rule-2))))) + '((prim-rule maybe expr + [(id rule-2)] + []))) +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (maybe (token HUH))))) + '((prim-rule maybe expr + [(token HUH)] + []))) +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (maybe (seq (lit "hello") (lit "world")))))) + '((prim-rule maybe expr + [(lit "hello") (lit "world")] + []))) + + + + +;; repeat +(check-equal? (map syntax->datum + (flatten-rule #'(rule rule-2+ (repeat 0 (id rule-2))))) + '((prim-rule repeat rule-2+ + [(inferred-id rule-2+ repeat) (id rule-2)] + []))) +(check-equal? (map syntax->datum + (flatten-rule #'(rule rule-2+ (repeat 0 (seq (lit "+") (id rule-2)))))) + '((prim-rule repeat rule-2+ + [(inferred-id rule-2+ repeat) (lit "+") (id rule-2)] + []))) + +(check-equal? (map syntax->datum + (flatten-rule #'(rule rule-2+ (repeat 1 (id rule-2))))) + '((prim-rule repeat rule-2+ + [(inferred-id rule-2+ repeat) (id rule-2)] + [(id rule-2)]))) +(check-equal? (map syntax->datum + (flatten-rule #'(rule rule-2+ (repeat 1 (seq (lit "-") (id rule-2)))))) + '((prim-rule repeat rule-2+ + [(inferred-id rule-2+ repeat) (lit "-") (id rule-2)] + [(lit "-") (id rule-2)]))) + + + + + + +;; Mixtures + +;; choice and maybe +(check-equal? (map syntax->datum + (flatten-rule #'(rule sexp (choice (lit "x") + (maybe (lit "y")))) + #:fresh-name (make-fresh-name))) + '((prim-rule choice sexp + [(lit "x")] + [(inferred-id r1 maybe)]) + (inferred-prim-rule maybe r1 + [(lit "y")] + []))) +;; choice, maybe, repeat +(check-equal? (map syntax->datum + (flatten-rule #'(rule sexp (choice (lit "x") + (maybe (repeat 1 (lit "y"))))) + #:fresh-name (make-fresh-name))) + '((prim-rule choice sexp + [(lit "x")] + [(inferred-id r1 maybe)]) + (inferred-prim-rule maybe r1 + [(inferred-id r2 repeat)] + []) + (inferred-prim-rule repeat r2 + [(inferred-id r2 repeat) (lit "y")] + [(lit "y")]))) +;; choice, seq +(check-equal? (map syntax->datum + (flatten-rule #'(rule sexp (choice (seq (lit "x") (lit "y")) + (seq (lit "z") (lit "w")))) + #:fresh-name (make-fresh-name))) + '((prim-rule choice sexp + [(lit "x") (lit "y")] + [(lit "z") (lit "w")]))) + +;; maybe, choice +(check-equal? (map syntax->datum + (flatten-rule #'(rule sexp (maybe (choice (seq (lit "x") (lit "y")) + (seq (lit "z") (lit "w"))))) + #:fresh-name (make-fresh-name))) + '((prim-rule maybe sexp + [(inferred-id r1 choice)] + []) + (inferred-prim-rule choice r1 + [(lit "x") (lit "y")] + [(lit "z") (lit "w")]))) + + +;; seq, repeat +(check-equal? (map syntax->datum + (flatten-rule #'(rule expr (seq (id term) (repeat 0 (seq (lit "+") (id term))))) + #:fresh-name (make-fresh-name))) + '((prim-rule seq expr [(id term) (inferred-id r1 repeat)]) + (inferred-prim-rule repeat r1 [(inferred-id r1 repeat) (lit "+") (id term)] []))) + + +;; larger example: simple arithmetic +(check-equal? (map syntax->datum + (flatten-rules (syntax->list + #'((rule expr (seq (id term) (repeat 0 (seq (lit "+") (id term))))) + (rule term (seq (id factor) (repeat 0 (seq (lit "*") (id factor))))) + (rule factor (token INT)))) + #:fresh-name (make-fresh-name))) + + '((prim-rule seq expr [(id term) (inferred-id r1 repeat)]) + (inferred-prim-rule repeat r1 [(inferred-id r1 repeat) (lit "+") (id term)] []) + (prim-rule seq term [(id factor) (inferred-id r2 repeat)]) + (inferred-prim-rule repeat r2 [(inferred-id r2 repeat) (lit "*") (id factor)] []) + (prim-rule token factor [(token INT)]))) diff --git a/beautiful-racket-ragg/br/ragg/test/test-lexer.rkt b/beautiful-racket-ragg/br/ragg/test/test-lexer.rkt new file mode 100755 index 0000000..5da637c --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-lexer.rkt @@ -0,0 +1,58 @@ +#lang racket/base +(require br/ragg/rules/lexer + rackunit + parser-tools/lex) + +(define (l s) + (define t (lex/1 (open-input-string s))) + (list (token-name (position-token-token t)) + (token-value (position-token-token t)) + (position-offset (position-token-start-pos t)) + (position-offset (position-token-end-pos t)))) + +;; WARNING: the offsets are not in terms of file positions. So they +;; start counting at 1, not 0. +(check-equal? (l " hi") + '(ID "hi" 2 4)) + +(check-equal? (l " hi") + '(ID "hi" 3 5)) + +(check-equal? (l "hi") + '(ID "hi" 1 3)) + +(check-equal? (l "# foobar\nhi") + '(ID "hi" 10 12)) + +(check-equal? (l "# foobar\rhi") + '(ID "hi" 10 12)) + +(check-equal? (l "# foobar\r\nhi") + '(ID "hi" 11 13)) + +(check-equal? (l "hi:") + '(RULE_HEAD "hi:" 1 4)) + +(check-equal? (l "hi :") + '(RULE_HEAD "hi :" 1 7)) + +(check-equal? (l "|") + '(PIPE "|" 1 2)) + +(check-equal? (l "(") + '(LPAREN "(" 1 2)) + +(check-equal? (l "[") + '(LBRACKET "[" 1 2)) + +(check-equal? (l ")") + '(RPAREN ")" 1 2)) + +(check-equal? (l "]") + '(RBRACKET "]" 1 2)) + +(check-equal? (l "'hello'") + '(LIT "'hello'" 1 8)) + +(check-equal? (l "'he\\'llo'") + '(LIT "'he\\'llo'" 1 10)) diff --git a/beautiful-racket-ragg/br/ragg/test/test-old-token.rkt b/beautiful-racket-ragg/br/ragg/test/test-old-token.rkt new file mode 100755 index 0000000..0a0f6aa --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-old-token.rkt @@ -0,0 +1,76 @@ +#lang racket/base + +;; Make sure the old token type also works fine. + +(require br/ragg/examples/simple-line-drawing + br/ragg/support + racket/list + parser-tools/lex + (prefix-in : parser-tools/lex-sre) + rackunit) + +(define-tokens tokens (INTEGER STRING |;| EOF)) + +(define (make-tokenizer ip) + (port-count-lines! ip) + (define lex (lexer-src-pos + [(:+ numeric) + (token-INTEGER (string->number lexeme))] + [upper-case + (token-STRING lexeme)] + ["b" + (token-STRING " ")] + [";" + (|token-;| lexeme)] + [whitespace + (return-without-pos (lex input-port))] + [(eof) + (token-EOF 'eof)])) + (lambda () + (lex ip))) + + + +(define the-parsed-object-stx + (parse (make-tokenizer (open-input-string #<list the-parsed-object-stx)))) + +(check-equal? (syntax->datum the-parsed-object-stx) + '(drawing (rows (repeat 3) (chunk 9 "X") ";") + (rows (repeat 6) (chunk 3 " ") (chunk 3 "X") (chunk 3 " ") ";") + (rows (repeat 3) (chunk 9 "X") ";"))) + +(define the-parsed-object (syntax->list the-parsed-object-stx)) + +(check-equal? (syntax-line the-parsed-object-stx) 1) +(check-equal? (syntax-column the-parsed-object-stx) 0) +(check-equal? (syntax-position the-parsed-object-stx) 1) +(check-equal? (syntax-span the-parsed-object-stx) 28) + +(check-equal? (length the-parsed-object) 4) + +(check-equal? (syntax->datum (second the-parsed-object)) + '(rows (repeat 3) (chunk 9 "X") ";")) +(check-equal? (syntax-line (list-ref the-parsed-object 1)) 1) + +(check-equal? (syntax->datum (third the-parsed-object)) + '(rows (repeat 6) (chunk 3 " ") (chunk 3 "X") (chunk 3 " ") ";")) +(check-equal? (syntax-line (list-ref the-parsed-object 2)) 2) + +(check-equal? (syntax->datum (fourth the-parsed-object)) + '(rows (repeat 3) (chunk 9 "X") ";")) +(check-equal? (syntax-line (list-ref the-parsed-object 3)) 3) + +;; FIXME: add tests to make sure location is as we expect. +;; +;; FIXME: handle the EOF issue better. Something in cfg-parser +;; appears to deviate from parser-tools/yacc with regards to the stop +;; token. diff --git a/beautiful-racket-ragg/br/ragg/test/test-parser.rkt b/beautiful-racket-ragg/br/ragg/test/test-parser.rkt new file mode 100755 index 0000000..9d8310e --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-parser.rkt @@ -0,0 +1,129 @@ +#lang racket/base + + +(require rackunit + parser-tools/lex + br/ragg/rules/parser + br/ragg/rules/lexer + br/ragg/rules/rule-structs) + + +;; quick-and-dirty helper for pos construction. +(define (p x) + (pos x #f #f)) + + + +;; FIXME: fix the test cases so they work on locations rather than just offsets. +(check-equal? (grammar-parser (tokenize (open-input-string "expr : 'hello'"))) + (list (rule (p 1) (p 15) + (lhs-id (p 1) (p 5) "expr" ) + (pattern-lit (p 8) (p 15) "hello")))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : COLON"))) + (list (rule (p 1) (p 13) + (lhs-id (p 1) (p 5) "expr") + (pattern-token (p 8) (p 13) "COLON")))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : COLON COLON"))) + (list (rule (p 1) (p 19) + (lhs-id (p 1) (p 5) "expr") + (pattern-seq (p 8) (p 19) + (list + (pattern-token (p 8) (p 13) "COLON") + (pattern-token (p 14) (p 19) "COLON")))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : 'hello'*"))) + (list (rule (p 1) (p 16) + (lhs-id (p 1) (p 5) "expr" ) + (pattern-repeat (p 8) (p 16) + 0 + (pattern-lit (p 8) (p 15) "hello"))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : 'hello'+"))) + (list (rule (p 1) (p 16) + (lhs-id (p 1) (p 5) "expr" ) + (pattern-repeat (p 8) (p 16) + 1 + (pattern-lit (p 8) (p 15) "hello"))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : ['hello']"))) + (list (rule (p 1) (p 17) + (lhs-id (p 1) (p 5) "expr" ) + (pattern-maybe (p 8) (p 17) + (pattern-lit (p 9) (p 16) "hello"))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : COLON | BLAH"))) + (list (rule (p 1) (p 20) + (lhs-id (p 1) (p 5) "expr") + (pattern-choice (p 8) (p 20) + (list (pattern-token (p 8) (p 13) "COLON") + (pattern-token (p 16) (p 20) "BLAH")))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : COLON | BLAH | BAZ expr"))) + (list (rule (p 1) (p 31) + (lhs-id (p 1) (p 5) "expr") + (pattern-choice (p 8) (p 31) + (list (pattern-token (p 8) (p 13) "COLON") + (pattern-token (p 16) (p 20) "BLAH") + (pattern-seq (p 23) (p 31) + (list (pattern-token (p 23) (p 26) "BAZ") + (pattern-id (p 27) (p 31) "expr")))))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : one two three"))) + (list (rule (p 1) (p 21) + (lhs-id (p 1) (p 5) "expr") + (pattern-seq (p 8) (p 21) (list (pattern-id (p 8) (p 11) "one") + (pattern-id (p 12) (p 15) "two") + (pattern-id (p 16) (p 21) "three")))))) + + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : (one two three)"))) + (list (rule (p 1) (p 23) + (lhs-id (p 1) (p 5) "expr") + (pattern-seq (p 8) (p 23) (list (pattern-id (p 9) (p 12) "one") + (pattern-id (p 13) (p 16) "two") + (pattern-id (p 17) (p 22) "three")))))) + + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : one two* three"))) + (list (rule (p 1) (p 22) + (lhs-id (p 1) (p 5) "expr") + (pattern-seq (p 8) (p 22) (list (pattern-id (p 8) (p 11) "one") + (pattern-repeat (p 12) (p 16) 0 (pattern-id (p 12) (p 15) "two")) + (pattern-id (p 17) (p 22) "three")))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : one two+ three"))) + (list (rule (p 1) (p 22) + (lhs-id (p 1) (p 5) "expr") + (pattern-seq (p 8) (p 22) (list (pattern-id (p 8) (p 11) "one") + (pattern-repeat (p 12) (p 16) 1 (pattern-id (p 12) (p 15) "two")) + (pattern-id (p 17) (p 22) "three")))))) + +(check-equal? (grammar-parser (tokenize (open-input-string "expr : (one two)+ three"))) + (list (rule (p 1) (p 24) + (lhs-id (p 1) (p 5) "expr") + (pattern-seq (p 8) (p 24) (list (pattern-repeat (p 8) (p 18) 1 + (pattern-seq (p 8) (p 17) + (list (pattern-id (p 9) (p 12) "one") + (pattern-id (p 13) (p 16) "two")))) + (pattern-id (p 19) (p 24) "three")))))) + + +(check-equal? (grammar-parser (tokenize (open-input-string #<number lexeme))] + [whitespace + (token 'WHITESPACE #:skip? #t)] + ["+" + (token '+ "+")] + ["*" + (token '* "*")] + [(eof) + (token eof)])) + (lambda () + (lex/1 ip))) + + +;; expr : term ('+' term)* +;; term : factor (('*') factor)* +;; factor : INT + +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "42")))) + '(expr (term (factor 42)))) +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "3+4")))) + '(expr (term (factor 3)) + "+" + (term (factor 4)))) +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "3+4+5")))) + '(expr (term (factor 3)) + "+" + (term (factor 4)) + "+" + (term (factor 5)))) + + +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "3*4*5")))) + '(expr (term (factor 3) "*" (factor 4) "*" (factor 5)))) + + +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "3*4 + 5*6")))) + '(expr (term (factor 3) "*" (factor 4)) + "+" + (term (factor 5) "*" (factor 6)))) + +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "4*5+6")))) + '(expr (term (factor 4) "*" (factor 5)) + "+" + (term (factor 6)))) + +(check-equal? (syntax->datum (parse #f (tokenize (open-input-string "4+5 *6")))) + '(expr (term (factor 4)) + "+" + (term (factor 5) "*" (factor 6)))) + + +(check-exn exn:fail:parsing? + (lambda () (parse #f (tokenize (open-input-string "7+"))))) +(check-exn exn:fail:parsing? + (lambda () (parse #f (tokenize (open-input-string "7+6+"))))) + + +(check-equal? all-token-types + (set '+ '* 'INT)) diff --git a/beautiful-racket-ragg/br/ragg/test/test-simple-line-drawing.rkt b/beautiful-racket-ragg/br/ragg/test/test-simple-line-drawing.rkt new file mode 100755 index 0000000..803222b --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-simple-line-drawing.rkt @@ -0,0 +1,72 @@ +#lang racket/base + +(require br/ragg/examples/simple-line-drawing + br/ragg/support + racket/list + parser-tools/lex + (prefix-in : parser-tools/lex-sre) + rackunit) + +(define (make-tokenizer ip) + (port-count-lines! ip) + (define lex (lexer-src-pos + [(:+ numeric) + (token 'INTEGER (string->number lexeme))] + [upper-case + (token 'STRING lexeme)] + ["b" + (token 'STRING " ")] + [";" + (token ";" lexeme)] + [whitespace + (token 'WHITESPACE lexeme #:skip? #t)] + [(eof) + (void)])) + (lambda () + (lex ip))) + + + +(define the-parsed-object-stx + (parse (make-tokenizer (open-input-string #<list the-parsed-object-stx)))) + +(check-equal? (syntax->datum the-parsed-object-stx) + '(drawing (rows (repeat 3) (chunk 9 "X") ";") + (rows (repeat 6) (chunk 3 " ") (chunk 3 "X") (chunk 3 " ") ";") + (rows (repeat 3) (chunk 9 "X") ";"))) + +(define the-parsed-object (syntax->list the-parsed-object-stx)) + +(check-equal? (syntax-line the-parsed-object-stx) 1) +(check-equal? (syntax-column the-parsed-object-stx) 0) +(check-equal? (syntax-position the-parsed-object-stx) 1) +(check-equal? (syntax-span the-parsed-object-stx) 28) + +(check-equal? (length the-parsed-object) 4) + +(check-equal? (syntax->datum (second the-parsed-object)) + '(rows (repeat 3) (chunk 9 "X") ";")) +(check-equal? (syntax-line (list-ref the-parsed-object 1)) 1) + +(check-equal? (syntax->datum (third the-parsed-object)) + '(rows (repeat 6) (chunk 3 " ") (chunk 3 "X") (chunk 3 " ") ";")) +(check-equal? (syntax-line (list-ref the-parsed-object 2)) 2) + +(check-equal? (syntax->datum (fourth the-parsed-object)) + '(rows (repeat 3) (chunk 9 "X") ";")) +(check-equal? (syntax-line (list-ref the-parsed-object 3)) 3) + +;; FIXME: add tests to make sure location is as we expect. +;; +;; FIXME: handle the EOF issue better. Something in cfg-parser +;; appears to deviate from parser-tools/yacc with regards to the stop +;; token. diff --git a/beautiful-racket-ragg/br/ragg/test/test-weird-grammar.rkt b/beautiful-racket-ragg/br/ragg/test/test-weird-grammar.rkt new file mode 100755 index 0000000..1847feb --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-weird-grammar.rkt @@ -0,0 +1,7 @@ +#lang racket/base + +(require "weird-grammar.rkt" + rackunit) + +(check-equal? (syntax->datum (parse '("foo"))) + '(foo "foo")) diff --git a/beautiful-racket-ragg/br/ragg/test/test-wordy.rkt b/beautiful-racket-ragg/br/ragg/test/test-wordy.rkt new file mode 100755 index 0000000..7ec4db3 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/test-wordy.rkt @@ -0,0 +1,18 @@ +#lang racket/base +(require br/ragg/examples/wordy + br/ragg/support + rackunit) + +(check-equal? + (syntax->datum + (parse (list "hello" "world"))) + '(sentence (verb (greeting "hello")) (optional-adjective) (object "world"))) + + + +(check-equal? + (syntax->datum + (parse (list "hola" "frumpy" (token 'WORLD "세계")))) + + '(sentence (verb (greeting "hola")) (optional-adjective "frumpy") (object "세계"))) + diff --git a/beautiful-racket-ragg/br/ragg/test/weird-grammar.rkt b/beautiful-racket-ragg/br/ragg/test/weird-grammar.rkt new file mode 100755 index 0000000..da75f91 --- /dev/null +++ b/beautiful-racket-ragg/br/ragg/test/weird-grammar.rkt @@ -0,0 +1,6 @@ +#lang br/ragg + +;; This used to fail when we had the yacc-based backend, but +;; cfg-parser seems to be ok with it. + +foo: "foo" diff --git a/beautiful-racket-ragg/info.rkt b/beautiful-racket-ragg/info.rkt new file mode 100755 index 0000000..45a38e2 --- /dev/null +++ b/beautiful-racket-ragg/info.rkt @@ -0,0 +1,7 @@ +#lang setup/infotab + +(define deps '("base" "parser-tools-lib" "rackunit-lib" "python-tokenizer")) +(define build-deps '("at-exp-lib" "parser-tools-doc" "racket-doc" + "scribble-lib")) +(define collection 'multi) + diff --git a/beautiful-racket/br/demo/basic/#sinewave.bas#2# b/beautiful-racket/br/demo/basic/#sinewave.bas#2# deleted file mode 100644 index 2e87802..0000000 --- a/beautiful-racket/br/demo/basic/#sinewave.bas#2# +++ /dev/null @@ -1,250 +0,0 @@ -#reader(lib"read.ss""wxme")WXME0108 ## -#| - This file uses the GRacket editor format. - Open this file in DrRacket version 6.4.0.15 or later to read it. - - Most likely, it was created by saving a program in DrRacket, - and it probably contains a program with non-text elements - (such as images or comment boxes). - - http://racket-lang.org/ -|# - 22 7 #"wxtext\0" -3 1 6 #"wxtab\0" -1 1 8 #"wximage\0" -2 0 8 #"wxmedia\0" -4 1 34 #"(lib \"syntax-browser.ss\" \"mrlib\")\0" -1 0 16 #"drscheme:number\0" -3 0 44 #"(lib \"number-snip.ss\" \"drscheme\" \"private\")\0" -1 0 36 #"(lib \"comment-snip.ss\" \"framework\")\0" -1 0 93 -( - #"((lib \"collapsed-snipclass.ss\" \"framework\") (lib \"collapsed-sni" - #"pclass-wxme.ss\" \"framework\"))\0" -) 0 0 43 #"(lib \"collapsed-snipclass.ss\" \"framework\")\0" -0 0 19 #"drscheme:sexp-snip\0" -0 0 36 #"(lib \"cache-image-snip.ss\" \"mrlib\")\0" -1 0 68 -( - #"((lib \"image-core.ss\" \"mrlib\") (lib \"image-core-wxme.rkt\" \"mr" - #"lib\"))\0" -) 1 0 29 #"drscheme:bindings-snipclass%\0" -1 0 101 -( - #"((lib \"ellipsis-snip.rkt\" \"drracket\" \"private\") (lib \"ellipsi" - #"s-snip-wxme.rkt\" \"drracket\" \"private\"))\0" -) 2 0 88 -( - #"((lib \"pict-snip.rkt\" \"drracket\" \"private\") (lib \"pict-snip.r" - #"kt\" \"drracket\" \"private\"))\0" -) 0 0 34 #"(lib \"bullet-snip.rkt\" \"browser\")\0" -0 0 25 #"(lib \"matrix.ss\" \"htdp\")\0" -1 0 22 #"drscheme:lambda-snip%\0" -1 0 29 #"drclickable-string-snipclass\0" -0 0 26 #"drracket:spacer-snipclass\0" -0 0 57 -#"(lib \"hrule-snip.rkt\" \"macro-debugger\" \"syntax-browser\")\0" -1 0 1 6 #"wxloc\0" - 0 0 64 0 1 #"\0" -0 75 1 #"\0" -0 12 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 0 9 -#"Standard\0" -0 75 15 #"Triplicate T3c\0" -0 16 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 24 -#"framework:default-color\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 255 255 255 -1 -1 2 -1 #"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 150 0 150 0 0 0 -1 -1 2 15 -#"text:ports out\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 119 34 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 255 0 0 0 0 0 -1 --1 2 15 #"text:ports err\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 136 17 17 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 175 0 0 0 -1 -1 2 17 -#"text:ports value\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 34 119 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 34 139 34 0 0 0 -1 --1 2 27 #"Matching Parenthesis Style\0" -0 -1 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 34 139 34 0 0 0 -1 --1 2 1 #"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 37 -#"framework:syntax-color:scheme:symbol\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 34 119 0 0 0 -1 -1 2 38 -#"framework:syntax-color:scheme:keyword\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 34 119 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2 -38 #"framework:syntax-color:scheme:comment\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 119 34 119 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 37 -#"framework:syntax-color:scheme:string\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 119 34 0 0 0 -1 -1 2 35 -#"framework:syntax-color:scheme:text\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 119 34 0 0 0 -1 -1 2 39 -#"framework:syntax-color:scheme:constant\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 119 34 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 49 -#"framework:syntax-color:scheme:hash-colon-keyword\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 119 34 0 0 0 -1 -1 2 42 -#"framework:syntax-color:scheme:parenthesis\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 178 178 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 36 -#"framework:syntax-color:scheme:error\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 136 17 17 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 36 -#"framework:syntax-color:scheme:other\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 34 119 0 0 0 -1 -1 2 16 -#"Misspelled Text\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 -38 #"drracket:check-syntax:lexically-bound\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 28 -#"drracket:check-syntax:set!d\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 136 17 17 0 0 0 -1 -1 2 37 -#"drracket:check-syntax:unused-require\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 136 17 17 0 0 0 -1 -1 2 36 -#"drracket:check-syntax:free-variable\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 136 17 17 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 31 -#"drracket:check-syntax:imported\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 47 -#"drracket:check-syntax:my-obligation-style-pref\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 50 -#"drracket:check-syntax:their-obligation-style-pref\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 48 -#"drracket:check-syntax:unk-obligation-style-pref\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 139 142 28 0 0 0 -1 -1 2 -49 #"drracket:check-syntax:both-obligation-style-pref\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 139 142 28 0 0 0 -1 -1 2 -37 #"plt:module-language:test-coverage-on\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 -#"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 2 38 -#"plt:module-language:test-coverage-off\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 93 -1 -1 0 1 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 4 1 -#"\0" -0 71 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 --1 -1 4 1 #"\0" -0 -1 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1.0 1.0 1.0 0 0 255 0 0 0 -1 --1 4 1 #"\0" -0 71 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0 0 0 1.0 1.0 1.0 0 0 255 0 0 0 -1 --1 4 1 #"\0" -0 71 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 0 100 0 0 0 0 -1 --1 4 1 #"\0" -0 -1 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 255 255 0 -1 -1 2 -1 #"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 200 0 0 0 0 0 -1 -1 0 1 -#"\0" -0 75 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 --1 -1 2 1 #"\0" -0 75 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 --1 -1 2 1 #"\0" -0 75 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 255 255 -1 -1 -2 1 #"\0" -0 75 1 #"\0" -1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 34 139 34 255 255 255 -1 --1 2 1 #"\0" -0 -1 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 36 36 140 0 0 0 -1 --1 2 1 #"\0" -0 -1 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 --1 -1 2 1 #"\0" -0 -1 1 #"\0" -0 4 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 --1 2 1 #"\0" -0 75 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 36 36 140 0 0 0 -1 --1 2 1 #"\0" -0 75 1 #"\0" -1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 --1 -1 2 1 #"\0" -0 75 1 #"\0" -0 4 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 --1 4 1 #"\0" -0 -1 1 #"\0" -1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 - 0 13 0 28 3 19 #"#lang br/demo/basic" -0 0 24 29 1 #"\n" -0 0 24 29 1 #"\n" -0 0 21 3 2 #"50" -0 0 24 3 1 #" " -0 0 14 3 5 #"PRINT" -0 0 24 3 1 #" " -0 0 14 3 3 #"INT" -0 0 24 3 1 #"(" -0 0 14 3 3 #"RND" -0 0 24 3 1 #"(" -0 0 21 3 2 #"10" -0 0 24 3 2 #"))" -0 0 diff --git a/beautiful-racket/br/demo/basic/parser.rkt b/beautiful-racket/br/demo/basic/parser.rkt index a4e148d..a4d0949 100644 --- a/beautiful-racket/br/demo/basic/parser.rkt +++ b/beautiful-racket/br/demo/basic/parser.rkt @@ -1,4 +1,4 @@ -#lang ragg +#lang br/ragg ;; recursive rules destucture easily in the expander program : [CR]* [line [CR line]*] [CR]* diff --git a/beautiful-racket/br/demo/basic/tokenizer.rkt b/beautiful-racket/br/demo/basic/tokenizer.rkt index deb218b..dd9531b 100644 --- a/beautiful-racket/br/demo/basic/tokenizer.rkt +++ b/beautiful-racket/br/demo/basic/tokenizer.rkt @@ -1,6 +1,6 @@ #lang br (require parser-tools/lex parser-tools/lex-sre - ragg/support + br/ragg/support racket/string) (provide tokenize) diff --git a/beautiful-racket/br/demo/bf/bf-parser.rkt b/beautiful-racket/br/demo/bf/bf-parser.rkt index 82a4777..ae0b593 100644 --- a/beautiful-racket/br/demo/bf/bf-parser.rkt +++ b/beautiful-racket/br/demo/bf/bf-parser.rkt @@ -1,4 +1,4 @@ -#lang ragg +#lang br/ragg bf-program : (op | loop)* op : ">" | "<" | "+" | "-" | "." | "," loop : "[" (op | loop)* "]" \ No newline at end of file diff --git a/beautiful-racket/br/demo/bf/bf-reader.rkt b/beautiful-racket/br/demo/bf/bf-reader.rkt index 3ef187c..7d41d24 100644 --- a/beautiful-racket/br/demo/bf/bf-reader.rkt +++ b/beautiful-racket/br/demo/bf/bf-reader.rkt @@ -1,5 +1,5 @@ #lang br -(require parser-tools/lex ragg/support) +(require parser-tools/lex br/ragg/support) (define (tokenize input-port) (define (next-token) (define get-token diff --git a/beautiful-racket/br/demo/bf/test-tokenizer.rkt b/beautiful-racket/br/demo/bf/test-tokenizer.rkt index fa6f3ff..4676bbf 100644 --- a/beautiful-racket/br/demo/bf/test-tokenizer.rkt +++ b/beautiful-racket/br/demo/bf/test-tokenizer.rkt @@ -1,5 +1,5 @@ #lang br -(require parser-tools/lex ragg/support) +(require parser-tools/lex br/ragg/support) (define+provide (tokenize ip) (define get-token diff --git a/beautiful-racket/br/demo/hdl-tst/parser.rkt b/beautiful-racket/br/demo/hdl-tst/parser.rkt index bb9c9c1..a451596 100644 --- a/beautiful-racket/br/demo/hdl-tst/parser.rkt +++ b/beautiful-racket/br/demo/hdl-tst/parser.rkt @@ -1,4 +1,4 @@ -#lang ragg +#lang br/ragg tst-program : header-expr test-expr* diff --git a/beautiful-racket/br/demo/hdl-tst/tokenizer.rkt b/beautiful-racket/br/demo/hdl-tst/tokenizer.rkt index 6c78f48..6bd2c1c 100644 --- a/beautiful-racket/br/demo/hdl-tst/tokenizer.rkt +++ b/beautiful-racket/br/demo/hdl-tst/tokenizer.rkt @@ -1,6 +1,6 @@ #lang br (require parser-tools/lex parser-tools/lex-sre - ragg/support + br/ragg/support racket/string) (provide tokenize) diff --git a/beautiful-racket/br/demo/hdl/parser.rkt b/beautiful-racket/br/demo/hdl/parser.rkt index 0d920aa..b059104 100644 --- a/beautiful-racket/br/demo/hdl/parser.rkt +++ b/beautiful-racket/br/demo/hdl/parser.rkt @@ -1,4 +1,4 @@ -#lang ragg +#lang br/ragg ;; rule of thumb: use [optional] bits judiciously as they multiply the cases needed for a production rule ;; rule of thumb: for a set of related IDs, put each into the same grammar entity diff --git a/beautiful-racket/br/demo/hdl/tokenizer.rkt b/beautiful-racket/br/demo/hdl/tokenizer.rkt index 9c4a490..bae1da2 100644 --- a/beautiful-racket/br/demo/hdl/tokenizer.rkt +++ b/beautiful-racket/br/demo/hdl/tokenizer.rkt @@ -1,6 +1,6 @@ #lang br (require parser-tools/lex parser-tools/lex-sre - ragg/support + br/ragg/support racket/string) (provide tokenize) diff --git a/beautiful-racket/br/demo/txtadv/parser.rkt b/beautiful-racket/br/demo/txtadv/parser.rkt index 14c576a..9db0a93 100644 --- a/beautiful-racket/br/demo/txtadv/parser.rkt +++ b/beautiful-racket/br/demo/txtadv/parser.rkt @@ -1,4 +1,4 @@ -#lang ragg +#lang br/ragg txtadv-program : verb-section everywhere-section things-section places-section start-section diff --git a/beautiful-racket/br/demo/txtadv/tokenizer.rkt b/beautiful-racket/br/demo/txtadv/tokenizer.rkt index b54b0a3..016d1bf 100644 --- a/beautiful-racket/br/demo/txtadv/tokenizer.rkt +++ b/beautiful-racket/br/demo/txtadv/tokenizer.rkt @@ -1,6 +1,6 @@ #lang br (require parser-tools/lex parser-tools/lex-sre - ragg/support + br/ragg/support racket/string) (provide tokenize) diff --git a/beautiful-racket/info.rkt b/beautiful-racket/info.rkt index 7e46cdc..42bfea9 100644 --- a/beautiful-racket/info.rkt +++ b/beautiful-racket/info.rkt @@ -2,5 +2,5 @@ (define collection 'multi) (define version "0.01") -(define deps '("base" "sugar" "beautiful-racket-lib" "rackunit-lib" "ragg" "parser-tools-lib")) +(define deps '("base" "sugar" "beautiful-racket-lib" "rackunit-lib" "beautiful-racket-ragg" "parser-tools-lib")) (define build-deps '("racket-doc"))