Display parse matches or state on ParseError
I'm really new to PEGs so I'm sure I'm writing some totally messed up grammars. When the parse succeeds, I'm able to tweak things because there's a very helpful dump that shows me exactly the process the parser used to group everything together. The problem lies when the parsing fails. Although a line number and offset is very helpful, I'm unclear on exactly which rule the parser was currently in when it failed, etc.
I would really love some kind of character-by-character dump showing the entire process of what was going on. It would really help clear up all of the stupid mistakes I'm sure I'm making. In other words, I basically want to see the match dump regardless of whether the parsing succeeds.
Is this a challenging feature to add?
I tried adding the line Match.new(input, events, opts[:offset]).dump before the check that raises the ParseError, but the output doesn't appear to show any of my actual input text?
+1 to that. I'm writing a somewhat complex grammar, and I'm stuck for three days in a really strange problem. Adding this would certainly help people in this same situation.
I work since 2 weeks to make a sql grammar but the i get some ParseError but i can't recognize why some query’s work and some not. e.g. p sql_parser = SQLite.parse('Select * From user;') # ~> fine p sql_parser = SQLite.parse('SELECT * FROM tab1 ,tab2;') # ~> fine too p sql_parser = SQLite.parse('SELECT bla FROM tab2 where schema==1;') # ~> not ^