Corrections to parsing errors
svn: r6951
This commit is contained in:
parent
6641a81ff2
commit
b0ac0c7c87
|
@ -53,33 +53,44 @@
|
||||||
|
|
||||||
(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 "terminal ~a~n" name))
|
#;(!!! (printf "terminal ~a~n" name))
|
||||||
|
#;(!!! (printf "input ~a~n" (cons? input)))
|
||||||
|
#;(!!! (if (eq? input return-name)
|
||||||
|
(printf "dummy given~n")
|
||||||
|
(let ([token (!!! ((!!! position-token-token) (!!! (car input))))])
|
||||||
|
(!!! (printf "Look at token ~a~n" token))
|
||||||
|
(!!! (printf "calling token-name: ~a~n" ((!!! token-name) token)))
|
||||||
|
(!!! (printf "calling pred: ~a~n" (pred token)))
|
||||||
|
(!!! (printf "called pred~n"))
|
||||||
|
(!!! (printf "car of input ~a~n" (position-token-token (car input)))))))
|
||||||
(cond
|
(cond
|
||||||
[(eq? input return-name) name]
|
[(eq? input return-name) name]
|
||||||
[(null? input)
|
[(null? input)
|
||||||
(fail-res null (make-terminal-fail rank-end last-src name 0 0 'end #f))]
|
(fail-res null (make-terminal-fail rank-end last-src name 0 0 'end #f))]
|
||||||
[(pred (if src? (position-token-token (car input)) (car input)))
|
|
||||||
(make-res (list (builder (car input))) (cdr input)
|
|
||||||
name (value (car input)) 1 #f (car input))]
|
|
||||||
[else
|
[else
|
||||||
#;(printf "Incorrect input for ~a : ~a miscase? ~a misspell? ~a ~n" name
|
(let* ([curr-input (car input)]
|
||||||
(cond
|
[token (position-token-token curr-input)])
|
||||||
[(and (position-token? (car input))
|
(cond
|
||||||
(token-value (position-token-token (car input))))
|
[(pred token)
|
||||||
(token-value (position-token-token (car input)))]
|
(make-res (list (builder curr-input)) (cdr input) name
|
||||||
[(position-token? (car input))
|
(value curr-input) 1 #f curr-input)]
|
||||||
(token-name (position-token-token (car input)))]
|
[else
|
||||||
[else (car input)])
|
#;(!!! (printf "Incorrect input for ~a : ~a miscase? ~a misspell? ~a ~n" name
|
||||||
(case? (car input))
|
(cond
|
||||||
(spell? (car input)))
|
[(token-value token)
|
||||||
(fail-res (cdr input)
|
(token-value token)]
|
||||||
(let-values ([(chance kind may-use)
|
[else (token-name token)])
|
||||||
(cond
|
(case? curr-input)
|
||||||
[(case? (car input)) (values rank-caps 'misscase 1)]
|
(spell? curr-input)))
|
||||||
[(> (spell? (car input)) 3/5)
|
(fail-res (cdr input)
|
||||||
(values (* rank-misspell (spell? (car input))) 'misspell 1)]
|
(let-values ([(chance kind may-use)
|
||||||
[(class? (car input)) (values rank-class 'missclass 1)]
|
(cond
|
||||||
[else (values rank-wrong 'wrong 0)])])
|
[(case? curr-input) (values rank-caps 'misscase 1)]
|
||||||
(make-fail chance name kind (car input) may-use)))])))))
|
[(> (spell? curr-input) 3/5)
|
||||||
|
(values (* rank-misspell
|
||||||
|
(spell? curr-input)) 'misspell 1)]
|
||||||
|
[(class? curr-input) (values rank-class 'missclass 1)]
|
||||||
|
[else (values rank-wrong 'wrong 0)])])
|
||||||
|
(make-fail chance name kind curr-input may-use)))]))])))))
|
||||||
|
|
||||||
;seq: ( (list ((list 'a) -> res)) ((list 'b) -> 'c) string -> ((list 'a) -> result)
|
;seq: ( (list ((list 'a) -> res)) ((list 'b) -> 'c) string -> ((list 'a) -> result)
|
||||||
(define seq
|
(define seq
|
||||||
|
@ -103,7 +114,8 @@
|
||||||
name (res-id (repeat-res-a r))
|
name (res-id (repeat-res-a r))
|
||||||
(res-used (repeat-res-a r))
|
(res-used (repeat-res-a r))
|
||||||
(repeat-res-stop r)
|
(repeat-res-stop r)
|
||||||
(res-first-tok (repeat-res-a r)))]))]
|
(res-first-tok (repeat-res-a r)))]
|
||||||
|
[else (!!! (printf "~a~n" r)) (error 'stop1)]))]
|
||||||
[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])
|
||||||
|
@ -139,6 +151,7 @@
|
||||||
(or id (res-id (repeat-res-a rst)))
|
(or id (res-id (repeat-res-a rst)))
|
||||||
(+ used (res-used (repeat-res-a rst)))
|
(+ used (res-used (repeat-res-a rst)))
|
||||||
(repeat-res-stop rst) tok)]
|
(repeat-res-stop rst) tok)]
|
||||||
|
[else (printf "~a~n" rst) (error 'stop2)]
|
||||||
))]
|
))]
|
||||||
[walker
|
[walker
|
||||||
(lambda (subs input previous? look-back curr-id seen used alts last-src)
|
(lambda (subs input previous? look-back curr-id seen used alts last-src)
|
||||||
|
@ -186,7 +199,8 @@
|
||||||
(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: ~n"))
|
||||||
|
#;(!!! (printf "res? ~a~n" (res? (repeat-res-a 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)]
|
||||||
|
@ -211,10 +225,13 @@
|
||||||
(and id-spot? (res-id res))
|
(and id-spot? (res-id res))
|
||||||
(res-first-tok res) new-alts)]
|
(res-first-tok res) new-alts)]
|
||||||
[(repeat-res? res)
|
[(repeat-res? res)
|
||||||
|
#;(!!! (printf "choice-res, repeat-res ~a~n"
|
||||||
|
(res? (repeat-res-a res))))
|
||||||
(next-call (repeat-res-a res) res
|
(next-call (repeat-res-a res) res
|
||||||
(res-msg (repeat-res-a res)) #f
|
(res-msg (repeat-res-a res)) #f
|
||||||
(res-first-tok (repeat-res-a res))
|
(res-first-tok (repeat-res-a res))
|
||||||
new-alts)])) lst)]
|
new-alts)]
|
||||||
|
[else (!!! (printf "~a~n" res))(error 'stop) ])) lst)]
|
||||||
[(correct-rsts) (correct-list rsts)])
|
[(correct-rsts) (correct-list rsts)])
|
||||||
#;(printf "rsts =~a~n" rsts)
|
#;(printf "rsts =~a~n" rsts)
|
||||||
#;(printf "correct-rsts ~a~n" (map res-a correct-rsts))
|
#;(printf "correct-rsts ~a~n" (map res-a correct-rsts))
|
||||||
|
@ -224,6 +241,7 @@
|
||||||
(let ([fails
|
(let ([fails
|
||||||
(map
|
(map
|
||||||
(lambda (rst)
|
(lambda (rst)
|
||||||
|
(!!! (unless (res? rst) (error 'here-we-are)))
|
||||||
(res-msg
|
(res-msg
|
||||||
(build-error rst (previous? input) (previous? return-name)
|
(build-error rst (previous? input) (previous? return-name)
|
||||||
(car next-preds) look-back used curr-id seen alts last-src)))
|
(car next-preds) look-back used curr-id seen alts last-src)))
|
||||||
|
@ -247,7 +265,8 @@
|
||||||
[(sequence-fail? fail)
|
[(sequence-fail? fail)
|
||||||
(values 'sub-seq (sequence-fail-expected fail) fail)]
|
(values 'sub-seq (sequence-fail-expected fail) fail)]
|
||||||
[(choice-fail? fail) (values 'choice null fail)]
|
[(choice-fail? fail) (values 'choice null fail)]
|
||||||
[(options-fail? fail) (values 'options null fail)]))
|
[(options-fail? fail) (values 'options null fail)]
|
||||||
|
[else (printf "~a~n" fail) (error 'stop3)]))
|
||||||
|
|
||||||
;update-src: symbol src-list src-list token -> src-list
|
;update-src: symbol src-list src-list token -> src-list
|
||||||
(define (update-src error-kind src prev-src tok)
|
(define (update-src error-kind src prev-src tok)
|
||||||
|
@ -420,7 +439,8 @@
|
||||||
[else
|
[else
|
||||||
(let* ([options (map (lambda (term) (term input last-src sub-opts)) opt-list)]
|
(let* ([options (map (lambda (term) (term input last-src sub-opts)) opt-list)]
|
||||||
#;[a (!!! (printf "choice-options ~a ~n ~a ~n~n~n" choice-names options))]
|
#;[a (!!! (printf "choice-options ~a ~n ~a ~n~n~n" choice-names options))]
|
||||||
[fails (map res-msg options)]
|
[fails (map (lambda (x) (if (res? x) (res-msg x) (error 'here-non-res)))
|
||||||
|
options)]
|
||||||
[corrects (correct-list options)]
|
[corrects (correct-list options)]
|
||||||
[ans
|
[ans
|
||||||
(cond
|
(cond
|
||||||
|
@ -454,9 +474,10 @@
|
||||||
[(repeat-res? (car subs))
|
[(repeat-res? (car subs))
|
||||||
(correct-list (cons (repeat-res-a (car subs)) (cdr subs)))]
|
(correct-list (cons (repeat-res-a (car subs)) (cdr subs)))]
|
||||||
[(pair? (car subs))
|
[(pair? (car subs))
|
||||||
(append (car subs) (correct-list (cdr subs)))]
|
(append (correct-list (car subs)) (correct-list (cdr subs)))]
|
||||||
[else (correct-list (cdr subs))])]
|
[else (correct-list (cdr subs))])]
|
||||||
[(null? subs) null]))
|
[(null? subs) null]
|
||||||
|
[else (printf "subs~a~n" subs) (error 'stop5)]))
|
||||||
|
|
||||||
(define (update-src-start src new-start)
|
(define (update-src-start src new-start)
|
||||||
(list (position-line new-start)
|
(list (position-line new-start)
|
||||||
|
|
|
@ -391,10 +391,10 @@
|
||||||
(sequence (base --) id)) "unary modification"))
|
(sequence (base --) id)) "unary modification"))
|
||||||
|
|
||||||
(define (cast type)
|
(define (cast type)
|
||||||
(sequence (O_PAREN type C_PAREN expression) "cast expression"))
|
(sequence (O_PAREN type C_PAREN expression) id "cast expression"))
|
||||||
|
|
||||||
(define instanceof-back
|
(define instanceof-back
|
||||||
(sequence (instanceof name) "instanceof expression"))
|
(sequence (instanceof name) id "instanceof expression"))
|
||||||
|
|
||||||
(define super-ctor
|
(define super-ctor
|
||||||
(choose ((sequence (super O_PAREN C_PAREN) id)
|
(choose ((sequence (super O_PAREN C_PAREN) id)
|
||||||
|
@ -714,10 +714,9 @@
|
||||||
(sequence (unique-base (repeat unique-end)) id "expression"))
|
(sequence (unique-base (repeat unique-end)) id "expression"))
|
||||||
|
|
||||||
(define stmt-expr
|
(define stmt-expr
|
||||||
(choose (new-class
|
(choose (#;new-class
|
||||||
super-call
|
#;super-call
|
||||||
(sequence (expression (method-call-end expression))
|
#;(sequence (unique-base method-call-end) 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))
|
||||||
|
@ -797,8 +796,7 @@
|
||||||
(define stmt-expr
|
(define stmt-expr
|
||||||
(choose (new-class
|
(choose (new-class
|
||||||
super-call
|
super-call
|
||||||
(sequence (expression (method-call-end expression))
|
(sequence (expression method-call-end) 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))
|
||||||
|
@ -885,7 +883,7 @@
|
||||||
(define stmt-expr
|
(define stmt-expr
|
||||||
(choose (new-class
|
(choose (new-class
|
||||||
super-call
|
super-call
|
||||||
(sequence (expression method-call-end expression) id "method call")
|
(sequence (expression method-call-end) id "method call")
|
||||||
(assignment
|
(assignment
|
||||||
(choose (identifier
|
(choose (identifier
|
||||||
(sequence (expression field-access-end) id)
|
(sequence (expression field-access-end) id)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user