diff options
Diffstat (limited to 'test/racc/assets/error_recovery.y')
-rw-r--r-- | test/racc/assets/error_recovery.y | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/racc/assets/error_recovery.y b/test/racc/assets/error_recovery.y new file mode 100644 index 0000000000..1fd21ac7d0 --- /dev/null +++ b/test/racc/assets/error_recovery.y @@ -0,0 +1,35 @@ +# Regression test case for the bug discussed here: +# https://github.com/whitequark/parser/issues/93 +# In short, a Racc-generated parser could go into an infinite loop when +# attempting error recovery at EOF + +class InfiniteLoop + +rule + + stmts: stmt + | error stmt + + stmt: '%' stmt + +end + +---- inner + + def parse + @errors = [] + do_parse + end + + def next_token + nil + end + + def on_error(error_token, error_value, value_stack) + # oh my, an error + @errors << [error_token, error_value] + end + +---- footer + +InfiniteLoop.new.parse
\ No newline at end of file |