whole_func_string: function PrintCommand(args, define) {
      if (args[args.length - 1] === ";") {
          this.noLine = true;
          args = args.substr(-1);
      } else this.noLine = false;
  
      var parsed = new statements.ArgumentStatement(args, {
          flags: ['USING'],
          parseArgs: false
      });
  
      if (parsed.flags.USING) {
          if (parsed.args.length !== 1) throw new SyntaxError('PRINT USING command requires 1 argument');
          if (parsed.args.length > 1) throw new SyntaxError('Unexpected comma');
  
          var semicolonIndex = parsed.args[0].indexOf(';');
          if (semicolonIndex === -1) throw new SyntaxError('Expected semicolon');
  
          var formatExpression = new statements.ExpressionStatement(parsed.args[0].substring(0, semicolonIndex).trim(), define);
          var numberExpression = new statements.ExpressionStatement(parsed.args[0].substring(semicolonIndex + 1).trim(), define);
          if (formatExpression.error instanceof SyntaxError) throw formatExpression.error;
          if (numberExpression.error instanceof SyntaxError) throw numberExpression.error;
  
          this.formatExpr = formatExpression;
          this.numberExpr = numberExpression;
      } else {
          var items = [];
          for (var i = 0; i < parsed.args.length; i++) {
              var expr = new statements.ExpressionStatement(parsed.args[i], define);
              if (expr.error instanceof SyntaxError) throw expr.error;
              items.push(expr);
          }
          this.items = items;
      }
  }
func_code_string: function PrintCommand(args, define) {
      if (args[args.length - 1] === ";") {
          this.noLine = true;
          args = args.substr(-1);
      } else this.noLine = false;
  
      var parsed = new statements.ArgumentStatement(args, {
          flags: ['USING'],
          parseArgs: false
      });
  
      if (parsed.flags.USING) {
          if (parsed.args.length !== 1) throw new SyntaxError('PRINT USING command requires 1 argument');
          if (parsed.args.length > 1) throw new SyntaxError('Unexpected comma');
  
          var semicolonIndex = parsed.args[0].indexOf(';');
          if (semicolonIndex === -1) throw new SyntaxError('Expected semicolon');
  
          var formatExpression = new statements.ExpressionStatement(parsed.args[0].substring(0, semicolonIndex).trim(), define);
          var numberExpression = new statements.ExpressionStatement(parsed.args[0].substring(semicolonIndex + 1).trim(), define);
          if (formatExpression.error instanceof SyntaxError) throw formatExpression.error;
          if (numberExpression.error instanceof SyntaxError) throw numberExpression.error;
  
          this.formatExpr = formatExpression;
          this.numberExpr = numberExpression;
      } else {
          var items = [];
          for (var i = 0; i < parsed.args.length; i++) {
              var expr = new statements.ExpressionStatement(parsed.args[i], define);
              if (expr.error instanceof SyntaxError) throw expr.error;
              items.push(expr);
          }
          this.items = items;
      }
  }
func_documentation_string: Outputs or formats and outputs a string
  
  @param {String} args The arguments to the command
  @param {Function} define
  @constructor