```
iterationStatement
: Do statement While '(' expressionSequence ')' eos # DoStatement
| While '(' expressionSequence ')' statement # WhileStatement
| For '(' expressionSequence? ';' expressionSequence? ';' expressionSequence? ')' statement # ForStatement
| For '(' varModifier variableDeclarationList ';' expressionSequence? ';' expressionSequence? ')'
statement # ForVarStatement
| For '(' singleExpression (In | Identifier{this.p("of")}?) expressionSequence ')' statement # ForInStatement
| For '(' varModifier variableDeclaration (In | Identifier{this.p("of")}?) expressionSequence ')' statement # ForVarInStatement
;
```
I use the IDEA antlr4 plugin for test rules , it is ok!
But when I generate the parsetree ,it throws a error !
In fact, there should be no errors here.
```
ANTLRFileStream afis = new ANTLRFileStream("demo.js");
JavaScriptLexer lexer = new JavaScriptLexer(afis);
CommonTokenStream tokens = new CommonTokenStream(lexer);
JavaScriptParser parser = new JavaScriptParser(tokens);
ParseTree tree= parser.program();
System.out.println(tree.toStringTree(parser));
```
console.out
```
line 1:11 rule iterationStatement failed predicate: {this.p("of")}?
line 1:15 no viable alternative at input ')'
(program (sourceElements (sourceElement (statement (iterationStatement for ( (singleExpression let) dd in))) (sourceElement (statement (expressionStatement (expressionSequence (singleExpression o)) (eos ))))) (sourceElement (statement (block { (statementList (statement (expressionStatement (expressionSequence (singleExpression (singleExpression o) [ (expressionSequence (singleExpression i)) ])) (eos ;)))) })))) <EOF>)
2
```