|
1 |
| -try { |
2 |
| - var { |
3 |
| - hanzi2num, |
4 |
| - hanzi2numstr, |
5 |
| - num2hanzi, |
6 |
| - bool2hanzi |
7 |
| - } = require("./hanzi2num"); |
8 |
| - var hanzi2pinyin = require("./hanzi2pinyin"); |
9 |
| - var STDLIB = require("./stdlib"); |
10 |
| - var { NUMBER_KEYWORDS, KEYWORDS } = require("./keywords"); |
11 |
| - var version = require("./version"); |
12 |
| - var compilers = require("./compiler/compilers"); |
13 |
| - var { typecheck, printSignature } = require("./typecheck"); |
14 |
| - var { expandMacros, extractMacros } = require("./macro.js"); |
15 |
| - var { defaultImportReader } = require("./reader"); |
16 |
| -} catch (e) {} |
| 1 | +var { hanzi2num, hanzi2numstr, num2hanzi, bool2hanzi } = require("./hanzi2num"); |
| 2 | +var hanzi2pinyin = require("./hanzi2pinyin"); |
| 3 | +var STDLIB = require("./stdlib"); |
| 4 | +var { NUMBER_KEYWORDS, KEYWORDS } = require("./keywords"); |
| 5 | +var version = require("./version"); |
| 6 | +var compilers = require("./compiler/compilers"); |
| 7 | +var { typecheck, printSignature } = require("./typecheck"); |
| 8 | +var { expandMacros, extractMacros } = require("./macro.js"); |
| 9 | +var { defaultImportReader } = require("./reader"); |
| 10 | +const makeSynchronize = require("synchronized-promise"); |
17 | 11 |
|
18 | 12 | const defaultTrustedHosts = [
|
19 | 13 | "https://raw.githubusercontent.com/LingDong-/wenyan-lang/master"
|
@@ -642,7 +636,7 @@ function pyWrapModule(name, src) {
|
642 | 636 | return `#/*___wenyan_module_${name}_start___*/\n${src}\n#/*___wenyan_module_${name}_end___*/\n`;
|
643 | 637 | }
|
644 | 638 |
|
645 |
| -async function compile(arg1, arg2, arg3) { |
| 639 | +async function compileAsync(arg1, arg2, arg3) { |
646 | 640 | let options = {};
|
647 | 641 | let txt = "";
|
648 | 642 |
|
@@ -777,6 +771,8 @@ async function compile(arg1, arg2, arg3) {
|
777 | 771 | return targ;
|
778 | 772 | }
|
779 | 773 |
|
| 774 | +const compile = makeSynchronize(compileAsync, { tick: 10 }); |
| 775 | + |
780 | 776 | function isLangSupportedForEval(lang) {
|
781 | 777 | if (lang !== "js")
|
782 | 778 | throw new Error(
|
@@ -832,17 +828,21 @@ function evalCompiled(compiledCode, options = {}) {
|
832 | 828 | })();
|
833 | 829 | }
|
834 | 830 |
|
835 |
| -function execute(source, options = {}) { |
| 831 | +async function executeAsync(source, options = {}) { |
836 | 832 | const { lang = "js" } = options;
|
837 | 833 | isLangSupportedForEval(lang);
|
838 |
| - const compiled = compile(source, options); |
| 834 | + const compiled = compileAsync(source, options); |
839 | 835 | evalCompiled(compiled, options);
|
840 | 836 | }
|
841 | 837 |
|
| 838 | +const execute = makeSynchronize(executeAsync, { tick: 10 }); |
| 839 | + |
842 | 840 | var parser = {
|
843 | 841 | compile,
|
| 842 | + compileAsync, |
844 | 843 | evalCompiled,
|
845 | 844 | execute,
|
| 845 | + executeAsync, |
846 | 846 | version,
|
847 | 847 | wy2tokens,
|
848 | 848 | tokens2asc,
|
|
0 commit comments