whole_func_string: 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',
          end: 'NEXT'
      });
  
      this.loopCount = 0;
  }
func_code_string: 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',
          end: 'NEXT'
      });
  
      this.loopCount = 0;
  }
func_documentation_string: Iterates over the body a certain amount of times
  
  @param {String} args The arguments to the command
  @param {Function} define
  @constructor