Corrected a bad ai choice
svn: r7321
This commit is contained in:
parent
dec670ff75
commit
d8181a2a60
|
@ -8,7 +8,7 @@
|
||||||
(provide combinator-parser-tools@)
|
(provide combinator-parser-tools@)
|
||||||
|
|
||||||
(define-unit main-parser@
|
(define-unit main-parser@
|
||||||
(import error^ out^ error-format-parameters^ language-format-parameters^)
|
(import error^ out^ error-format-parameters^ language-format-parameters^ ranking-parameters^)
|
||||||
(export parser^)
|
(export parser^)
|
||||||
|
|
||||||
(define (sort-used reses)
|
(define (sort-used reses)
|
||||||
|
@ -73,8 +73,22 @@
|
||||||
(!!! (car (repeat-res-stop
|
(!!! (car (repeat-res-stop
|
||||||
(sort-repeats possible-repeat-errors))))))]
|
(sort-repeats possible-repeat-errors))))))]
|
||||||
[(and (choice-res? result) (fail-type? (choice-res-errors result)))
|
[(and (choice-res? result) (fail-type? (choice-res-errors result)))
|
||||||
(!!! (fail-type->message
|
(cond
|
||||||
(choice-res-errors result)))]
|
[(and (null? possible-repeat-errors)
|
||||||
|
(null? possible-errors)) (!!! (fail-type->message (choice-res-errors result)))]
|
||||||
|
[(or #;(not (null? possible-repeat-errors))
|
||||||
|
(not (null? possible-errors)))
|
||||||
|
(let ([fails (cons (choice-res-errors result)
|
||||||
|
(map res-possible-error possible-errors))])
|
||||||
|
#;(printf "we are gonna call fail-type->message ~a ~n" fails)
|
||||||
|
;uncomment printf, stop the loop, get the error... wtf
|
||||||
|
(!!! (fail-type->message
|
||||||
|
(make-options-fail (rank-choice (map fail-type-chance fails))
|
||||||
|
#f
|
||||||
|
(choice-res-name result)
|
||||||
|
(rank-choice (map fail-type-used fails))
|
||||||
|
(rank-choice (map fail-type-may-use fails))
|
||||||
|
fails))))])]
|
||||||
[(not (null? possible-errors))
|
[(not (null? possible-errors))
|
||||||
;(printf "choice or pair fail~n")
|
;(printf "choice or pair fail~n")
|
||||||
(!!! (fail-type->message
|
(!!! (fail-type->message
|
||||||
|
|
|
@ -602,7 +602,7 @@
|
||||||
(export top-forms^)
|
(export top-forms^)
|
||||||
|
|
||||||
(define (top-member mems)
|
(define (top-member mems)
|
||||||
(choice mems "program body"))
|
(choice mems "class or interface"))
|
||||||
|
|
||||||
;Note -- should enfore name to be identifier.identifier instead of name
|
;Note -- should enfore name to be identifier.identifier instead of name
|
||||||
(define import-dec
|
(define import-dec
|
||||||
|
@ -613,12 +613,12 @@
|
||||||
(sequence (import name SEMI_COLON) id)) "import declaration")))
|
(sequence (import name SEMI_COLON) id)) "import declaration")))
|
||||||
|
|
||||||
(define (make-program package import body)
|
(define (make-program package import body)
|
||||||
(let ([p&i (sequence (package import body) id "program")]
|
(let ([p&i (sequence (package import body) id "package program")]
|
||||||
[p (sequence (package body) id "program")]
|
[p (sequence (package body) id "package program")]
|
||||||
[i (sequence (import body) id "program")])
|
[i (sequence (import body) id "program")])
|
||||||
(cond
|
(cond
|
||||||
[(and package import)
|
[(and package import)
|
||||||
(choice (list p&i p i body) "program")]
|
(choice (list p&i i ) "program")]
|
||||||
[package
|
[package
|
||||||
(choice (list p body) "program")]
|
(choice (list p body) "program")]
|
||||||
[import
|
[import
|
||||||
|
@ -837,14 +837,14 @@
|
||||||
(if-s (block #t) #f)
|
(if-s (block #t) #f)
|
||||||
(variable-declaration (value+name-type prim-type) expression #f "local variable")
|
(variable-declaration (value+name-type prim-type) expression #f "local variable")
|
||||||
(block #t)
|
(block #t)
|
||||||
(sequence (stmt-expr SEMI_COLON) id)) "statement")
|
|
||||||
(choose ((return-s #t)
|
|
||||||
(if-s (block #t) #f)
|
|
||||||
(assignment
|
(assignment
|
||||||
(choose (identifier
|
(choose (identifier
|
||||||
(sequence (unique-base (repeat unique-end) field-access-end) id))
|
(sequence (unique-base (repeat unique-end) field-access-end) id))
|
||||||
"assignee")
|
"assignee")
|
||||||
EQUAL)
|
EQUAL)
|
||||||
|
(sequence (stmt-expr SEMI_COLON) id)) "statement")
|
||||||
|
(choose ((return-s #t)
|
||||||
|
(if-s (block #t) #f)
|
||||||
(block #t)) "statement")))
|
(block #t)) "statement")))
|
||||||
|
|
||||||
(define statement (statement-c #f))
|
(define statement (statement-c #f))
|
||||||
|
@ -1007,8 +1007,8 @@
|
||||||
|
|
||||||
(define program
|
(define program
|
||||||
(make-program (sequence (tok:package name SEMI_COLON) id "package specification")
|
(make-program (sequence (tok:package name SEMI_COLON) id "package specification")
|
||||||
(repeat-greedy import-dec)
|
(repeat-greedy import-dec)
|
||||||
(repeat-greedy (top-member (list class interface)))))
|
(repeat-greedy (top-member (list class interface)))))
|
||||||
|
|
||||||
(define interact
|
(define interact
|
||||||
(choose (field expression (statement-c #t)) "interactive program"))
|
(choose (field expression (statement-c #t)) "interactive program"))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user