private AstNode arrayComprehension ( AstNode result , int pos ) throws IOException { List < ArrayComprehensionLoop > loops = new ArrayList < ArrayComprehensionLoop > ( ) ; while ( peekToken ( ) == Token . FOR ) { loops . add ( arrayComprehensionLoop ( ) ) ; } int ifPos = - 1 ; ConditionData data = null ; if ( peekToken ( ) == Token . IF ) { consumeToken ( ) ; ifPos = ts . tokenBeg - pos ; data = condition ( ) ; } mustMatchToken ( Token . RB , "msg.no.bracket.arg" , true ) ; ArrayComprehension pn = new ArrayComprehension ( pos , ts . tokenEnd - pos ) ; pn . setResult ( result ) ; pn . setLoops ( loops ) ; if ( data != null ) { pn . setIfPosition ( ifPos ) ; pn . setFilter ( data . condition ) ; pn . setFilterLp ( data . lp - pos ) ; pn . setFilterRp ( data . rp - pos ) ; } return pn ; }
Parse a JavaScript 1 . 7 Array comprehension .