![]() 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 : |
<!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>