|
|
Fix error recovery & error reporting
|
||
|
|
|
||
|
|
Step 1: remove existing implementation
|
||
|
|
|
||
|
|
OK * Put reason parser in its own file
|
||
|
|
OK * Remove menhir error management:
|
||
|
|
OK - remove "error" token
|
||
|
|
OK - remove error messages infrastructure
|
||
|
|
OK Now message defaults to "Syntax error"
|
||
|
|
* Fix reported error location (when recovering or not)
|
||
|
|
|
||
|
|
Step 2: reintroduce recovery
|
||
|
|
* Preprocess grammar:
|
||
|
|
- check exhaustivity of recovery
|
||
|
|
- produce a mapping of automaton states to automaton-items suitable for
|
||
|
|
recovery
|
||
|
|
* Instrument parser:
|
||
|
|
- first, always complete the AST and drop user input (":'(")
|
||
|
|
- second, introduce an heuristic for recovering based on location
|
||
|
|
|
||
|
|
Step 3: reintroduce error messages
|
||
|
|
* Ask the crowd:
|
||
|
|
What should messages look like?
|
||
|
|
Which situations are tricky or counter-intuitive?
|
||
|
|
* Make a testsuite representative of common syntax errors
|
||
|
|
* ... Design an analysis sufficient to produce the messages automatically
|
||
|
|
:P
|