|
10 | 10 | var { NUMBER_KEYWORDS, KEYWORDS } = require("./keywords");
|
11 | 11 | var version = require("./version");
|
12 | 12 | var compilers = require("./compiler/compilers");
|
13 |
| - |
| 13 | + var { typecheck, printSignature } = require("./typecheck"); |
14 | 14 | var { expandMacros, extractMacros } = require("./macro.js");
|
15 | 15 | } catch (e) {}
|
16 | 16 |
|
@@ -290,7 +290,7 @@ function tokens2asc(
|
290 | 290 | typeassert(i + 1, ["type"], "variable type");
|
291 | 291 | typeassert(
|
292 | 292 | i + 2,
|
293 |
| - ["data", "num", "lit", "iden", "bool"], |
| 293 | + ["data", "num", "lit", "iden", "bool", "any"], |
294 | 294 | "variable initialization"
|
295 | 295 | );
|
296 | 296 |
|
@@ -393,7 +393,7 @@ function tokens2asc(
|
393 | 393 | i += 1;
|
394 | 394 | } else if (gettok(i, 0) == "op") {
|
395 | 395 | typeassert(i + 2, ["opord"]);
|
396 |
| - var x = {}; |
| 396 | + var x = { pos }; |
397 | 397 | if (gettok(i + 2, 1) == "l") {
|
398 | 398 | x.lhs = tokens[i + 1];
|
399 | 399 | x.rhs = tokens[i + 3];
|
@@ -619,6 +619,7 @@ function tokens2asc(
|
619 | 619 | i++;
|
620 | 620 | }
|
621 | 621 | }
|
| 622 | + |
622 | 623 | return asc;
|
623 | 624 | }
|
624 | 625 |
|
@@ -676,7 +677,8 @@ function compile(arg1, arg2, arg3) {
|
676 | 677 | : console.dir(x, { depth: null, maxArrayLength: null }),
|
677 | 678 | errorCallback = process.exit,
|
678 | 679 | lib = typeof STDLIB == "undefined" ? {} : STDLIB,
|
679 |
| - reader = defaultReader |
| 680 | + reader = defaultReader, |
| 681 | + strict = false |
680 | 682 | } = options;
|
681 | 683 |
|
682 | 684 | if (resetVarCnt) idenMap = {};
|
@@ -729,6 +731,11 @@ function compile(arg1, arg2, arg3) {
|
729 | 731 | logCallback("\n\n=== [PASS 2] ABSTRACT SYNTAX CHAIN ===");
|
730 | 732 | logCallback(asc);
|
731 | 733 |
|
| 734 | + if (strict) { |
| 735 | + logCallback("\n\n=== [PASS 2.5] TYPECHECK ==="); |
| 736 | + console.log(printSignature(typecheck(asc, assert))); |
| 737 | + } |
| 738 | + |
732 | 739 | logCallback("\n\n=== [PASS 3] COMPILER ===");
|
733 | 740 | var imports = [];
|
734 | 741 | var mwrapper = { js: jsWrapModule, py: pyWrapModule, rb: x => x }[lang];
|
@@ -760,6 +767,7 @@ function compile(arg1, arg2, arg3) {
|
760 | 767 | lang,
|
761 | 768 | romanizeIdentifiers,
|
762 | 769 | resetVarCnt: false,
|
| 770 | + strict: false, |
763 | 771 | logCallback,
|
764 | 772 | errorCallback,
|
765 | 773 | lib
|
|
0 commit comments