VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/libs/absol-form/demo/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-form/demo/sclang.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SCLang</title>
    <script src="https://absol.cf/absol-full/absol/absol.dependents.js"></script>
    <script src="../absol/absol_form.js"></script>
</head>
<body>
<script>
    (function (){
        var _ = absol._;

        function render(o) {
            return _(o).addTo(document.body);
        }

        render('<h2>SCExpressionInput</h2>')
        var eInput = render({
            tag: 'scexpressioninput',
            style: {
                marginBottom: '20px'
            },
            props: {
                // value: '1 + 2 + Math.max(a, b) + Math.min(x, f(y))',
                value: 'DATEDIF(NOW() + 10, NOW(), "D")'
            }
        });


        var preview = render({
            style: {
                padding: '10px'
            }
        });

        var env = {
            NOW: function () {
                return new Date();
            },
            TODAY: function () {
                return new Date();
            },
            DATEDIF: function(a, b){
                return Math.abs(a.getTime() - b.getTime()) / (1000 * 60 * 60 * 24);
            },
            Math: Math,
            f: function (x) {
                return x + 1;
            }, a: 1, b: 2, x: 12, y: 21
        };

        eInput.on('stopchange', function () {
            try {
                preview.innerHTML = absol.sclang.evalSCExpression(eInput.value, env);
            } catch (e) {
                preview.innerHTML = e.message;
                throw e;
            }
        });
        eInput.emit('stopchange', {}, eInput);


        var simpleCode = `function abc(x: number, y: number, z: string) : string {
    var k : boolean;
    var d: Date;
    var isOK: boolean;

    isOK = y == 1;
    y = TODAY() + 30;

    return "0";
}`;
        simpleCode = `function abc(x: number, y: number, z: string): string {
    var k: number;
    saySome(k);
    isOK = y == 1;
    if (caSE1) {
    console.log(12);
    } else if(casE2) {
    echo(isOK);
    echo(k);
    }
    else echo(4);
    for k from 1 to n {
        print(k);
    }
    }`;

        simpleCode = `
    var i ;
    var s = 100000;
    for i from 1 to 10 {
         s = s + i;
    }
    print(s);
    `;


        var now = new Date().getTime();
        var res = absol.sclang.SCParser.parse(simpleCode, 'program');
        console.log('parsing time:', new Date().getTime() - now)
        // console.log(res, res.ast, res.error);
        var instance;
        if (res.error) {
            console.log(simpleCode.substring(0, res.tokens[res.error.tokenIdx].end))
        }
        else if (res.ast) {
            instance = new absol.sclang.SCProgramInstance(res.ast, {
                print: function () {
                    console.log.apply(console, arguments);
                },
                console: console,
                today: function () {
                    return new Date();
                },
                delay: function (mil) {
                    return new Promise(function (rs) {
                        setTimeout(rs, mil);
                    })
                }
            });
            now = new Date().getTime();
            instance.exec();
            console.log('run time:', new Date().getTime() - now, instance.counter);
        }
    })();



</script>
</body>
</html>

VaKeR 2022