Is it expected that enabling/disabling the cache affects error returned when a match fails? For some grammars, when the cache is enabled, a failed match will be reported in an earlier part of the input; and when disabled, it gets reported closer to or at the token that failed.
For example, suppose the following grammar (I've removed the actions to make it less cluttered; available upon request):
Program
= SourceElements?
SourceElements
= RuleStatement (__ RuleStatement)*
EOS
= _ ("\r"? "\n" / !.)
_
= [ \t]*
__
= [ \t\r\n]*
GroupStatement
= "group" _ ($[a-z]+)? _ "{" EOS
__ GroupBody? "}" EOS
GroupBody
= (!RuleStatement GroupBodyStatement __)*
GroupLeadingRuleStatement
GroupLeadingRuleStatement
= RuleStatement __ (GroupBody __)?
GroupBodyStatement
= VariableStatement
/ RuleStatement
RuleStatement
= GroupStatement
/ CheckStatement
VariableStatement
= "var" _ id:$[a-z]+ EOS
CheckStatement
= "check" _ id:$[a-z]+ EOS
... which accepts input like this (assume the grammar has to be structured this way to construct the final AST; more details can be provided if it helps):
group a {
group b {
var c
group d {
var e
check f
}
}
}
Let's say I input the above, but I misspell "check" as "chekc". With parsing with cache disabled, I get the following error (as expected):
Line 6, column 7: Expected "check", "group", "var", or [ \t\r\n] but "c" found.
But with cache enabled, the same input gives me this error:
Line 2, column 3: Expected "var", "}", or [ \t\r\n] but "g" found.
Is this expected? Should the cache affect where a failed match is identified?
This was tested on v0.10 (the online version & a local clone).
Here are the respective traces:
(cached)
1:1-1:1 rule.enter Program
1:1-1:1 rule.enter SourceElements
1:1-1:1 rule.enter RuleStatement
1:1-1:1 rule.enter GroupStatement
1:6-1:6 rule.enter _
1:6-1:7 rule.match _
1:8-1:8 rule.enter _
1:8-1:9 rule.match _
1:10-1:10 rule.enter EOS
1:10-1:10 rule.enter _
1:10-1:10 rule.match _
1:10-2:1 rule.match EOS
2:1-2:1 rule.enter __
2:1-2:3 rule.match __
2:3-2:3 rule.enter GroupBody
2:3-2:3 rule.enter RuleStatement
2:3-2:3 rule.enter GroupStatement
2:8-2:8 rule.enter _
2:8-2:9 rule.match _
2:10-2:10 rule.enter _
2:10-2:11 rule.match _
2:12-2:12 rule.enter EOS
2:12-2:12 rule.enter _
2:12-2:12 rule.match _
2:12-3:1 rule.match EOS
3:1-3:1 rule.enter __
3:1-3:5 rule.match __
3:5-3:5 rule.enter GroupBody
3:5-3:5 rule.enter RuleStatement
3:5-3:5 rule.enter GroupStatement
3:5-3:5 rule.fail GroupStatement
3:5-3:5 rule.enter CheckStatement
3:5-3:5 rule.fail CheckStatement
3:5-3:5 rule.fail RuleStatement
3:5-3:5 rule.enter GroupBodyStatement
3:5-3:5 rule.enter VariableStatement
3:8-3:8 rule.enter _
3:8-3:9 rule.match _
3:10-3:10 rule.enter EOS
3:10-3:10 rule.enter _
3:10-3:10 rule.match _
3:10-4:1 rule.match EOS
3:5-4:1 rule.match VariableStatement
3:5-4:1 rule.match GroupBodyStatement
4:1-4:1 rule.enter __
4:1-4:5 rule.match __
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.enter GroupBodyStatement
4:5-4:5 rule.enter VariableStatement
4:5-4:5 rule.fail VariableStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupBodyStatement
4:5-4:5 rule.enter GroupLeadingRuleStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupLeadingRuleStatement
3:5-3:5 rule.fail GroupBody
2:3-2:3 rule.fail GroupStatement
2:3-2:3 rule.enter CheckStatement
2:3-2:3 rule.fail CheckStatement
2:3-2:3 rule.fail RuleStatement
2:3-2:3 rule.enter GroupBodyStatement
2:3-2:3 rule.enter VariableStatement
2:3-2:3 rule.fail VariableStatement
2:3-2:3 rule.enter RuleStatement
2:3-2:3 rule.fail RuleStatement
2:3-2:3 rule.fail GroupBodyStatement
2:3-2:3 rule.enter GroupLeadingRuleStatement
2:3-2:3 rule.enter RuleStatement
2:3-2:3 rule.fail RuleStatement
2:3-2:3 rule.fail GroupLeadingRuleStatement
2:3-2:3 rule.fail GroupBody
1:1-1:1 rule.fail GroupStatement
1:1-1:1 rule.enter CheckStatement
1:1-1:1 rule.fail CheckStatement
1:1-1:1 rule.fail RuleStatement
1:1-1:1 rule.fail SourceElements
1:1-1:1 rule.match Program
(uncached)
1:1-1:1 rule.enter Program
1:1-1:1 rule.enter SourceElements
1:1-1:1 rule.enter RuleStatement
1:1-1:1 rule.enter GroupStatement
1:6-1:6 rule.enter _
1:6-1:7 rule.match _
1:8-1:8 rule.enter _
1:8-1:9 rule.match _
1:10-1:10 rule.enter EOS
1:10-1:10 rule.enter _
1:10-1:10 rule.match _
1:10-2:1 rule.match EOS
2:1-2:1 rule.enter __
2:1-2:3 rule.match __
2:3-2:3 rule.enter GroupBody
2:3-2:3 rule.enter RuleStatement
2:3-2:3 rule.enter GroupStatement
2:8-2:8 rule.enter _
2:8-2:9 rule.match _
2:10-2:10 rule.enter _
2:10-2:11 rule.match _
2:12-2:12 rule.enter EOS
2:12-2:12 rule.enter _
2:12-2:12 rule.match _
2:12-3:1 rule.match EOS
3:1-3:1 rule.enter __
3:1-3:5 rule.match __
3:5-3:5 rule.enter GroupBody
3:5-3:5 rule.enter RuleStatement
3:5-3:5 rule.enter GroupStatement
3:5-3:5 rule.fail GroupStatement
3:5-3:5 rule.enter CheckStatement
3:5-3:5 rule.fail CheckStatement
3:5-3:5 rule.fail RuleStatement
3:5-3:5 rule.enter GroupBodyStatement
3:5-3:5 rule.enter VariableStatement
3:8-3:8 rule.enter _
3:8-3:9 rule.match _
3:10-3:10 rule.enter EOS
3:10-3:10 rule.enter _
3:10-3:10 rule.match _
3:10-4:1 rule.match EOS
3:5-4:1 rule.match VariableStatement
3:5-4:1 rule.match GroupBodyStatement
4:1-4:1 rule.enter __
4:1-4:5 rule.match __
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.enter GroupBodyStatement
4:5-4:5 rule.enter VariableStatement
4:5-4:5 rule.fail VariableStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupBodyStatement
4:5-4:5 rule.enter GroupLeadingRuleStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupLeadingRuleStatement
3:5-3:5 rule.fail GroupBody
2:3-2:3 rule.fail GroupStatement
2:3-2:3 rule.enter CheckStatement
2:3-2:3 rule.fail CheckStatement
2:3-2:3 rule.fail RuleStatement
2:3-2:3 rule.enter GroupBodyStatement
2:3-2:3 rule.enter VariableStatement
2:3-2:3 rule.fail VariableStatement
2:3-2:3 rule.enter RuleStatement
2:3-2:3 rule.enter GroupStatement
2:8-2:8 rule.enter _
2:8-2:9 rule.match _
2:10-2:10 rule.enter _
2:10-2:11 rule.match _
2:12-2:12 rule.enter EOS
2:12-2:12 rule.enter _
2:12-2:12 rule.match _
2:12-3:1 rule.match EOS
3:1-3:1 rule.enter __
3:1-3:5 rule.match __
3:5-3:5 rule.enter GroupBody
3:5-3:5 rule.enter RuleStatement
3:5-3:5 rule.enter GroupStatement
3:5-3:5 rule.fail GroupStatement
3:5-3:5 rule.enter CheckStatement
3:5-3:5 rule.fail CheckStatement
3:5-3:5 rule.fail RuleStatement
3:5-3:5 rule.enter GroupBodyStatement
3:5-3:5 rule.enter VariableStatement
3:8-3:8 rule.enter _
3:8-3:9 rule.match _
3:10-3:10 rule.enter EOS
3:10-3:10 rule.enter _
3:10-3:10 rule.match _
3:10-4:1 rule.match EOS
3:5-4:1 rule.match VariableStatement
3:5-4:1 rule.match GroupBodyStatement
4:1-4:1 rule.enter __
4:1-4:5 rule.match __
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.enter GroupBodyStatement
4:5-4:5 rule.enter VariableStatement
4:5-4:5 rule.fail VariableStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupBodyStatement
4:5-4:5 rule.enter GroupLeadingRuleStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupLeadingRuleStatement
3:5-3:5 rule.fail GroupBody
2:3-2:3 rule.fail GroupStatement
2:3-2:3 rule.enter CheckStatement
2:3-2:3 rule.fail CheckStatement
2:3-2:3 rule.fail RuleStatement
2:3-2:3 rule.fail GroupBodyStatement
2:3-2:3 rule.enter GroupLeadingRuleStatement
2:3-2:3 rule.enter RuleStatement
2:3-2:3 rule.enter GroupStatement
2:8-2:8 rule.enter _
2:8-2:9 rule.match _
2:10-2:10 rule.enter _
2:10-2:11 rule.match _
2:12-2:12 rule.enter EOS
2:12-2:12 rule.enter _
2:12-2:12 rule.match _
2:12-3:1 rule.match EOS
3:1-3:1 rule.enter __
3:1-3:5 rule.match __
3:5-3:5 rule.enter GroupBody
3:5-3:5 rule.enter RuleStatement
3:5-3:5 rule.enter GroupStatement
3:5-3:5 rule.fail GroupStatement
3:5-3:5 rule.enter CheckStatement
3:5-3:5 rule.fail CheckStatement
3:5-3:5 rule.fail RuleStatement
3:5-3:5 rule.enter GroupBodyStatement
3:5-3:5 rule.enter VariableStatement
3:8-3:8 rule.enter _
3:8-3:9 rule.match _
3:10-3:10 rule.enter EOS
3:10-3:10 rule.enter _
3:10-3:10 rule.match _
3:10-4:1 rule.match EOS
3:5-4:1 rule.match VariableStatement
3:5-4:1 rule.match GroupBodyStatement
4:1-4:1 rule.enter __
4:1-4:5 rule.match __
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.enter GroupBodyStatement
4:5-4:5 rule.enter VariableStatement
4:5-4:5 rule.fail VariableStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupBodyStatement
4:5-4:5 rule.enter GroupLeadingRuleStatement
4:5-4:5 rule.enter RuleStatement
4:5-4:5 rule.enter GroupStatement
4:10-4:10 rule.enter _
4:10-4:11 rule.match _
4:12-4:12 rule.enter _
4:12-4:13 rule.match _
4:14-4:14 rule.enter EOS
4:14-4:14 rule.enter _
4:14-4:14 rule.match _
4:14-5:1 rule.match EOS
5:1-5:1 rule.enter __
5:1-5:7 rule.match __
5:7-5:7 rule.enter GroupBody
5:7-5:7 rule.enter RuleStatement
5:7-5:7 rule.enter GroupStatement
5:7-5:7 rule.fail GroupStatement
5:7-5:7 rule.enter CheckStatement
5:7-5:7 rule.fail CheckStatement
5:7-5:7 rule.fail RuleStatement
5:7-5:7 rule.enter GroupBodyStatement
5:7-5:7 rule.enter VariableStatement
5:10-5:10 rule.enter _
5:10-5:11 rule.match _
5:12-5:12 rule.enter EOS
5:12-5:12 rule.enter _
5:12-5:12 rule.match _
5:12-6:1 rule.match EOS
5:7-6:1 rule.match VariableStatement
5:7-6:1 rule.match GroupBodyStatement
6:1-6:1 rule.enter __
6:1-6:7 rule.match __
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.enter GroupBodyStatement
6:7-6:7 rule.enter VariableStatement
6:7-6:7 rule.fail VariableStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupBodyStatement
6:7-6:7 rule.enter GroupLeadingRuleStatement
6:7-6:7 rule.enter RuleStatement
6:7-6:7 rule.enter GroupStatement
6:7-6:7 rule.fail GroupStatement
6:7-6:7 rule.enter CheckStatement
6:7-6:7 rule.fail CheckStatement
6:7-6:7 rule.fail RuleStatement
6:7-6:7 rule.fail GroupLeadingRuleStatement
5:7-5:7 rule.fail GroupBody
4:5-4:5 rule.fail GroupStatement
4:5-4:5 rule.enter CheckStatement
4:5-4:5 rule.fail CheckStatement
4:5-4:5 rule.fail RuleStatement
4:5-4:5 rule.fail GroupLeadingRuleStatement
3:5-3:5 rule.fail GroupBody
2:3-2:3 rule.fail GroupStatement
2:3-2:3 rule.enter CheckStatement
2:3-2:3 rule.fail CheckStatement
2:3-2:3 rule.fail RuleStatement
2:3-2:3 rule.fail GroupLeadingRuleStatement
2:3-2:3 rule.fail GroupBody
1:1-1:1 rule.fail GroupStatement
1:1-1:1 rule.enter CheckStatement
1:1-1:1 rule.fail CheckStatement
1:1-1:1 rule.fail RuleStatement
1:1-1:1 rule.fail SourceElements
1:1-1:1 rule.match Program