Corrections to the combinator parsers

svn: r6801
This commit is contained in:
Kathy Gray 2007-07-02 22:26:01 +00:00
parent 9119ec8d10
commit 3a65433b20
4 changed files with 213 additions and 125 deletions

View File

@ -107,7 +107,7 @@
[my-error (sequence-error-gen name sequence-length)] [my-error (sequence-error-gen name sequence-length)]
[my-walker (seq-walker id-position name my-error)]) [my-walker (seq-walker id-position name my-error)])
(opt-lambda (input [last-src (list 0 0 0 0)] [alts 1]) (opt-lambda (input [last-src (list 0 0 0 0)] [alts 1])
#;(printf "seq ~a~n" name) #;(!!! (printf "seq ~a~n" name))
(cond (cond
[(eq? input return-name) name] [(eq? input return-name) name]
[(hash-table-get memo-table input #f) (hash-table-get memo-table input)] [(hash-table-get memo-table input #f) (hash-table-get memo-table input)]
@ -121,7 +121,7 @@
[(pair? pre-build-ans) (map builder pre-build-ans)] [(pair? pre-build-ans) (map builder pre-build-ans)]
[else pre-build-ans])]) [else pre-build-ans])])
(hash-table-put! memo-table input ans) (hash-table-put! memo-table input ans)
#;(printf "sequence ~a returning ~n" name) #;(!!! (printf "sequence ~a returning ~n" name))
ans)]))))) ans)])))))
;seq-walker: int string error-gen -> [(list parser) (list alpha) parser result (U bool string) (list string) int int -> result ;seq-walker: int string error-gen -> [(list parser) (list alpha) parser result (U bool string) (list string) int int -> result
@ -171,21 +171,22 @@
(previous? input) (previous? return-name) #f (previous? input) (previous? return-name) #f
look-back used curr-id seen alts last-src)] look-back used curr-id seen alts last-src)]
[else [else
#;(printf "seq-walker called: else case, ~a case of ~a~n" #;(printf "seq-walker called: else case, ~a case of ~a ~ath case ~n"
seq-name (curr-pred return-name)) seq-name (curr-pred return-name) (length seen))
(let ([fst (curr-pred input last-src)]) (let ([fst (curr-pred input last-src)])
#;(printf "seq-walker predicate returned~n") #;(printf "seq-walker predicate returned~n")
(cond (cond
[(res? fst) [(res? fst)
(cond (cond
[(res-a fst) (next-call fst fst (res-msg fst) (and id-spot? (res-id fst)) [(res-a fst) (next-call fst fst (res-msg fst) (and id-spot? (res-id fst))
(res-first-tok fst) alts)] (res-first-tok fst) alts)]
[else [else
#;(printf "error situation~n")
(build-error fst (previous? input) (previous? return-name) (build-error fst (previous? input) (previous? return-name)
(car next-preds) look-back used curr-id (car next-preds) look-back used curr-id
seen alts last-src)])] seen alts last-src)])]
[(repeat-res? fst) [(repeat-res? fst)
#;(printf "repeat-res: ~a~n" fst) #;(printf "repeat-res: ~a~n" fst)
(next-call (repeat-res-a fst) fst (next-call (repeat-res-a fst) fst
(res-msg (repeat-res-a fst)) #f (res-msg (repeat-res-a fst)) #f
(res-first-tok (repeat-res-a fst)) alts)] (res-first-tok (repeat-res-a fst)) alts)]
@ -402,7 +403,7 @@
this-res))] this-res))]
[else (error 'here5)]))]))]) [else (error 'here5)]))]))])
(hash-table-put! memo-table input ans) (hash-table-put! memo-table input ans)
#;(printf "repeat of ~a ended with ans ~a~n" repeat-name ans) #;(!!! (printf "repeat of ~a ended with ans ~a~n" repeat-name ans))
ans)])))) ans)]))))
;choice: [list [[list 'a ] -> result]] name -> result ;choice: [list [[list 'a ] -> result]] name -> result
@ -411,7 +412,7 @@
[num-choices (length opt-list)] [num-choices (length opt-list)]
[choice-names (map (lambda (o) (o return-name)) opt-list)]) [choice-names (map (lambda (o) (o return-name)) opt-list)])
(opt-lambda (input [last-src (list 0 0 0 0)] [alts 1]) (opt-lambda (input [last-src (list 0 0 0 0)] [alts 1])
#;(printf "choice ~a~n" name) #;(!!! (printf "choice ~a~n" name))
(let ([sub-opts (sub1 (+ alts num-choices))]) (let ([sub-opts (sub1 (+ alts num-choices))])
(cond (cond
[(hash-table-get memo-table input #f) (hash-table-get memo-table input)] [(hash-table-get memo-table input #f) (hash-table-get memo-table input)]
@ -431,7 +432,7 @@
num-choices choice-names fails))] num-choices choice-names fails))]
[(null? (cdr corrects)) (car corrects)] [(null? (cdr corrects)) (car corrects)]
[else (make-choice-res name corrects)])]) [else (make-choice-res name corrects)])])
#;(printf "choice ~a is returning ~a options were ~a ~n" name ans choice-names) #;(!!! (printf "choice ~a is returning ~a options were ~a ~n" name ans choice-names))
(hash-table-put! memo-table input ans) ans)]))))) (hash-table-put! memo-table input ans) ans)])))))
;correct-list: (list result) -> (list result) ;correct-list: (list result) -> (list result)

