nl_tokens: Iterates over the body a certain amount of times
pl_tokens: function ForCommand ( args , define ) { var lowerArgs = args . toLowerCase ( ) ; var toIndex = lowerArgs . indexOf ( ' to ' ) ; if ( toIndex === - 1 ) throw new SyntaxError ( 'FOR has no TO' ) ; var assignmentText = args . substring ( 0 , toIndex ) . trim ( ) ; var stepIndex = lowerArgs . indexOf ( ' step ' ) ; var upperLimitText , stepText ; if ( stepIndex === - 1 ) { upperLimitText = args . substring ( toIndex + 4 ) . trim ( ) ; stepText = '1' ; } else { upperLimitText = args . substring ( toIndex + 4 , stepIndex ) . trim ( ) ; stepText = args . substring ( stepIndex + 6 ) . trim ( ) ; } var assignmentEquals = assignmentText . indexOf ( '=' ) ; if ( assignmentEquals === - 1 ) throw new SyntaxError ( 'Expected assignment' ) ; var variableName = assignmentText . substring ( 0 , assignmentEquals ) . trim ( ) ; var equalsExpression = assignmentText . substring ( assignmentEquals + 1 ) . trim ( ) ; var assignmentExpr = new statements . AssignmentStatement ( new statements . VariableStatement ( variableName ) , new statements . ExpressionStatement ( equalsExpression , define ) ) ; var upperLimitExpr = new statements . ExpressionStatement ( upperLimitText , define ) ; if ( upperLimitExpr . error ) throw upperLimitExpr . error ; var stepExpr = new statements . ExpressionStatement ( stepText , define ) ; if ( stepExpr . error ) throw stepExpr . error ; this . assignmentExpr = assignmentExpr ; this . upperLimitExpr = upperLimitExpr ; this . stepExpr = stepExpr ; this . block = define ( { start : 'FOR' , <mask> : 'NEXT' } ) ; this . loopCount = 0 ; }