Different errors returned for cache: true vs false

27 views
Skip to first unread message

Ali Tavakoli

unread,
Aug 26, 2016, 2:26:54 PM8/26/16
to PEG.js: Parser Generator for JavaScript
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






David Majda

unread,
Aug 28, 2016, 2:45:39 PM8/28/16
to Ali Tavakoli, PEG.js: Parser Generator for JavaScript
Hi Ali,

This looks like a bug. I simplified the test case you provided and filed an issue.

Thank for the question/report!

David

--
You received this message because you are subscribed to the Google Groups "PEG.js: Parser Generator for JavaScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pegjs+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
David Majda
http://majda.cz/
Reply all
Reply to author
Forward
0 new messages