diff --git a/collects/parser-tools/private-yacc/table.ss b/collects/parser-tools/private-yacc/table.ss index 7928caf..9e85688 100644 --- a/collects/parser-tools/private-yacc/table.ss +++ b/collects/parser-tools/private-yacc/table.ss @@ -136,10 +136,15 @@ (cond ((null? rest) current-guess) ((shift? (car rest)) (car rest)) - ((< (reduce-prod-num (car rest)) - (reduce-prod-num current-guess)) + ((and (reduce? (car rest)) + (< (reduce-prod-num (car rest)) + (reduce-prod-num current-guess))) (loop (car rest) (cdr rest))) - (else (loop current-guess (cdr rest)))))) + ((accept? (car rest)) + (fprintf (current-error-port) + "accept/reduce or accept/shift conflicts. Check the grammar for useless cycles of productions~n")) + (loop current-guess (cdr rest)) + (else (loop current-guess (cdr rest)))))) (else entry))))) (send a for-each-state (lambda (state)