diff --git a/package-lock.json b/package-lock.json index d5c4c95..e98fc39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "0.7.1", "license": "MIT", "devDependencies": { - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.2", - "@rollup/plugin-run": "^3.0.1", - "@rollup/plugin-typescript": "^11.0.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-run": "^3.0.2", + "@rollup/plugin-typescript": "^11.1.6", "@types/antlr4": "^4.7.3", "@types/jest": "^29.1.1", "@types/node": "^18.14.1", "@typescript-eslint/eslint-plugin": "^5.39.0", "@typescript-eslint/parser": "^5.39.0", - "antlr4": "^4.11.0", + "antlr4": "^4.13.1-patch-1", "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-typescript": "^3.5.1", @@ -31,10 +31,13 @@ "nodejs-file-downloader": "^4.10.2", "prettier": "^2.7.1", "rimraf": "^4.1.2", - "rollup": "^3.17.3", + "rollup": "^4.14.1", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typescript": "^4.8.4" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@ampproject/remapping": { @@ -1149,9 +1152,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { @@ -1220,15 +1223,15 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", - "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.0", + "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", "resolve": "^1.22.1" }, @@ -1236,7 +1239,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" + "rollup": "^2.78.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -1245,19 +1248,19 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", - "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -1266,9 +1269,9 @@ } }, "node_modules/@rollup/plugin-run": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-run/-/plugin-run-3.0.1.tgz", - "integrity": "sha512-wbYR1Ahz8ohYnlyXzpBTwhGWfs+OO/uZMjgpDGr8AgnL/XfoTbO7BuNYY8ncR/j/1dhCJo+NDuTRkIeCxE434Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-run/-/plugin-run-3.0.2.tgz", + "integrity": "sha512-pgQcDA34u6C+8Yr0FSd2T7iN2UTQe8zJ+1pbceNJ9MkvGrN0sz4D6Mzg3eYkGrbV4zC7H5QvwlzC1GqH4PrSrg==", "dev": true, "dependencies": { "@types/node": "14.18.30" @@ -1277,7 +1280,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.0.0||^3.0.0" + "rollup": "^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -1292,19 +1295,19 @@ "dev": true }, "node_modules/@rollup/plugin-typescript": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz", - "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", "dev": true, "dependencies": { - "@rollup/pluginutils": "^5.0.1", + "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.14.0||^3.0.0", + "rollup": "^2.14.0||^3.0.0||^4.0.0", "tslib": "*", "typescript": ">=3.7.0" }, @@ -1318,9 +1321,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -1331,7 +1334,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -1339,6 +1342,201 @@ } } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", + "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", + "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", + "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", + "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", + "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", + "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", + "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", + "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "cpu": [ + "ppc64le" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", + "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", + "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", + "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", + "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", + "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", + "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sinclair/typebox": { "version": "0.24.44", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", @@ -1435,9 +1633,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "node_modules/@types/graceful-fs": { @@ -1829,12 +2027,12 @@ } }, "node_modules/antlr4": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.11.0.tgz", - "integrity": "sha512-GUGlpE2JUjAN+G8G5vY+nOoeyNhHsXoIJwP1XF1oRw89vifA1K46T6SEkwLwr7drihN7I/lf0DIjKc4OZvBX8w==", + "version": "4.13.1-patch-1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1-patch-1.tgz", + "integrity": "sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==", "dev": true, "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/anymatch": { @@ -4678,12 +4876,12 @@ } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", + "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" @@ -5410,18 +5608,36 @@ } }, "node_modules/rollup": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.3.tgz", - "integrity": "sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", + "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.14.1", + "@rollup/rollup-android-arm64": "4.14.1", + "@rollup/rollup-darwin-arm64": "4.14.1", + "@rollup/rollup-darwin-x64": "4.14.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", + "@rollup/rollup-linux-arm64-gnu": "4.14.1", + "@rollup/rollup-linux-arm64-musl": "4.14.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", + "@rollup/rollup-linux-riscv64-gnu": "4.14.1", + "@rollup/rollup-linux-s390x-gnu": "4.14.1", + "@rollup/rollup-linux-x64-gnu": "4.14.1", + "@rollup/rollup-linux-x64-musl": "4.14.1", + "@rollup/rollup-win32-arm64-msvc": "4.14.1", + "@rollup/rollup-win32-ia32-msvc": "4.14.1", + "@rollup/rollup-win32-x64-msvc": "4.14.1", "fsevents": "~2.3.2" } }, @@ -7120,9 +7336,9 @@ "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { @@ -7176,33 +7392,33 @@ } }, "@rollup/plugin-node-resolve": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", - "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, "requires": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.0", + "is-builtin-module": "^3.2.1", "is-module": "^1.0.0", "resolve": "^1.22.1" } }, "@rollup/plugin-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", - "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", "dev": true, "requires": { "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" } }, "@rollup/plugin-run": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-run/-/plugin-run-3.0.1.tgz", - "integrity": "sha512-wbYR1Ahz8ohYnlyXzpBTwhGWfs+OO/uZMjgpDGr8AgnL/XfoTbO7BuNYY8ncR/j/1dhCJo+NDuTRkIeCxE434Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-run/-/plugin-run-3.0.2.tgz", + "integrity": "sha512-pgQcDA34u6C+8Yr0FSd2T7iN2UTQe8zJ+1pbceNJ9MkvGrN0sz4D6Mzg3eYkGrbV4zC7H5QvwlzC1GqH4PrSrg==", "dev": true, "requires": { "@types/node": "14.18.30" @@ -7217,19 +7433,19 @@ } }, "@rollup/plugin-typescript": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.0.0.tgz", - "integrity": "sha512-goPyCWBiimk1iJgSTgsehFD5OOFHiAknrRJjqFCudcW8JtWiBlK284Xnn4flqMqg6YAjVG/EE+3aVzrL5qNSzQ==", + "version": "11.1.6", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", "dev": true, "requires": { - "@rollup/pluginutils": "^5.0.1", + "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" } }, "@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, "requires": { "@types/estree": "^1.0.0", @@ -7237,6 +7453,111 @@ "picomatch": "^2.3.1" } }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.1.tgz", + "integrity": "sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.1.tgz", + "integrity": "sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.1.tgz", + "integrity": "sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.1.tgz", + "integrity": "sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.1.tgz", + "integrity": "sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.1.tgz", + "integrity": "sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.1.tgz", + "integrity": "sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.1.tgz", + "integrity": "sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.1.tgz", + "integrity": "sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.1.tgz", + "integrity": "sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.1.tgz", + "integrity": "sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.1.tgz", + "integrity": "sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.1.tgz", + "integrity": "sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.1.tgz", + "integrity": "sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==", + "dev": true, + "optional": true + }, "@sinclair/typebox": { "version": "0.24.44", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.44.tgz", @@ -7333,9 +7654,9 @@ } }, "@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, "@types/graceful-fs": { @@ -7601,9 +7922,9 @@ } }, "antlr4": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.11.0.tgz", - "integrity": "sha512-GUGlpE2JUjAN+G8G5vY+nOoeyNhHsXoIJwP1XF1oRw89vifA1K46T6SEkwLwr7drihN7I/lf0DIjKc4OZvBX8w==", + "version": "4.13.1-patch-1", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1-patch-1.tgz", + "integrity": "sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==", "dev": true }, "anymatch": { @@ -9701,12 +10022,12 @@ } }, "magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", + "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", "dev": true, "requires": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" } }, "make-dir": { @@ -10219,11 +10540,27 @@ "dev": true }, "rollup": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.3.tgz", - "integrity": "sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==", - "dev": true, - "requires": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.1.tgz", + "integrity": "sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==", + "dev": true, + "requires": { + "@rollup/rollup-android-arm-eabi": "4.14.1", + "@rollup/rollup-android-arm64": "4.14.1", + "@rollup/rollup-darwin-arm64": "4.14.1", + "@rollup/rollup-darwin-x64": "4.14.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.1", + "@rollup/rollup-linux-arm64-gnu": "4.14.1", + "@rollup/rollup-linux-arm64-musl": "4.14.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.1", + "@rollup/rollup-linux-riscv64-gnu": "4.14.1", + "@rollup/rollup-linux-s390x-gnu": "4.14.1", + "@rollup/rollup-linux-x64-gnu": "4.14.1", + "@rollup/rollup-linux-x64-musl": "4.14.1", + "@rollup/rollup-win32-arm64-msvc": "4.14.1", + "@rollup/rollup-win32-ia32-msvc": "4.14.1", + "@rollup/rollup-win32-x64-msvc": "4.14.1", + "@types/estree": "1.0.5", "fsevents": "~2.3.2" } }, diff --git a/package.json b/package.json index 9d9bcd9..6170a15 100644 --- a/package.json +++ b/package.json @@ -39,16 +39,16 @@ "node": ">=16.0.0" }, "devDependencies": { - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.2", - "@rollup/plugin-run": "^3.0.1", - "@rollup/plugin-typescript": "^11.0.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-run": "^3.0.2", + "@rollup/plugin-typescript": "^11.1.6", "@types/antlr4": "^4.7.3", "@types/jest": "^29.1.1", "@types/node": "^18.14.1", "@typescript-eslint/eslint-plugin": "^5.39.0", "@typescript-eslint/parser": "^5.39.0", - "antlr4": "^4.11.0", + "antlr4": "^4.13.1-patch-1", "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", "eslint-import-resolver-typescript": "^3.5.1", @@ -61,7 +61,7 @@ "nodejs-file-downloader": "^4.10.2", "prettier": "^2.7.1", "rimraf": "^4.1.2", - "rollup": "^3.17.3", + "rollup": "^4.14.1", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typescript": "^4.8.4" diff --git a/rollup.config.mjs b/rollup.config.mjs index 91098e7..5ab463d 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -27,13 +27,17 @@ const config = { "fs.readFileSync(__dirname + '/global.navi', 'utf-8')": JSON.stringify(globalNavi), }, delimiters: ['', ''], + preventAssignment: true, }), - nodeResolve({ extensions: ['.mjs', '.js', '.json', '.ts'] }), + nodeResolve({ extensions: ['.mjs', '.js', '.json', '.ts'], browser: true }), typescript(), run({ execArgv: ['-r', 'source-map-support/register'], }), ], + treeshake: { + preset: 'smallest', + }, }; // eslint-disable-next-line import/no-default-export diff --git a/scripts/antlr4.ts b/scripts/antlr4.ts index a0d75d6..30b677d 100644 --- a/scripts/antlr4.ts +++ b/scripts/antlr4.ts @@ -7,7 +7,7 @@ import util from 'util'; const exec = util.promisify(_exec); -const version = '4.10.1'; +const version = '4.13.1'; const jar = path.join(__dirname, '.antlr', `antlr-${version}-complete.jar`); const fileExists = (file: string): Promise => diff --git a/src/antlr4/NaviLexer.js b/src/antlr4/NaviLexer.js index d52f9e7..bdfcd43 100644 --- a/src/antlr4/NaviLexer.js +++ b/src/antlr4/NaviLexer.js @@ -1,4 +1,4 @@ -// Generated from src/antlr4/Navi.g4 by ANTLR 4.10.1 +// Generated from src/antlr4/Navi.g4 by ANTLR 4.13.1 // jshint ignore: start import antlr4 from 'antlr4'; @@ -172,11 +172,7 @@ export default class NaviLexer extends antlr4.Lexer { constructor(input) { super(input) - this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.PredictionContextCache()); - } - - get atn() { - return atn; + this._interp = new antlr4.atn.LexerATNSimulator(this, atn, decisionsToDFA, new antlr4.atn.PredictionContextCache()); } } diff --git a/src/antlr4/NaviListener.js b/src/antlr4/NaviListener.js index f9105bc..e660720 100644 --- a/src/antlr4/NaviListener.js +++ b/src/antlr4/NaviListener.js @@ -1,4 +1,4 @@ -// Generated from src/antlr4/Navi.g4 by ANTLR 4.10.1 +// Generated from src/antlr4/Navi.g4 by ANTLR 4.13.1 // jshint ignore: start import antlr4 from 'antlr4'; diff --git a/src/antlr4/NaviParser.js b/src/antlr4/NaviParser.js index 4493413..62fa1cd 100644 --- a/src/antlr4/NaviParser.js +++ b/src/antlr4/NaviParser.js @@ -1,4 +1,4 @@ -// Generated from src/antlr4/Navi.g4 by ANTLR 4.10.1 +// Generated from src/antlr4/Navi.g4 by ANTLR 4.13.1 // jshint ignore: start import antlr4 from 'antlr4'; import NaviListener from './NaviListener.js'; @@ -146,7 +146,7 @@ const atn = new antlr4.atn.ATNDeserializer().deserialize(serializedATN); const decisionsToDFA = atn.decisionToState.map( (ds, index) => new antlr4.dfa.DFA(ds, index) ); -const sharedContextCache = new antlr4.PredictionContextCache(); +const sharedContextCache = new antlr4.atn.PredictionContextCache(); export default class NaviParser extends antlr4.Parser { @@ -190,33 +190,29 @@ export default class NaviParser extends antlr4.Parser { this.symbolicNames = NaviParser.symbolicNames; } - get atn() { - return atn; - } - definitionDocument() { let localctx = new DefinitionDocumentContext(this, this._ctx, this.state); this.enterRule(localctx, 0, NaviParser.RULE_definitionDocument); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 78; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << NaviParser.Def) | (1 << NaviParser.Let) | (1 << NaviParser.Struct) | (1 << NaviParser.Enum) | (1 << NaviParser.Intrinsic))) !== 0)) { + while((((_la) & ~0x1f) === 0 && ((1 << _la) & 7438336) !== 0)) { this.state = 76; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.Def: - case NaviParser.Let: - case NaviParser.Struct: - case NaviParser.Enum: + case 15: + case 16: + case 20: + case 21: this.state = 74; this.definition(); break; - case NaviParser.Intrinsic: + case 22: this.state = 75; this.declaration(); break; @@ -248,13 +244,13 @@ export default class NaviParser extends antlr4.Parser { expressionDocument() { let localctx = new ExpressionDocumentContext(this, this._ctx, this.state); this.enterRule(localctx, 2, NaviParser.RULE_expressionDocument); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 86; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << NaviParser.Def) | (1 << NaviParser.Let) | (1 << NaviParser.Struct) | (1 << NaviParser.Enum))) !== 0)) { + while((((_la) & ~0x1f) === 0 && ((1 << _la) & 3244032) !== 0)) { this.state = 83; this.definition(); this.state = 88; @@ -307,7 +303,7 @@ export default class NaviParser extends antlr4.Parser { intrinsicFunctionDeclaration() { let localctx = new IntrinsicFunctionDeclarationContext(this, this._ctx, this.state); this.enterRule(localctx, 6, NaviParser.RULE_intrinsicFunctionDeclaration); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 94; @@ -321,7 +317,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 99; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__11) { + if(_la===12) { this.state = 98; this.assert(); } @@ -351,22 +347,22 @@ export default class NaviParser extends antlr4.Parser { this.state = 107; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.Struct: + case 20: this.enterOuterAlt(localctx, 1); this.state = 103; this.structDefinition(); break; - case NaviParser.Def: + case 15: this.enterOuterAlt(localctx, 2); this.state = 104; this.functionDefinition(); break; - case NaviParser.Let: + case 16: this.enterOuterAlt(localctx, 3); this.state = 105; this.variableDefinition(); break; - case NaviParser.Enum: + case 21: this.enterOuterAlt(localctx, 4); this.state = 106; this.enumDefinition(); @@ -402,11 +398,11 @@ export default class NaviParser extends antlr4.Parser { this.state = 113; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.T__0: + case 1: this.state = 111; this.match(NaviParser.T__0); break; - case NaviParser.T__2: + case 3: this.state = 112; this.fields(); break; @@ -432,7 +428,7 @@ export default class NaviParser extends antlr4.Parser { functionDefinition() { let localctx = new FunctionDefinitionContext(this, this._ctx, this.state); this.enterRule(localctx, 12, NaviParser.RULE_functionDefinition); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 115; @@ -444,7 +440,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 119; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__11) { + if(_la===12) { this.state = 118; this.assert(); } @@ -452,7 +448,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 126; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.T__1: + case 2: this.state = 121; this.match(NaviParser.T__1); this.state = 122; @@ -460,7 +456,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 123; this.match(NaviParser.T__0); break; - case NaviParser.T__2: + case 3: this.state = 125; this.scopeExpression(); break; @@ -486,7 +482,7 @@ export default class NaviParser extends antlr4.Parser { variableDefinition() { let localctx = new VariableDefinitionContext(this, this._ctx, this.state); this.enterRule(localctx, 14, NaviParser.RULE_variableDefinition); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 128; @@ -496,7 +492,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 131; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__11) { + if(_la===12) { this.state = 130; this.assert(); } @@ -526,7 +522,7 @@ export default class NaviParser extends antlr4.Parser { enumDefinition() { let localctx = new EnumDefinitionContext(this, this._ctx, this.state); this.enterRule(localctx, 16, NaviParser.RULE_enumDefinition); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 137; @@ -538,7 +534,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 153; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.Identifier) { + while(_la===34) { this.state = 140; this.enumVariant(); this.state = 145; @@ -559,7 +555,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 149; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 148; this.match(NaviParser.T__3); } @@ -589,7 +585,7 @@ export default class NaviParser extends antlr4.Parser { enumVariant() { let localctx = new EnumVariantContext(this, this._ctx, this.state); this.enterRule(localctx, 18, NaviParser.RULE_enumVariant); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 158; @@ -597,7 +593,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 160; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__2) { + if(_la===3) { this.state = 159; this.fields(); } @@ -740,7 +736,7 @@ export default class NaviParser extends antlr4.Parser { matchExpression() { let localctx = new MatchExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 22, NaviParser.RULE_matchExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 182; @@ -752,7 +748,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 196; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << NaviParser.T__2) | (1 << NaviParser.T__5) | (1 << NaviParser.Match) | (1 << NaviParser.If) | (1 << NaviParser.Discard) | (1 << NaviParser.IntInterval) | (1 << NaviParser.NonIntInterval) | (1 << NaviParser.IntervalInclusive) | (1 << NaviParser.IntervalMinExclusive) | (1 << NaviParser.IntervalMaxExclusive) | (1 << NaviParser.IntervalExclusive))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (NaviParser.Number - 32)) | (1 << (NaviParser.String - 32)) | (1 << (NaviParser.Identifier - 32)) | (1 << (NaviParser.OpMinus - 32)))) !== 0)) { + if((((_la) & ~0x1f) === 0 && ((1 << _la) & 4261806152) !== 0) || ((((_la - 32)) & ~0x1f) === 0 && ((1 << (_la - 32)) & 15) !== 0)) { this.state = 185; this.matchArm(); this.state = 190; @@ -773,7 +769,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 194; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 193; this.match(NaviParser.T__3); } @@ -801,30 +797,30 @@ export default class NaviParser extends antlr4.Parser { matchArm() { let localctx = new MatchArmContext(this, this._ctx, this.state); this.enterRule(localctx, 24, NaviParser.RULE_matchArm); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 202; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.Discard: + case 25: this.state = 200; this.match(NaviParser.Discard); break; - case NaviParser.T__2: - case NaviParser.T__5: - case NaviParser.Match: - case NaviParser.If: - case NaviParser.IntInterval: - case NaviParser.NonIntInterval: - case NaviParser.IntervalInclusive: - case NaviParser.IntervalMinExclusive: - case NaviParser.IntervalMaxExclusive: - case NaviParser.IntervalExclusive: - case NaviParser.Number: - case NaviParser.String: - case NaviParser.Identifier: - case NaviParser.OpMinus: + case 3: + case 6: + case 17: + case 18: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: this.state = 201; this.expression(); break; @@ -834,7 +830,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 206; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.As) { + if(_la===14) { this.state = 204; this.match(NaviParser.As); this.state = 205; @@ -941,7 +937,7 @@ export default class NaviParser extends antlr4.Parser { scopeExpression() { let localctx = new ScopeExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 32, NaviParser.RULE_scopeExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 221; @@ -949,7 +945,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 225; this._errHandler.sync(this); _la = this._input.LA(1); - while((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << NaviParser.Def) | (1 << NaviParser.Let) | (1 << NaviParser.Struct) | (1 << NaviParser.Enum))) !== 0)) { + while((((_la) & ~0x1f) === 0 && ((1 << _la) & 3244032) !== 0)) { this.state = 222; this.definition(); this.state = 227; @@ -992,11 +988,11 @@ export default class NaviParser extends antlr4.Parser { this.state = 237; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.T__2: + case 3: this.state = 235; this.scopeExpression(); break; - case NaviParser.If: + case 18: this.state = 236; this.ifExpression(); break; @@ -1022,7 +1018,7 @@ export default class NaviParser extends antlr4.Parser { fieldAccessExpression() { let localctx = new FieldAccessExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 36, NaviParser.RULE_fieldAccessExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 239; @@ -1030,7 +1026,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 244; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.T__8) { + while(_la===9) { this.state = 240; this.match(NaviParser.T__8); this.state = 241; @@ -1058,13 +1054,13 @@ export default class NaviParser extends antlr4.Parser { negateExpression() { let localctx = new NegateExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 38, NaviParser.RULE_negateExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 248; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.OpMinus) { + if(_la===35) { this.state = 247; this.match(NaviParser.OpMinus); } @@ -1090,7 +1086,7 @@ export default class NaviParser extends antlr4.Parser { multiplicativeExpression() { let localctx = new MultiplicativeExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 40, NaviParser.RULE_multiplicativeExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 252; @@ -1098,10 +1094,10 @@ export default class NaviParser extends antlr4.Parser { this.state = 257; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.OpMult || _la===NaviParser.OpDiv) { + while(_la===37 || _la===38) { this.state = 253; _la = this._input.LA(1); - if(!(_la===NaviParser.OpMult || _la===NaviParser.OpDiv)) { + if(!(_la===37 || _la===38)) { this._errHandler.recoverInline(this); } else { @@ -1133,7 +1129,7 @@ export default class NaviParser extends antlr4.Parser { additiveExpression() { let localctx = new AdditiveExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 42, NaviParser.RULE_additiveExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 260; @@ -1141,10 +1137,10 @@ export default class NaviParser extends antlr4.Parser { this.state = 265; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.OpMinus || _la===NaviParser.OpPlus) { + while(_la===35 || _la===36) { this.state = 261; _la = this._input.LA(1); - if(!(_la===NaviParser.OpMinus || _la===NaviParser.OpPlus)) { + if(!(_la===35 || _la===36)) { this._errHandler.recoverInline(this); } else { @@ -1176,7 +1172,7 @@ export default class NaviParser extends antlr4.Parser { intersectionExpression() { let localctx = new IntersectionExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 44, NaviParser.RULE_intersectionExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 268; @@ -1184,7 +1180,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 273; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.T__9) { + while(_la===10) { this.state = 269; this.match(NaviParser.T__9); this.state = 270; @@ -1212,7 +1208,7 @@ export default class NaviParser extends antlr4.Parser { unionExpression() { let localctx = new UnionExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 46, NaviParser.RULE_unionExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 276; @@ -1220,7 +1216,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 281; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.T__10) { + while(_la===11) { this.state = 277; this.match(NaviParser.T__10); this.state = 278; @@ -1248,7 +1244,7 @@ export default class NaviParser extends antlr4.Parser { comparisonExpression() { let localctx = new ComparisonExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 48, NaviParser.RULE_comparisonExpression); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 284; @@ -1256,10 +1252,10 @@ export default class NaviParser extends antlr4.Parser { this.state = 287; this._errHandler.sync(this); _la = this._input.LA(1); - if(((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (NaviParser.OpEqual - 39)) | (1 << (NaviParser.OpNotEqual - 39)) | (1 << (NaviParser.OpGt - 39)) | (1 << (NaviParser.OpLt - 39)) | (1 << (NaviParser.OpGte - 39)) | (1 << (NaviParser.OpLte - 39)))) !== 0)) { + if(((((_la - 39)) & ~0x1f) === 0 && ((1 << (_la - 39)) & 63) !== 0)) { this.state = 285; _la = this._input.LA(1); - if(!(((((_la - 39)) & ~0x1f) == 0 && ((1 << (_la - 39)) & ((1 << (NaviParser.OpEqual - 39)) | (1 << (NaviParser.OpNotEqual - 39)) | (1 << (NaviParser.OpGt - 39)) | (1 << (NaviParser.OpLt - 39)) | (1 << (NaviParser.OpGte - 39)) | (1 << (NaviParser.OpLte - 39)))) !== 0))) { + if(!(((((_la - 39)) & ~0x1f) === 0 && ((1 << (_la - 39)) & 63) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -1312,13 +1308,13 @@ export default class NaviParser extends antlr4.Parser { args() { let localctx = new ArgsContext(this, this._ctx, this.state); this.enterRule(localctx, 52, NaviParser.RULE_args); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 302; this._errHandler.sync(this); _la = this._input.LA(1); - if((((_la) & ~0x1f) == 0 && ((1 << _la) & ((1 << NaviParser.T__2) | (1 << NaviParser.T__5) | (1 << NaviParser.Match) | (1 << NaviParser.If) | (1 << NaviParser.IntInterval) | (1 << NaviParser.NonIntInterval) | (1 << NaviParser.IntervalInclusive) | (1 << NaviParser.IntervalMinExclusive) | (1 << NaviParser.IntervalMaxExclusive) | (1 << NaviParser.IntervalExclusive))) !== 0) || ((((_la - 32)) & ~0x1f) == 0 && ((1 << (_la - 32)) & ((1 << (NaviParser.Number - 32)) | (1 << (NaviParser.String - 32)) | (1 << (NaviParser.Identifier - 32)) | (1 << (NaviParser.OpMinus - 32)))) !== 0)) { + if((((_la) & ~0x1f) === 0 && ((1 << _la) & 4228251720) !== 0) || ((((_la - 32)) & ~0x1f) === 0 && ((1 << (_la - 32)) & 15) !== 0)) { this.state = 291; this.expression(); this.state = 296; @@ -1339,7 +1335,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 300; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 299; this.match(NaviParser.T__3); } @@ -1365,7 +1361,7 @@ export default class NaviParser extends antlr4.Parser { fields() { let localctx = new FieldsContext(this, this._ctx, this.state); this.enterRule(localctx, 54, NaviParser.RULE_fields); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 304; @@ -1373,7 +1369,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 316; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.Identifier) { + if(_la===34) { this.state = 305; this.field(); this.state = 310; @@ -1394,7 +1390,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 314; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 313; this.match(NaviParser.T__3); } @@ -1422,7 +1418,7 @@ export default class NaviParser extends antlr4.Parser { fieldsSpread() { let localctx = new FieldsSpreadContext(this, this._ctx, this.state); this.enterRule(localctx, 56, NaviParser.RULE_fieldsSpread); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 320; @@ -1430,7 +1426,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 358; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.OpSpread: + case 45: this.state = 321; this.spread(); this.state = 326; @@ -1451,13 +1447,13 @@ export default class NaviParser extends antlr4.Parser { this.state = 343; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 329; this.match(NaviParser.T__3); this.state = 341; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.Identifier) { + if(_la===34) { this.state = 330; this.field(); this.state = 335; @@ -1478,7 +1474,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 339; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 338; this.match(NaviParser.T__3); } @@ -1488,12 +1484,12 @@ export default class NaviParser extends antlr4.Parser { } break; - case NaviParser.T__4: - case NaviParser.Identifier: + case 5: + case 34: this.state = 356; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.Identifier) { + if(_la===34) { this.state = 345; this.field(); this.state = 350; @@ -1514,7 +1510,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 354; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 353; this.match(NaviParser.T__3); } @@ -1596,7 +1592,7 @@ export default class NaviParser extends antlr4.Parser { parameters() { let localctx = new ParametersContext(this, this._ctx, this.state); this.enterRule(localctx, 62, NaviParser.RULE_parameters); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 368; @@ -1604,7 +1600,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 380; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.Identifier) { + if(_la===34) { this.state = 369; this.parameter(); this.state = 374; @@ -1625,7 +1621,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 378; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 377; this.match(NaviParser.T__3); } @@ -1653,7 +1649,7 @@ export default class NaviParser extends antlr4.Parser { varArgParameters() { let localctx = new VarArgParametersContext(this, this._ctx, this.state); this.enterRule(localctx, 64, NaviParser.RULE_varArgParameters); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 384; @@ -1661,11 +1657,11 @@ export default class NaviParser extends antlr4.Parser { this.state = 403; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.Identifier || _la===NaviParser.OpSpread) { + if(_la===34 || _la===45) { this.state = 398; this._errHandler.sync(this); switch(this._input.LA(1)) { - case NaviParser.Identifier: + case 34: this.state = 385; this.parameter(); this.state = 390; @@ -1694,7 +1690,7 @@ export default class NaviParser extends antlr4.Parser { } break; - case NaviParser.OpSpread: + case 45: this.state = 397; this.varArgParameter(); break; @@ -1704,7 +1700,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 401; this._errHandler.sync(this); _la = this._input.LA(1); - if(_la===NaviParser.T__3) { + if(_la===4) { this.state = 400; this.match(NaviParser.T__3); } @@ -1809,7 +1805,7 @@ export default class NaviParser extends antlr4.Parser { name() { let localctx = new NameContext(this, this._ctx, this.state); this.enterRule(localctx, 72, NaviParser.RULE_name); - var _la = 0; // Token type + var _la = 0; try { this.enterOuterAlt(localctx, 1); this.state = 417; @@ -1817,7 +1813,7 @@ export default class NaviParser extends antlr4.Parser { this.state = 422; this._errHandler.sync(this); _la = this._input.LA(1); - while(_la===NaviParser.T__12) { + while(_la===13) { this.state = 418; this.match(NaviParser.T__12); this.state = 419; diff --git a/src/parse.ts b/src/parse.ts index 68b5109..fe04c81 100644 --- a/src/parse.ts +++ b/src/parse.ts @@ -1,4 +1,10 @@ -import antlr4 from 'antlr4'; +import { + CommonToken, + CommonTokenStream, + ErrorListener, + InputStream, + ParserRuleContext, +} from 'antlr4'; import NaviLexer from './antlr4/NaviLexer'; import NaviParser from './antlr4/NaviParser'; import { Declaration, IntrinsicFunctionDeclaration } from './declaration'; @@ -37,7 +43,7 @@ import { StringType, } from './types'; import { newBounds } from './types-util'; -import { assertNever, noop } from './util'; +import { assertNever } from './util'; type FilterContextName = T extends `${string}Context` ? T : never; type ContextNames = FilterContextName; @@ -46,18 +52,15 @@ type RuleNameOfContext = T extends `${infer Rule}Context` ? Ru type RuleNames = RuleNameOfContext; export class ConversionError extends Error { - context: antlr4.ParserRuleContext; + context: ParserRuleContext; - constructor(context: antlr4.ParserRuleContext, message: string) { + constructor(context: ParserRuleContext, message: string) { super(`Unable to convert \`${context.getText()}\`: ${message}`); this.context = context; } } -const getOptional = < - T extends antlr4.ParserRuleContext, - K extends keyof T & Uncapitalize ->( +const getOptional = >( context: T, key: K ): Contexts[`${Capitalize}Context`] | undefined => { @@ -75,10 +78,7 @@ const getOptional = < } return result; }; -const getRequired = < - T extends antlr4.ParserRuleContext, - K extends keyof T & Uncapitalize ->( +const getRequired = >( context: T, key: K ): Contexts[`${Capitalize}Context`] => { @@ -91,10 +91,7 @@ const getRequired = < } return result; }; -const getMultiple = < - T extends antlr4.ParserRuleContext, - K extends keyof T & Uncapitalize ->( +const getMultiple = >( context: T, key: K ): Contexts[`${Capitalize}Context`][] => { @@ -113,11 +110,11 @@ const getMultiple = < interface Token { getText(): string; toString(): string; - getPayload(): antlr4.CommonToken; + getPayload(): CommonToken; } const getOptionalToken = < - T extends antlr4.ParserRuleContext, + T extends ParserRuleContext, K extends keyof T & Capitalize & string >( context: T, @@ -137,7 +134,7 @@ const getOptionalToken = < return result; }; const getRequiredToken = < - T extends antlr4.ParserRuleContext, + T extends ParserRuleContext, K extends keyof T & Capitalize & string >( context: T, @@ -153,7 +150,7 @@ const getRequiredToken = < return result; }; const getMultipleTokens = < - T extends antlr4.ParserRuleContext, + T extends ParserRuleContext, K extends keyof T & Capitalize & string >( context: T, @@ -175,7 +172,7 @@ interface OperatorToken { token: Token; } const getOperatorsInOrder = < - T extends antlr4.ParserRuleContext, + T extends ParserRuleContext, K extends keyof T & Capitalize & string >( context: T, @@ -246,11 +243,13 @@ class AstConverter { this.document = document; } - private getSource(context: antlr4.ParserRuleContext): Source { - const interval = context.getSourceInterval(); + private getSource(context: ParserRuleContext): Source { return { document: this.document, - span: [interval.start, interval.start + interval.length], + span: [ + context.start.tokenIndex, + context.stop ? context.stop.tokenIndex : context.start.stop, + ], }; } @@ -703,21 +702,24 @@ class AstConverter { } } -type ErrorListener = Parameters[0]; -const errorListener: ErrorListener = { - syntaxError: (recognizer, offendingSymbol, line, column, msg): void => { +class MyErrorListener extends ErrorListener { + syntaxError( + recognizer: unknown, + offendingSymbol: unknown, + line: number, + column: number, + msg: string + ): void { throw new SyntaxError(`At ${line}:${column}: ${msg}`); - }, - reportAmbiguity: noop, - reportAttemptingFullContext: noop, - reportContextSensitivity: noop, -}; + } +} +const errorListener = new MyErrorListener(); const getParser = (code: string): NaviParser => { - const chars = new antlr4.InputStream(code); + const chars = new InputStream(code); const lexer = new NaviLexer(chars); lexer.removeErrorListeners(); lexer.addErrorListener(errorListener); - const tokens = new antlr4.CommonTokenStream(lexer); + const tokens = new CommonTokenStream(lexer); const parser = new NaviParser(tokens); parser.removeErrorListeners(); parser.addErrorListener(errorListener);