View File

@ -126,7 +126,8 @@
[pos 0] [pos 0]
[id-pos 0] [id-pos 0]
[terms null]) [terms null])
(syntax-case term (sequence choose ^) (syntax-case* term (sequence choose ^)
(lambda (a b) (eq? (syntax-e a) (syntax-e b)))
[((sequence a b) . rest) [((sequence a b) . rest)
(loop (syntax rest) (add1 pos) id-pos (loop (syntax rest) (add1 pos) id-pos
(cons (quasisyntax (sequence a b #,name)) terms))] (cons (quasisyntax (sequence a b #,name)) terms))]

View File

@ -8,7 +8,7 @@
(lib "string.ss")) (lib "string.ss"))
(define-signature language-forms^ (program statement expression field)) (define-signature language-forms^ (program statement expression field)) ;value-type method-type))
(define-signature token-proc^ (old-tokens->new)) (define-signature token-proc^ (old-tokens->new))
@ -336,74 +336,74 @@
(choose (NULL_LIT boolean-lits textual-lits prim-numeric-lits double-lits numeric-lits) (choose (NULL_LIT boolean-lits textual-lits prim-numeric-lits double-lits numeric-lits)
"literal expression")) "literal expression"))
(define (new-class expr) (define new-class
(choose ((sequence (new name O_PAREN C_PAREN) id "class instantiation") (choose ((sequence (new name O_PAREN C_PAREN) id)
(sequence (new name O_PAREN (comma-sep expression "arguments") C_PAREN) id "class instantiation")) (sequence (new name O_PAREN (comma-sep expression "arguments") C_PAREN) id))
"class instantiation")) "class instantiation"))
(define (new-array type-name expr) (define (new-array type-name)
(sequence (new type-name O_BRACKET expr C_BRACKET (repeat (sequence (O_BRACKET expr C_BRACKET) id))) (sequence (new type-name O_BRACKET expression C_BRACKET (repeat (sequence (O_BRACKET expression C_BRACKET) id)))
id "array instantiation")) id "array instantiation"))
(define field-access-end (define field-access-end
(sequence (PERIOD identifier) id "field access")) (sequence (PERIOD identifier) id "field access"))
(define (array-access-end expr) (define array-access-end
(sequence (O_BRACKET expr C_BRACKET) id "array access")) (sequence (O_BRACKET (eta expression) C_BRACKET) id "array access"))
(define (array-init-maker contents) (define (array-init-maker contents)
(sequence (O_BRACE (comma-sep contents "array elements") C_BRACE) id "array initializations")) (sequence (O_BRACE (comma-sep contents "array elements") C_BRACE) id "array initializations"))
(define (array-init type-name expr) (define (array-init type-name)
(letrec ([base-init (array-init-maker expr)] (letrec ([base-init (array-init-maker expression)]
[simple-init (array-init-maker (choose (expr base-init (eta init)) "array initializations"))] [simple-init (array-init-maker (choose (expression base-init (eta init)) "array initializations"))]
[init (array-init-maker (choose (expr simple-init) "array initializations"))]) [init (array-init-maker (choose (expression simple-init) "array initializations"))])
(sequence (new type-name init) "array initialization"))) (sequence (new type-name init) "array initialization")))
(define (binary-expression-end op expr) (define (binary-expression-end op)
(sequence ((^ op) expr) id "binary expression")) (sequence ((^ op) expression) id "binary expression"))
(define (if-expr-end expr) (define if-expr-end
(sequence (? expr : expr) id "conditional expression")) (sequence (? (eta expression) : (eta expression)) id "conditional expression"))
(define (simple-method-call expr) (define simple-method-call
(choose (choose
((sequence ((^ identifier) O_PAREN C_PAREN) id "method invocation") ((sequence ((^ identifier) O_PAREN C_PAREN) id)
(sequence ((^ identifier) O_PAREN (comma-sep expr "argument list") C_PAREN) id "method invocation")) (sequence ((^ identifier) O_PAREN (comma-sep expression "argument list") C_PAREN) id))
"method invocation")) "method invocation"))
(define (method-call-end expr) (define method-call-end
(choose (choose
((sequence (PERIOD (^ identifier) O_PAREN C_PAREN) id "method invocation") ((sequence (PERIOD (^ identifier) O_PAREN C_PAREN) id)
(sequence (PERIOD (^ identifier) O_PAREN (comma-sep expr "argument list") C_PAREN) id "method invocation")) (sequence (PERIOD (^ identifier) O_PAREN (comma-sep expression "argument list") C_PAREN) id))
"method invocation")) "method invocation"))
(define (assignment asignee op expr) (define (assignment asignee op)
(sequence ((^ asignee) op expr) id "assignment")) (sequence ((^ asignee) op expression) id "assignment"))
(define (unary-assignment-front expr) (define unary-assignment-front
(choose ((sequence (++ expr) id "unary modification") (choose ((sequence (++ expression) id)
(sequence (-- expr) id "unary modification")) "unary modification")) (sequence (-- expression) id)) "unary modification"))
(define (unary-assignment-back base) (define (unary-assignment-back base)
(choose ((sequence (base ++) id "unary modification") (choose ((sequence (base ++) id)
(sequence (base --) id "unary modification")) "unary modification")) (sequence (base --) id)) "unary modification"))
(define (cast type expr) (define (cast type)
(sequence (O_PAREN type C_PAREN expr) "cast expression")) (sequence (O_PAREN type C_PAREN expression) "cast expression"))
(define instanceof-back (define instanceof-back
(sequence (instanceof name) "instanceof expression")) (sequence (instanceof name) "instanceof expression"))
(define (super-call expr) (define super-call
(choose ((sequence (super PERIOD identifier O_PAREN C_PAREN) id "super method invocation") (choose ((sequence (super PERIOD identifier O_PAREN C_PAREN) id)
(sequence (super PERIOD identifier O_PAREN (comma-sep expr "arguments") C_PAREN) id "super method invocation")) (sequence (super PERIOD identifier O_PAREN (comma-sep expression "arguments") C_PAREN) id))
"super method invocation")) "super method invocation"))
(define (checks expr) (define checks
(choose (choose
((sequence (check expr expect expr) id "check expression") ((sequence (check (eta expression) expect (eta expression)) id)
(sequence (check expr expect expr within expr) id "check expression")) (sequence (check (eta expression) expect (eta expression) within (eta expression)) id))
"check expression")) "check expression"))
) )
@ -422,8 +422,8 @@
(define (return-s expr opt?) (define (return-s expr opt?)
(cond (cond
[opt? (choose ((sequence (return expr SEMI_COLON) id "return statement") [opt? (choose ((sequence (return expr SEMI_COLON) id)
(sequence (return SEMI_COLON) id "return statement")) "return statement")] (sequence (return SEMI_COLON) id)) "return statement")]
[else (sequence (return expr SEMI_COLON) id "return statement")])) [else (sequence (return expr SEMI_COLON) id "return statement")]))
(define (this-call expr) (define (this-call expr)
@ -634,23 +634,22 @@
(export language-forms^) (export language-forms^)
(define unique-base (define unique-base
(simple-expression (choose
(list (literals (list boolean-lits textual-lits prim-numeric-lits double-lits)) ((literals (list boolean-lits textual-lits prim-numeric-lits double-lits))
this this
identifier identifier
(new-class (eta expression)) new-class
(simple-method-call (eta expression)) simple-method-call
(sequence (O_PAREN (eta expression) C_PAREN) id "expression") (sequence (O_PAREN (eta expression) C_PAREN) id)
(sequence (! (eta expression)) id "conditional expression") (sequence (! (eta expression)) id "conditional expression")
(sequence (MINUS (eta expression)) id "negation expression") (sequence (MINUS (eta expression)) id "negation expression")
(checks (eta expression))))) checks) "expression"))
(define unique-end (define unique-end
(simple-expression (choose (field-access-end
(list field-access-end method-call-end
(method-call-end (eta expression)) (binary-expression-end (bin-ops (list math-ops compare-ops bool-ops))))
(binary-expression-end (bin-ops (list math-ops compare-ops bool-ops)) "expression"))
(eta expression)))))
(define expression (define expression
(sequence (unique-base (repeat unique-end)) id "expression")) (sequence (unique-base (repeat unique-end)) id "expression"))
@ -679,51 +678,46 @@
(make-program #f (repeat import-dec) (repeat (top-member (list class interface))))) (make-program #f (repeat import-dec) (repeat (top-member (list class interface)))))
) )
(define-signature int+acc^ (intermediate+access-prog))
(define-unit intermediate-grammar@ (define-unit intermediate-grammar@
(import combinator-parser^ java-operators^ java-separators^ (prefix tok: java-definition-keywords^) (import combinator-parser^ java-operators^ java-separators^ (prefix tok: java-definition-keywords^)
java-statement-keywords^ java-type-keywords^ java-ids^ java-statement-keywords^ java-type-keywords^ java-ids^
java-types^ java-access^ java-ops^ general-productions^ java-variables^ java-types^ java-access^ java-ops^ general-productions^ java-variables^
expression-maker^ expr-lits^ expr-terms+^ expr-tails^ statements^ expression-maker^ expr-lits^ expr-terms+^ expr-tails^ statements^
fields^ methods^ ctors^ interfaces^ classes^ top-forms^ id^) fields^ methods^ ctors^ interfaces^ classes^ top-forms^ id^)
(export language-forms^ int+acc^) (export language-forms^)
(define unique-base (define unique-base
(simple-expression (choose ((literals (list null-lit boolean-lits textual-lits prim-numeric-lits double-lits))
(list (literals (list null-lit boolean-lits textual-lits prim-numeric-lits double-lits)) this
this identifier
identifier new-class
(new-class (eta expression)) simple-method-call
(simple-method-call (eta expression)) (sequence (O_PAREN (eta expression) C_PAREN) id)
(sequence (O_PAREN (eta expression) C_PAREN) id "expression") (sequence (! (eta expression)) id "conditional expression")
(sequence (! (eta expression)) id "conditional expression") (sequence (MINUS (eta expression)) id "negation expression")
(sequence (MINUS (eta expression)) id "negation expression") (cast (value+name-type prim-type))
(cast (value+name-type prim-type) (eta expression)) super-call
(super-call (eta expression)) checks) "expression"))
(checks (eta expression)))))
(define unique-end (define unique-end
(simple-expression (choose (field-access-end
(list field-access-end method-call-end
(method-call-end (eta expression)) (binary-expression-end (bin-ops (list math-ops compare-ops bool-ops bit-ops)))
(binary-expression-end (bin-ops (list math-ops compare-ops bool-ops bit-ops)) instanceof-back) "expression"))
(eta expression))
instanceof-back)))
(define expression (define expression
(sequence (unique-base (repeat unique-end)) id "expression")) (sequence (unique-base (repeat unique-end)) id "expression"))
(define stmt-expr (define stmt-expr
(simple-expression (list (new-class expression) (choose (new-class
(super-call expression) super-call
(sequence (expression (method-call-end expression)) (sequence (expression (method-call-end expression))
id "method call") id "method call")
(assignment (assignment
(choose (identifier (choose (identifier
(sequence (unique-base field-access-end) id)) (sequence (unique-base field-access-end) id))
"assignee") "assignee")
EQUAL expression)))) EQUAL)) "expression"))
(define statement (define statement
(make-statement (make-statement
@ -734,39 +728,22 @@
(sequence (stmt-expr SEMI_COLON) id "statement")))) (sequence (stmt-expr SEMI_COLON) id "statement"))))
(define field (make-field #f (value+name-type prim-type) expression #t)) (define field (make-field #f (value+name-type prim-type) expression #t))
(define intermediate+access-field (make-field access-mods (value+name-type prim-type) expression #t))
(define method-sig-no-abs (define method-sig-no-abs
(method-signature #f (method-type (value+name-type prim-type)) args #f identifier)) (method-signature #f (method-type (value+name-type prim-type)) args #f identifier))
(define method-sig-abs (define method-sig-abs
(method-signature tok:abstract (method-type (value+name-type prim-type)) args #f identifier)) (method-signature tok:abstract (method-type (value+name-type prim-type)) args #f identifier))
(define intermediate+access-method-sig-no-abs
(method-signature access-mods (method-type (value+name-type prim-type)) args #f identifier))
(define intermediate+access-method-sig-abs
(method-signature (method-mods access-mods)
(method-type (value+name-type prim-type)) args #f identifier))
(define method (define method
(choose ((make-method method-sig-no-abs statement) (choose ((make-method method-sig-no-abs statement)
(method-header method-sig-abs)) "method definition")) (method-header method-sig-abs)) "method definition"))
(define intermediate+access-method
(choose ((make-method intermediate+access-method-sig-no-abs statement)
(method-header intermediate+access-method-sig-abs)) "method definition"))
(define constructor (define constructor
(make-constructor #f (make-constructor #f
(choose ((sequence ((super-call expression) (repeat statement)) id) (choose ((sequence ((super-call expression) (repeat statement)) id)
(sequence ((this-call expression) (repeat statement)) id) (sequence ((this-call expression) (repeat statement)) id)
(repeat statement)) "constructor body"))) (repeat statement)) "constructor body")))
(define intermediate+access-constructor
(make-constructor access-mods
(choose ((sequence ((super-call expression) (repeat statement)) id)
(sequence ((this-call expression) (repeat statement)) id)
(repeat statement)) "constructor body")))
(define interface (define interface
(interface-def (interface-def
#f #f
@ -778,21 +755,95 @@
(implements-dec (comma-sep identifier "interfaces")) (implements-dec (comma-sep identifier "interfaces"))
(repeat (class-body (list field method constructor))))) (repeat (class-body (list field method constructor)))))
(define intermediate+access-class
(class-def tok:abstract (extend-dec identifier) (implements-dec (comma-sep identifier "interfaces"))
(repeat (class-body (list intermediate+access-field
intermediate+access-method
intermediate+access-constructor)))))
(define program (define program
(make-program #f (repeat import-dec) (repeat (top-member (list class interface))))) (make-program #f (repeat import-dec) (repeat (top-member (list class interface)))))
(define intermediate+access-prog
(make-program #f (repeat import-dec)
(repeat (top-member (list intermediate+access-class interface)))))
) )
(define-unit intermediate+access-grammar@
(import combinator-parser^ java-operators^ java-separators^ (prefix tok: java-definition-keywords^)
java-statement-keywords^ java-type-keywords^ java-ids^
java-types^ java-access^ java-ops^ general-productions^ java-variables^
expression-maker^ expr-lits^ expr-terms+^ expr-tails^ statements^
fields^ methods^ ctors^ interfaces^ classes^ top-forms^ id^)
(export language-forms^)
(define unique-base
(choose ((literals (list null-lit boolean-lits textual-lits prim-numeric-lits double-lits))
this
identifier
new-class
simple-method-call
(sequence (O_PAREN (eta expression) C_PAREN) id)
(sequence (! (eta expression)) id "conditional expression")
(sequence (MINUS (eta expression)) id "negation expression")
(cast (value+name-type prim-type))
super-call
checks) "expression"))
(define unique-end
(choose (field-access-end
method-call-end
(binary-expression-end (bin-ops (list math-ops compare-ops bool-ops bit-ops)))
instanceof-back) "expression"))
(define expression
(sequence (unique-base (repeat unique-end)) id "expression"))
(define stmt-expr
(choose (new-class
super-call
(sequence (expression (method-call-end expression))
id "method call")
(assignment
(choose (identifier
(sequence (unique-base field-access-end) id))
"assignee")
EQUAL)) "expression"))
(define statement
(make-statement
(list (if-s expression (eta statement) #f)
(return-s expression #t)
(variable-declaration (value+name-type prim-type) expression #f "local variable")
(block (repeat (eta statement)))
(sequence (stmt-expr SEMI_COLON) id "statement"))))
(define field (make-field access-mods (value+name-type prim-type) expression #t))
(define method-sig-no-abs
(method-signature access-mods (method-type (value+name-type prim-type)) args #f identifier))
(define method-sig-abs
(method-signature (method-mods access-mods)
(method-type (value+name-type prim-type)) args #f identifier))
(define method
(choose ((make-method method-sig-no-abs statement)
(method-header method-sig-abs)) "method definition"))
(define constructor
(make-constructor access-mods
(choose ((sequence ((super-call expression) (repeat statement)) id)
(sequence ((this-call expression) (repeat statement)) id)
(repeat statement)) "constructor body")))
(define interface
(interface-def
#f
(sequence (tok:extends (comma-sep identifier "interfaces")) id "extends")
(repeat (sequence (method-sig-no-abs SEMI_COLON) id "method signature"))))
(define class
(class-def tok:abstract (extend-dec identifier) (implements-dec (comma-sep identifier "interfaces"))
(repeat (class-body (list field method constructor)))))
(define program
(make-program #f (repeat import-dec)
(repeat (top-member (list class interface)))))
)
(define-unit advanced-grammar@ (define-unit advanced-grammar@
(import combinator-parser^ java-operators^ java-separators^ (prefix tok: java-definition-keywords^) (import combinator-parser^ java-operators^ java-separators^ (prefix tok: java-definition-keywords^)
java-statement-keywords^ java-type-keywords^ java-ids^ java-statement-keywords^ java-type-keywords^ java-ids^
@ -807,7 +858,7 @@
(list (literals (list null-lit boolean-lits textual-lits prim-numeric-lits double-lits)) (list (literals (list null-lit boolean-lits textual-lits prim-numeric-lits double-lits))
this this
IDENTIFIER IDENTIFIER
(new-class (eta expression)) new-class
(simple-method-call (eta expression)) (simple-method-call (eta expression))
(new-array (value+name-type prim-type) (eta expression)) (new-array (value+name-type prim-type) (eta expression))
(sequence (O_PAREN (eta expression) C_PAREN) id "expression") (sequence (O_PAREN (eta expression) C_PAREN) id "expression")
@ -831,7 +882,7 @@
(sequence (unique-base (repeat unique-end)) id "expression")) (sequence (unique-base (repeat unique-end)) id "expression"))
(define stmt-expr (define stmt-expr
(simple-expression (list (new-class expression) (simple-expression (list new-class
(super-call expression) (super-call expression)
(sequence (expression (sequence (expression
(method-call-end expression)) id "method call") (method-call-end expression)) id "method call")
@ -1056,6 +1107,31 @@
java-terminals@ types@ mods@ operators@ general@ unqualified-java-variables@ java-terminals@ types@ mods@ operators@ general@ unqualified-java-variables@
expressions@ statements@ members@ interface@ class@ top-forms@ expressions@ statements@ members@ interface@ class@ top-forms@
intermediate-grammar@ token@ interactions-parsers@)) intermediate-grammar@ token@ interactions-parsers@))
(define-compound-unit/infer intermediate+access-file-parser@
(import)
(export parsers^ token-proc^ err^)
(link java-dictionary@ combinator-parser-tools@ file-constants@ id@
java-terminals@ types@ mods@ operators@ general@ unqualified-java-variables@
expressions@ statements@ members@ interface@ class@ top-forms@
intermediate+access-grammar@ token@ definition-parsers@))
(define-compound-unit/infer intermediate+access-definitions-parser@
(import)
(export parsers^ token-proc^ err^)
(link java-dictionary@ combinator-parser-tools@ de-constants@ id@
java-terminals@ types@ mods@ operators@ general@ unqualified-java-variables@
expressions@ statements@ members@ interface@ class@ top-forms@
intermediate+access-grammar@ token@ definition-parsers@))
(define-compound-unit/infer intermediate+access-interactions-parsers@
(import)
(export parsers^ token-proc^ err^)
(link java-dictionary@ combinator-parser-tools@ interact-constants@ id@
java-terminals@ types@ mods@ operators@ general@ unqualified-java-variables@
expressions@ statements@ members@ interface@ class@ top-forms@
intermediate+access-grammar@ token@ interactions-parsers@))
(define-compound-unit/infer advanced-file-parser@ (define-compound-unit/infer advanced-file-parser@
(import) (import)
@ -1084,6 +1160,7 @@
; ;
(provide advanced-file-parser@ advanced-definitions-parser@ advanced-interactions-parsers@ (provide advanced-file-parser@ advanced-definitions-parser@ advanced-interactions-parsers@
intermediate+access-file-parser@ intermediate+access-definitions-parser@ intermediate+access-interactions-parsers@
intermediate-file-parser@ intermediate-definitions-parser@ intermediate-interactions-parsers@ intermediate-file-parser@ intermediate-definitions-parser@ intermediate-interactions-parsers@
beginner-file-parser@ beginner-definitions-parser@ beginner-interactions-parsers@ beginner-file-parser@ beginner-definitions-parser@ beginner-interactions-parsers@
parsers^ token-proc^) parsers^ token-proc^)

View File

@ -344,6 +344,14 @@
(define-values/invoke-unit intermediate-interactions-parsers@ (define-values/invoke-unit intermediate-interactions-parsers@
(import) (import)
(export (prefix intermediate-int: parsers^) (prefix intermediate-int: err^))) (export (prefix intermediate-int: parsers^) (prefix intermediate-int: err^)))
(define-values/invoke-unit intermediate+access-definitions-parser@
(import)
(export (prefix intermediate+acc-def: parsers^) (prefix intermediate+acc-def: err^)))
(define-values/invoke-unit intermediate+access-interactions-parsers@
(import)
(export (prefix intermediate+acc-int: parsers^) (prefix intermediate+acc-int: err^)))
(define-values/invoke-unit advanced-definitions-parser@ (define-values/invoke-unit advanced-definitions-parser@
(import) (import)
@ -367,7 +375,8 @@
beginner-def:err? beginner-def:err-msg beginner-def:err-src)) beginner-def:err? beginner-def:err-msg beginner-def:err-src))
(define parse-intermediate (parse intermediate-def:parse-program (define parse-intermediate (parse intermediate-def:parse-program
intermediate-def:err? intermediate-def:err-msg intermediate-def:err-src)) intermediate-def:err? intermediate-def:err-msg intermediate-def:err-src))
(define parse-intermediate+access null #;(parse def:parse-intermediate+access def:err? def:err-msg def:err-src)) (define parse-intermediate+access (parse intermediate+acc-def:parse-program
intermediate+acc-def:err? intermediate+acc-def:err-msg intermediate+acc-def:err-src))
(define parse-advanced (parse advanced-def:parse-program (define parse-advanced (parse advanced-def:parse-program
advanced-def:err? advanced-def:err-msg advanced-def:err-src)) advanced-def:err? advanced-def:err-msg advanced-def:err-src))
(define parse-beginner-interact (parse beginner-int:parse-program (define parse-beginner-interact (parse beginner-int:parse-program