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;
    }
}
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;
    }
}
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 ; } }
Outputs or formats and outputs a string

@param {String} args The arguments to the command
@param {Function} define
@constructor
Outputs or formats and outputs a string