From 0b1b4fbc8b0c6c70caac4d2a31aec0d61ed7318d Mon Sep 17 00:00:00 2001 From: Gaojianli Date: Wed, 30 Oct 2024 17:53:19 +0800 Subject: [PATCH 01/86] finish monaco editor --- webui/package.json | 3 + webui/pnpm-lock.yaml | 162 +- .../script/aviatorscript/grammar/DSLLexer.ts | 676 +++ .../script/aviatorscript/grammar/DSLParser.ts | 5031 +++++++++++++++++ .../aviatorscript/grammar/GrammarParser.ts | 67 + .../script/aviatorscript/monarch.ts | 175 + .../script/aviatorscript/suggestions.ts | 807 +++ .../settings/components/script/index.vue | 74 + webui/src/views/settings/index.vue | 12 +- webui/vite.config.ts | 3 +- 10 files changed, 6949 insertions(+), 61 deletions(-) create mode 100644 webui/src/views/settings/components/script/aviatorscript/grammar/DSLLexer.ts create mode 100644 webui/src/views/settings/components/script/aviatorscript/grammar/DSLParser.ts create mode 100644 webui/src/views/settings/components/script/aviatorscript/grammar/GrammarParser.ts create mode 100644 webui/src/views/settings/components/script/aviatorscript/monarch.ts create mode 100644 webui/src/views/settings/components/script/aviatorscript/suggestions.ts create mode 100644 webui/src/views/settings/components/script/index.vue diff --git a/webui/package.json b/webui/package.json index c7d98410f..9d052c966 100644 --- a/webui/package.json +++ b/webui/package.json @@ -18,9 +18,11 @@ "@arco-design/web-vue": "^2.56.3", "@dzangolab/flag-icon-css": "^3.4.5", "@formatjs/intl-durationformat": "^0.6.1", + "@guolao/vue-monaco-editor": "^1.5.4", "@octokit/core": "^6.1.2", "@octokit/request-error": "^6.1.5", "@vueuse/core": "^11.1.0", + "antlr4": "^4.13.2", "compare-versions": "^6.1.1", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.13", @@ -59,6 +61,7 @@ "eslint-plugin-vue": "^9.29.1", "husky": "^9.1.6", "less": "^4.2.0", + "monaco-editor": "^0.52.0", "npm-run-all2": "^7.0.1", "prettier": "^3.3.3", "typescript": "~5.6.3", diff --git a/webui/pnpm-lock.yaml b/webui/pnpm-lock.yaml index dc794fee3..2409d29fa 100644 --- a/webui/pnpm-lock.yaml +++ b/webui/pnpm-lock.yaml @@ -22,6 +22,9 @@ importers: '@formatjs/intl-durationformat': specifier: ^0.6.1 version: 0.6.1 + '@guolao/vue-monaco-editor': + specifier: ^1.5.4 + version: 1.5.4(monaco-editor@0.52.0)(vue@3.5.12(typescript@5.6.3)) '@octokit/core': specifier: ^6.1.2 version: 6.1.2 @@ -31,6 +34,9 @@ importers: '@vueuse/core': specifier: ^11.1.0 version: 11.1.0(vue@3.5.12(typescript@5.6.3)) + antlr4: + specifier: ^4.13.2 + version: 4.13.2 compare-versions: specifier: ^6.1.1 version: 6.1.1 @@ -140,6 +146,9 @@ importers: less: specifier: ^4.2.0 version: 4.2.0 + monaco-editor: + specifier: ^0.52.0 + version: 0.52.0 npm-run-all2: specifier: ^7.0.1 version: 7.0.1 @@ -408,139 +417,139 @@ packages: resolution: {integrity: sha512-XqVAi0O/KITtznpMK5TP4D+rWfwst5lrsbPbes5c5SPMGjwK7fuvlTdEmG2XUrxzYqDTIPshywyzdVYKooGdGA==} '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm] os: [android] '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz} engines: {node: '>=12'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz} engines: {node: '>=12'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz} engines: {node: '>=12'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz} engines: {node: '>=12'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz} engines: {node: '>=12'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz} engines: {node: '>=12'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [linux] '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [openbsd] '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz} engines: {node: '>=12'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz} engines: {node: '>=12'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -597,6 +606,16 @@ packages: '@formatjs/intl-localematcher@0.5.6': resolution: {integrity: sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==} + '@guolao/vue-monaco-editor@1.5.4': + resolution: {integrity: sha512-eyBAqxJeDpV4mZYZSpNvh3xUgKCld5eEe0dBtjJhsy2+L0MB6PYFZ/FbPHNwskgp2RoIpfn1DLrIhXXE3lVbwQ==, tarball: https://registry.npmjs.org/@guolao/vue-monaco-editor/-/vue-monaco-editor-1.5.4.tgz} + peerDependencies: + '@vue/composition-api': ^1.7.1 + monaco-editor: '>=0.43.0' + vue: ^2.6.14 || >=3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + '@humanfs/core@0.19.0': resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} engines: {node: '>=18.18.0'} @@ -646,6 +665,11 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@monaco-editor/loader@1.4.0': + resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==, tarball: https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz} + peerDependencies: + monaco-editor: '>= 0.21.0 < 1' + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -719,82 +743,82 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz} cpu: [x64] os: [darwin] '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz} cpu: [arm64] os: [linux] '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz} cpu: [arm64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz} cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz} cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz} cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz} cpu: [x64] os: [linux] '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz} cpu: [x64] os: [linux] '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz} cpu: [x64] os: [win32] @@ -1023,8 +1047,12 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + antlr4@4.13.2: + resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==, tarball: https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz} + engines: {node: '>=16'} + anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, tarball: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz} engines: {node: '>= 8'} argparse@2.0.1: @@ -1056,7 +1084,7 @@ packages: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, tarball: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz} engines: {node: '>=8'} birpc@0.2.19: @@ -1144,7 +1172,7 @@ packages: engines: {node: '>=10'} chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} engines: {node: '>= 8.10.0'} cipher-base@1.0.4: @@ -1306,7 +1334,7 @@ packages: engines: {node: '>=0.12'} errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://registry.npmjs.org/errno/-/errno-0.1.8.tgz} hasBin: true error-stack-parser-es@0.1.5: @@ -1456,7 +1484,7 @@ packages: engines: {node: '>=14.14'} fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -1503,7 +1531,7 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -1584,12 +1612,12 @@ packages: engines: {node: '>= 4'} image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz} engines: {node: '>=0.10.0'} hasBin: true immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==, tarball: https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -1614,7 +1642,7 @@ packages: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, tarball: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz} engines: {node: '>=8'} is-callable@1.2.7: @@ -1779,7 +1807,7 @@ packages: engines: {node: '>=12'} make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, tarball: https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz} engines: {node: '>=6'} markdown-it@14.1.0: @@ -1812,7 +1840,7 @@ packages: hasBin: true mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz} engines: {node: '>=4'} hasBin: true @@ -1836,6 +1864,9 @@ packages: mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + monaco-editor@0.52.0: + resolution: {integrity: sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==, tarball: https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.0.tgz} + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -1858,7 +1889,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==, tarball: https://registry.npmjs.org/needle/-/needle-3.3.1.tgz} engines: {node: '>= 4.4.x'} hasBin: true @@ -1870,7 +1901,7 @@ packages: engines: {node: '>=10'} normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, tarball: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz} engines: {node: '>=0.10.0'} normalize.css@8.0.1: @@ -2089,7 +2120,7 @@ packages: engines: {node: '>= 6'} readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz} engines: {node: '>=8.10.0'} resize-observer-polyfill@1.5.1: @@ -2135,7 +2166,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} sass@1.77.8: - resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==, tarball: https://registry.npmjs.org/sass/-/sass-1.77.8.tgz} engines: {node: '>=14.0.0'} hasBin: true @@ -2209,13 +2240,16 @@ packages: engines: {node: '>=0.10.0'} source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz} engines: {node: '>=0.10.0'} speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} + state-local@1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==, tarball: https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz} + stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} @@ -2994,6 +3028,13 @@ snapshots: dependencies: tslib: 2.6.2 + '@guolao/vue-monaco-editor@1.5.4(monaco-editor@0.52.0)(vue@3.5.12(typescript@5.6.3))': + dependencies: + '@monaco-editor/loader': 1.4.0(monaco-editor@0.52.0) + monaco-editor: 0.52.0 + vue: 3.5.12(typescript@5.6.3) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) + '@humanfs/core@0.19.0': {} '@humanfs/node@0.16.5': @@ -3036,6 +3077,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + '@monaco-editor/loader@1.4.0(monaco-editor@0.52.0)': + dependencies: + monaco-editor: 0.52.0 + state-local: 1.0.7 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3474,6 +3520,8 @@ snapshots: ansi-styles@6.2.1: {} + antlr4@4.13.2: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -4356,6 +4404,8 @@ snapshots: mitt@3.0.1: {} + monaco-editor@0.52.0: {} + mrmime@2.0.0: {} ms@2.1.2: {} @@ -4759,6 +4809,8 @@ snapshots: speakingurl@14.0.1: {} + state-local@1.0.7: {} + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 diff --git a/webui/src/views/settings/components/script/aviatorscript/grammar/DSLLexer.ts b/webui/src/views/settings/components/script/aviatorscript/grammar/DSLLexer.ts new file mode 100644 index 000000000..9821e3823 --- /dev/null +++ b/webui/src/views/settings/components/script/aviatorscript/grammar/DSLLexer.ts @@ -0,0 +1,676 @@ +// Generated from workspace/2022-02-16-003239-023436000/DSL.g4 by ANTLR 4.9.3 +// jshint ignore: start +import { + ATNDeserializer, + CharStream, + DFA, + Lexer, + LexerATNSimulator, + PredictionContextCache, + Token +} from 'antlr4' + +const serializedATN = [ + '\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786', + '\u5964\u0002H\u021c\b\u0001\u0004\u0002\t\u0002\u0004\u0003\t\u0003', + '\u0004\u0004\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007', + '\t\u0007\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004', + '\f\t\f\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010', + '\t\u0010\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013', + '\u0004\u0014\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017', + '\t\u0017\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a', + '\u0004\u001b\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e', + '\t\u001e\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004"\t"\u0004#', + "\t#\u0004$\t$\u0004%\t%\u0004&\t&\u0004'\t'\u0004(\t(\u0004)\t)\u0004", + '*\t*\u0004+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0004', + '1\t1\u00042\t2\u00043\t3\u00044\t4\u00045\t5\u00046\t6\u00047\t7\u0004', + '8\t8\u00049\t9\u0004:\t:\u0004;\t;\u0004<\t<\u0004=\t=\u0004>\t>\u0004', + '?\t?\u0004@\t@\u0004A\tA\u0004B\tB\u0004C\tC\u0004D\tD\u0004E\tE\u0004', + 'F\tF\u0004G\tG\u0003\u0002\u0003\u0002\u0003\u0002\u0003\u0002\u0003', + '\u0003\u0003\u0003\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0005\u0003', + '\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0006\u0003', + '\u0006\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0003\u0007\u0003', + '\u0007\u0003\u0007\u0003\u0007\u0003\b\u0003\b\u0003\b\u0003\b\u0003', + '\b\u0003\b\u0003\b\u0003\t\u0003\t\u0003\t\u0003\n\u0003\n\u0003\n\u0003', + '\n\u0003\u000b\u0003\u000b\u0007\u000b\u00b9\n\u000b\f\u000b\u000e\u000b', + '\u00bc\u000b\u000b\u0003\u000b\u0003\u000b\u0006\u000b\u00c0\n\u000b', + '\r\u000b\u000e\u000b\u00c1\u0003\u000b\u0003\u000b\u0003\f\u0003\f\u0003', + '\f\u0003\f\u0007\f\u00ca\n\f\f\f\u000e\f\u00cd\u000b\f\u0003\f\u0003', + '\f\u0006\f\u00d1\n\f\r\f\u000e\f\u00d2\u0003\f\u0003\f\u0003\r\u0003', + '\r\u0006\r\u00d9\n\r\r\r\u000e\r\u00da\u0003\r\u0003\r\u0007\r\u00df', + '\n\r\f\r\u000e\r\u00e2\u000b\r\u0003\r\u0003\r\u0005\r\u00e6\n\r\u0003', + '\r\u0007\r\u00e9\n\r\f\r\u000e\r\u00ec\u000b\r\u0003\r\u0003\r\u0003', + '\u000e\u0003\u000e\u0007\u000e\u00f2\n\u000e\f\u000e\u000e\u000e\u00f5', + '\u000b\u000e\u0003\u000e\u0003\u000e\u0005\u000e\u00f9\n\u000e\u0003', + '\u000e\u0007\u000e\u00fc\n\u000e\f\u000e\u000e\u000e\u00ff\u000b\u000e', + '\u0003\u000e\u0003\u000e\u0006\u000e\u0103\n\u000e\r\u000e\u000e\u000e', + '\u0104\u0003\u000e\u0003\u000e\u0003\u000f\u0006\u000f\u010a\n\u000f', + '\r\u000f\u000e\u000f\u010b\u0003\u000f\u0003\u000f\u0003\u0010\u0005', + '\u0010\u0111\n\u0010\u0003\u0010\u0003\u0010\u0003\u0011\u0003\u0011', + '\u0003\u0011\u0003\u0011\u0005\u0011\u0119\n\u0011\u0003\u0011\u0007', + '\u0011\u011c\n\u0011\f\u0011\u000e\u0011\u011f\u000b\u0011\u0003\u0011', + '\u0005\u0011\u0122\n\u0011\u0003\u0011\u0005\u0011\u0125\n\u0011\u0003', + '\u0011\u0003\u0011\u0003\u0011\u0003\u0011\u0007\u0011\u012b\n\u0011', + '\f\u0011\u000e\u0011\u012e\u000b\u0011\u0003\u0011\u0003\u0011\u0005', + '\u0011\u0132\n\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0003\u0013', + '\u0003\u0013\u0003\u0014\u0003\u0014\u0003\u0015\u0003\u0015\u0003\u0016', + '\u0003\u0016\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018', + '\u0003\u0018\u0003\u0019\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a', + '\u0003\u001a\u0003\u001b\u0003\u001b\u0003\u001c\u0003\u001c\u0003\u001c', + '\u0003\u001d\u0003\u001d\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003 \u0003 \u0003!\u0003!\u0003"\u0003"', + '\u0003#\u0003#\u0003$\u0003$\u0003$\u0003$\u0003%\u0003%\u0003%\u0003', + "&\u0003&\u0003&\u0003'\u0006'\u016b\n'\r'\u000e'\u016c\u0003'", + "\u0003'\u0006'\u0171\n'\r'\u000e'\u0172\u0003'\u0003'\u0005'", + "\u0177\n'\u0003'\u0006'\u017a\n'\r'\u000e'\u017b\u0005'\u017e", + "\n'\u0003'\u0005'\u0181\n'\u0003(\u0003(\u0003(\u0006(\u0186\n(", + '\r(\u000e(\u0187\u0003)\u0003)\u0003)\u0003)\u0003)\u0003*\u0003*\u0003', + '*\u0003*\u0003*\u0003*\u0003+\u0003+\u0003+\u0003+\u0007+\u0199\n+\f', + '+\u000e+\u019c\u000b+\u0003+\u0003+\u0003+\u0003+\u0003+\u0007+\u01a3', + '\n+\f+\u000e+\u01a6\u000b+\u0003+\u0005+\u01a9\n+\u0003,\u0003,\u0003', + '-\u0003-\u0003-\u0003-\u0003.\u0003.\u0003.\u0003/\u0003/\u0003/\u0003', + '/\u0003/\u0003/\u0003/\u00030\u00030\u00030\u00031\u00031\u00031\u0003', + '1\u00031\u00032\u00032\u00032\u00032\u00032\u00032\u00033\u00033\u0003', + '3\u00033\u00033\u00033\u00034\u00034\u00034\u00034\u00034\u00034\u0003', + '4\u00034\u00034\u00035\u00035\u00035\u00035\u00036\u00036\u00036\u0003', + '6\u00036\u00036\u00036\u00037\u00037\u00037\u00037\u00037\u00037\u0003', + '8\u00038\u00039\u00039\u0003:\u0003:\u0003;\u0003;\u0003<\u0003<\u0003', + '=\u0003=\u0003>\u0003>\u0003?\u0003?\u0003@\u0003@\u0003A\u0003A\u0003', + 'B\u0003B\u0003C\u0003C\u0003D\u0003D\u0003D\u0003E\u0003E\u0003E\u0003', + 'F\u0003F\u0007F\u0209\nF\fF\u000eF\u020c\u000bF\u0003F\u0003F\u0003', + 'F\u0007F\u0211\nF\fF\u000eF\u0214\u000bF\u0007F\u0216\nF\fF\u000eF\u0219', + '\u000bF\u0003G\u0003G\u0003\u012c\u0002H\u0003\u0003\u0005\u0004\u0007', + '\u0005\t\u0006\u000b\u0007\r\b\u000f\t\u0011\n\u0013\u000b\u0015\f\u0017', + '\r\u0019\u000e\u001b\u000f\u001d\u0010\u001f\u0011!\u0012#\u0013%\u0014', + "'\u0015)\u0016+\u0017-\u0018/\u00191\u001a3\u001b5\u001c7\u001d9\u001e", + ';\u001f= ?!A"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]0_1a2c3e4g5i6k7m8o9q:s;u<', + 'w=y>{?}@\u007fA\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u0003', + '\u0002\u0010\u0005\u0002\f\f\u000f\u000f11\u0004\u0002>>@@\u0004\u0002', + '\u000b\u000b""\u0005\u0002\f\f\u000f\u000f\u202a\u202b\u0003\u0002', + '2;\u0004\u0002GGgg\u0004\u0002--//\u0004\u0002OPop\u0004\u0002ZZzz\u0005', + '\u00022;CHch\u0005\u0002\f\f\u000f\u000f$$\u0005\u0002\f\f\u000f\u000f', + '))\u0007\u0002&&C\\aac|\u4e02\u9fa7\b\u0002&&2;C\\aac|\u4e02\u9fa7\u0002', + '\u023f\u0002\u0003\u0003\u0002\u0002\u0002\u0002\u0005\u0003\u0002\u0002', + '\u0002\u0002\u0007\u0003\u0002\u0002\u0002\u0002\t\u0003\u0002\u0002', + '\u0002\u0002\u000b\u0003\u0002\u0002\u0002\u0002\r\u0003\u0002\u0002', + '\u0002\u0002\u000f\u0003\u0002\u0002\u0002\u0002\u0011\u0003\u0002\u0002', + '\u0002\u0002\u0013\u0003\u0002\u0002\u0002\u0002\u0015\u0003\u0002\u0002', + '\u0002\u0002\u0017\u0003\u0002\u0002\u0002\u0002\u0019\u0003\u0002\u0002', + '\u0002\u0002\u001b\u0003\u0002\u0002\u0002\u0002\u001d\u0003\u0002\u0002', + '\u0002\u0002\u001f\u0003\u0002\u0002\u0002\u0002!\u0003\u0002\u0002', + '\u0002\u0002#\u0003\u0002\u0002\u0002\u0002%\u0003\u0002\u0002\u0002', + "\u0002'\u0003\u0002\u0002\u0002\u0002)\u0003\u0002\u0002\u0002\u0002", + '+\u0003\u0002\u0002\u0002\u0002-\u0003\u0002\u0002\u0002\u0002/\u0003', + '\u0002\u0002\u0002\u00021\u0003\u0002\u0002\u0002\u00023\u0003\u0002', + '\u0002\u0002\u00025\u0003\u0002\u0002\u0002\u00027\u0003\u0002\u0002', + '\u0002\u00029\u0003\u0002\u0002\u0002\u0002;\u0003\u0002\u0002\u0002', + '\u0002=\u0003\u0002\u0002\u0002\u0002?\u0003\u0002\u0002\u0002\u0002', + 'A\u0003\u0002\u0002\u0002\u0002C\u0003\u0002\u0002\u0002\u0002E\u0003', + '\u0002\u0002\u0002\u0002G\u0003\u0002\u0002\u0002\u0002I\u0003\u0002', + '\u0002\u0002\u0002K\u0003\u0002\u0002\u0002\u0002M\u0003\u0002\u0002', + '\u0002\u0002O\u0003\u0002\u0002\u0002\u0002Q\u0003\u0002\u0002\u0002', + '\u0002S\u0003\u0002\u0002\u0002\u0002U\u0003\u0002\u0002\u0002\u0002', + 'W\u0003\u0002\u0002\u0002\u0002Y\u0003\u0002\u0002\u0002\u0002[\u0003', + '\u0002\u0002\u0002\u0002]\u0003\u0002\u0002\u0002\u0002_\u0003\u0002', + '\u0002\u0002\u0002a\u0003\u0002\u0002\u0002\u0002c\u0003\u0002\u0002', + '\u0002\u0002e\u0003\u0002\u0002\u0002\u0002g\u0003\u0002\u0002\u0002', + '\u0002i\u0003\u0002\u0002\u0002\u0002k\u0003\u0002\u0002\u0002\u0002', + 'm\u0003\u0002\u0002\u0002\u0002o\u0003\u0002\u0002\u0002\u0002q\u0003', + '\u0002\u0002\u0002\u0002s\u0003\u0002\u0002\u0002\u0002u\u0003\u0002', + '\u0002\u0002\u0002w\u0003\u0002\u0002\u0002\u0002y\u0003\u0002\u0002', + '\u0002\u0002{\u0003\u0002\u0002\u0002\u0002}\u0003\u0002\u0002\u0002', + '\u0002\u007f\u0003\u0002\u0002\u0002\u0002\u0081\u0003\u0002\u0002\u0002', + '\u0002\u0083\u0003\u0002\u0002\u0002\u0002\u0085\u0003\u0002\u0002\u0002', + '\u0002\u0087\u0003\u0002\u0002\u0002\u0002\u0089\u0003\u0002\u0002\u0002', + '\u0002\u008b\u0003\u0002\u0002\u0002\u0002\u008d\u0003\u0002\u0002\u0002', + '\u0003\u008f\u0003\u0002\u0002\u0002\u0005\u0093\u0003\u0002\u0002\u0002', + '\u0007\u0095\u0003\u0002\u0002\u0002\t\u0098\u0003\u0002\u0002\u0002', + '\u000b\u009e\u0003\u0002\u0002\u0002\r\u00a2\u0003\u0002\u0002\u0002', + '\u000f\u00a8\u0003\u0002\u0002\u0002\u0011\u00af\u0003\u0002\u0002\u0002', + '\u0013\u00b2\u0003\u0002\u0002\u0002\u0015\u00b6\u0003\u0002\u0002\u0002', + '\u0017\u00c5\u0003\u0002\u0002\u0002\u0019\u00d6\u0003\u0002\u0002\u0002', + '\u001b\u00ef\u0003\u0002\u0002\u0002\u001d\u0109\u0003\u0002\u0002\u0002', + '\u001f\u0110\u0003\u0002\u0002\u0002!\u0131\u0003\u0002\u0002\u0002', + "#\u0133\u0003\u0002\u0002\u0002%\u0136\u0003\u0002\u0002\u0002'\u0138", + '\u0003\u0002\u0002\u0002)\u013a\u0003\u0002\u0002\u0002+\u013c\u0003', + '\u0002\u0002\u0002-\u013e\u0003\u0002\u0002\u0002/\u0141\u0003\u0002', + '\u0002\u00021\u0144\u0003\u0002\u0002\u00023\u0147\u0003\u0002\u0002', + '\u00025\u014a\u0003\u0002\u0002\u00027\u014c\u0003\u0002\u0002\u0002', + '9\u014f\u0003\u0002\u0002\u0002;\u0151\u0003\u0002\u0002\u0002=\u0154', + '\u0003\u0002\u0002\u0002?\u0157\u0003\u0002\u0002\u0002A\u0159\u0003', + '\u0002\u0002\u0002C\u015b\u0003\u0002\u0002\u0002E\u015d\u0003\u0002', + '\u0002\u0002G\u015f\u0003\u0002\u0002\u0002I\u0163\u0003\u0002\u0002', + '\u0002K\u0166\u0003\u0002\u0002\u0002M\u016a\u0003\u0002\u0002\u0002', + 'O\u0182\u0003\u0002\u0002\u0002Q\u0189\u0003\u0002\u0002\u0002S\u018e', + '\u0003\u0002\u0002\u0002U\u01a8\u0003\u0002\u0002\u0002W\u01aa\u0003', + '\u0002\u0002\u0002Y\u01ac\u0003\u0002\u0002\u0002[\u01b0\u0003\u0002', + '\u0002\u0002]\u01b3\u0003\u0002\u0002\u0002_\u01ba\u0003\u0002\u0002', + '\u0002a\u01bd\u0003\u0002\u0002\u0002c\u01c2\u0003\u0002\u0002\u0002', + 'e\u01c8\u0003\u0002\u0002\u0002g\u01ce\u0003\u0002\u0002\u0002i\u01d7', + '\u0003\u0002\u0002\u0002k\u01db\u0003\u0002\u0002\u0002m\u01e2\u0003', + '\u0002\u0002\u0002o\u01e8\u0003\u0002\u0002\u0002q\u01ea\u0003\u0002', + '\u0002\u0002s\u01ec\u0003\u0002\u0002\u0002u\u01ee\u0003\u0002\u0002', + '\u0002w\u01f0\u0003\u0002\u0002\u0002y\u01f2\u0003\u0002\u0002\u0002', + '{\u01f4\u0003\u0002\u0002\u0002}\u01f6\u0003\u0002\u0002\u0002\u007f', + '\u01f8\u0003\u0002\u0002\u0002\u0081\u01fa\u0003\u0002\u0002\u0002\u0083', + '\u01fc\u0003\u0002\u0002\u0002\u0085\u01fe\u0003\u0002\u0002\u0002\u0087', + '\u0200\u0003\u0002\u0002\u0002\u0089\u0203\u0003\u0002\u0002\u0002\u008b', + '\u0206\u0003\u0002\u0002\u0002\u008d\u021a\u0003\u0002\u0002\u0002\u008f', + '\u0090\u0007w\u0002\u0002\u0090\u0091\u0007u\u0002\u0002\u0091\u0092', + '\u0007g\u0002\u0002\u0092\u0004\u0003\u0002\u0002\u0002\u0093\u0094', + '\u0007.\u0002\u0002\u0094\u0006\u0003\u0002\u0002\u0002\u0095\u0096', + '\u0007k\u0002\u0002\u0096\u0097\u0007p\u0002\u0002\u0097\b\u0003\u0002', + '\u0002\u0002\u0098\u0099\u0007t\u0002\u0002\u0099\u009a\u0007c\u0002', + '\u0002\u009a\u009b\u0007p\u0002\u0002\u009b\u009c\u0007i\u0002\u0002', + '\u009c\u009d\u0007g\u0002\u0002\u009d\n\u0003\u0002\u0002\u0002\u009e', + '\u009f\u0007v\u0002\u0002\u009f\u00a0\u0007t\u0002\u0002\u00a0\u00a1', + '\u0007{\u0002\u0002\u00a1\f\u0003\u0002\u0002\u0002\u00a2\u00a3\u0007', + 'e\u0002\u0002\u00a3\u00a4\u0007c\u0002\u0002\u00a4\u00a5\u0007v\u0002', + '\u0002\u00a5\u00a6\u0007e\u0002\u0002\u00a6\u00a7\u0007j\u0002\u0002', + '\u00a7\u000e\u0003\u0002\u0002\u0002\u00a8\u00a9\u0007n\u0002\u0002', + '\u00a9\u00aa\u0007c\u0002\u0002\u00aa\u00ab\u0007o\u0002\u0002\u00ab', + '\u00ac\u0007d\u0002\u0002\u00ac\u00ad\u0007f\u0002\u0002\u00ad\u00ae', + '\u0007c\u0002\u0002\u00ae\u0010\u0003\u0002\u0002\u0002\u00af\u00b0', + '\u0007/\u0002\u0002\u00b0\u00b1\u0007@\u0002\u0002\u00b1\u0012\u0003', + '\u0002\u0002\u0002\u00b2\u00b3\u0007g\u0002\u0002\u00b3\u00b4\u0007', + 'p\u0002\u0002\u00b4\u00b5\u0007f\u0002\u0002\u00b5\u0014\u0003\u0002', + '\u0002\u0002\u00b6\u00ba\u0007?\u0002\u0002\u00b7\u00b9\u0005\u001d', + '\u000f\u0002\u00b8\u00b7\u0003\u0002\u0002\u0002\u00b9\u00bc\u0003\u0002', + '\u0002\u0002\u00ba\u00b8\u0003\u0002\u0002\u0002\u00ba\u00bb\u0003\u0002', + '\u0002\u0002\u00bb\u00bd\u0003\u0002\u0002\u0002\u00bc\u00ba\u0003\u0002', + '\u0002\u0002\u00bd\u00bf\u00071\u0002\u0002\u00be\u00c0\n\u0002\u0002', + '\u0002\u00bf\u00be\u0003\u0002\u0002\u0002\u00c0\u00c1\u0003\u0002\u0002', + '\u0002\u00c1\u00bf\u0003\u0002\u0002\u0002\u00c1\u00c2\u0003\u0002\u0002', + '\u0002\u00c2\u00c3\u0003\u0002\u0002\u0002\u00c3\u00c4\u00071\u0002', + '\u0002\u00c4\u0016\u0003\u0002\u0002\u0002\u00c5\u00c6\u0007?\u0002', + '\u0002\u00c6\u00c7\u0007\u0080\u0002\u0002\u00c7\u00cb\u0003\u0002\u0002', + '\u0002\u00c8\u00ca\u0005\u001d\u000f\u0002\u00c9\u00c8\u0003\u0002\u0002', + '\u0002\u00ca\u00cd\u0003\u0002\u0002\u0002\u00cb\u00c9\u0003\u0002\u0002', + '\u0002\u00cb\u00cc\u0003\u0002\u0002\u0002\u00cc\u00ce\u0003\u0002\u0002', + '\u0002\u00cd\u00cb\u0003\u0002\u0002\u0002\u00ce\u00d0\u00071\u0002', + '\u0002\u00cf\u00d1\n\u0002\u0002\u0002\u00d0\u00cf\u0003\u0002\u0002', + '\u0002\u00d1\u00d2\u0003\u0002\u0002\u0002\u00d2\u00d0\u0003\u0002\u0002', + '\u0002\u00d2\u00d3\u0003\u0002\u0002\u0002\u00d3\u00d4\u0003\u0002\u0002', + '\u0002\u00d4\u00d5\u00071\u0002\u0002\u00d5\u0018\u0003\u0002\u0002', + '\u0002\u00d6\u00d8\u00071\u0002\u0002\u00d7\u00d9\n\u0002\u0002\u0002', + '\u00d8\u00d7\u0003\u0002\u0002\u0002\u00d9\u00da\u0003\u0002\u0002\u0002', + '\u00da\u00d8\u0003\u0002\u0002\u0002\u00da\u00db\u0003\u0002\u0002\u0002', + '\u00db\u00dc\u0003\u0002\u0002\u0002\u00dc\u00e0\u00071\u0002\u0002', + '\u00dd\u00df\u0005\u001d\u000f\u0002\u00de\u00dd\u0003\u0002\u0002\u0002', + '\u00df\u00e2\u0003\u0002\u0002\u0002\u00e0\u00de\u0003\u0002\u0002\u0002', + '\u00e0\u00e1\u0003\u0002\u0002\u0002\u00e1\u00e3\u0003\u0002\u0002\u0002', + '\u00e2\u00e0\u0003\u0002\u0002\u0002\u00e3\u00e5\t\u0003\u0002\u0002', + '\u00e4\u00e6\u0007?\u0002\u0002\u00e5\u00e4\u0003\u0002\u0002\u0002', + '\u00e5\u00e6\u0003\u0002\u0002\u0002\u00e6\u00ea\u0003\u0002\u0002\u0002', + '\u00e7\u00e9\u0005\u001d\u000f\u0002\u00e8\u00e7\u0003\u0002\u0002\u0002', + '\u00e9\u00ec\u0003\u0002\u0002\u0002\u00ea\u00e8\u0003\u0002\u0002\u0002', + '\u00ea\u00eb\u0003\u0002\u0002\u0002\u00eb\u00ed\u0003\u0002\u0002\u0002', + '\u00ec\u00ea\u0003\u0002\u0002\u0002\u00ed\u00ee\u0005\u008bF\u0002', + '\u00ee\u001a\u0003\u0002\u0002\u0002\u00ef\u00f3\u0005\u008bF\u0002', + '\u00f0\u00f2\u0005\u001d\u000f\u0002\u00f1\u00f0\u0003\u0002\u0002\u0002', + '\u00f2\u00f5\u0003\u0002\u0002\u0002\u00f3\u00f1\u0003\u0002\u0002\u0002', + '\u00f3\u00f4\u0003\u0002\u0002\u0002\u00f4\u00f6\u0003\u0002\u0002\u0002', + '\u00f5\u00f3\u0003\u0002\u0002\u0002\u00f6\u00f8\t\u0003\u0002\u0002', + '\u00f7\u00f9\u0007?\u0002\u0002\u00f8\u00f7\u0003\u0002\u0002\u0002', + '\u00f8\u00f9\u0003\u0002\u0002\u0002\u00f9\u00fd\u0003\u0002\u0002\u0002', + '\u00fa\u00fc\u0005\u001d\u000f\u0002\u00fb\u00fa\u0003\u0002\u0002\u0002', + '\u00fc\u00ff\u0003\u0002\u0002\u0002\u00fd\u00fb\u0003\u0002\u0002\u0002', + '\u00fd\u00fe\u0003\u0002\u0002\u0002\u00fe\u0100\u0003\u0002\u0002\u0002', + '\u00ff\u00fd\u0003\u0002\u0002\u0002\u0100\u0102\u00071\u0002\u0002', + '\u0101\u0103\n\u0002\u0002\u0002\u0102\u0101\u0003\u0002\u0002\u0002', + '\u0103\u0104\u0003\u0002\u0002\u0002\u0104\u0102\u0003\u0002\u0002\u0002', + '\u0104\u0105\u0003\u0002\u0002\u0002\u0105\u0106\u0003\u0002\u0002\u0002', + '\u0106\u0107\u00071\u0002\u0002\u0107\u001c\u0003\u0002\u0002\u0002', + '\u0108\u010a\t\u0004\u0002\u0002\u0109\u0108\u0003\u0002\u0002\u0002', + '\u010a\u010b\u0003\u0002\u0002\u0002\u010b\u0109\u0003\u0002\u0002\u0002', + '\u010b\u010c\u0003\u0002\u0002\u0002\u010c\u010d\u0003\u0002\u0002\u0002', + '\u010d\u010e\b\u000f\u0002\u0002\u010e\u001e\u0003\u0002\u0002\u0002', + '\u010f\u0111\u0007\u000f\u0002\u0002\u0110\u010f\u0003\u0002\u0002\u0002', + '\u0110\u0111\u0003\u0002\u0002\u0002\u0111\u0112\u0003\u0002\u0002\u0002', + '\u0112\u0113\u0007\f\u0002\u0002\u0113 \u0003\u0002\u0002\u0002\u0114', + '\u0115\u00071\u0002\u0002\u0115\u0119\u00071\u0002\u0002\u0116\u0117', + '\u0007%\u0002\u0002\u0117\u0119\u0007%\u0002\u0002\u0118\u0114\u0003', + '\u0002\u0002\u0002\u0118\u0116\u0003\u0002\u0002\u0002\u0119\u011d\u0003', + '\u0002\u0002\u0002\u011a\u011c\n\u0005\u0002\u0002\u011b\u011a\u0003', + '\u0002\u0002\u0002\u011c\u011f\u0003\u0002\u0002\u0002\u011d\u011b\u0003', + '\u0002\u0002\u0002\u011d\u011e\u0003\u0002\u0002\u0002\u011e\u0124\u0003', + '\u0002\u0002\u0002\u011f\u011d\u0003\u0002\u0002\u0002\u0120\u0122\u0007', + '\u000f\u0002\u0002\u0121\u0120\u0003\u0002\u0002\u0002\u0121\u0122\u0003', + '\u0002\u0002\u0002\u0122\u0123\u0003\u0002\u0002\u0002\u0123\u0125\u0007', + '\f\u0002\u0002\u0124\u0121\u0003\u0002\u0002\u0002\u0124\u0125\u0003', + '\u0002\u0002\u0002\u0125\u0132\u0003\u0002\u0002\u0002\u0126\u0127\u0007', + '1\u0002\u0002\u0127\u0128\u0007,\u0002\u0002\u0128\u012c\u0003\u0002', + '\u0002\u0002\u0129\u012b\u000b\u0002\u0002\u0002\u012a\u0129\u0003\u0002', + '\u0002\u0002\u012b\u012e\u0003\u0002\u0002\u0002\u012c\u012d\u0003\u0002', + '\u0002\u0002\u012c\u012a\u0003\u0002\u0002\u0002\u012d\u012f\u0003\u0002', + '\u0002\u0002\u012e\u012c\u0003\u0002\u0002\u0002\u012f\u0130\u0007,', + '\u0002\u0002\u0130\u0132\u00071\u0002\u0002\u0131\u0118\u0003\u0002', + '\u0002\u0002\u0131\u0126\u0003\u0002\u0002\u0002\u0132"\u0003\u0002', + '\u0002\u0002\u0133\u0134\u0007,\u0002\u0002\u0134\u0135\u0007,\u0002', + '\u0002\u0135$\u0003\u0002\u0002\u0002\u0136\u0137\u0007,\u0002\u0002', + '\u0137&\u0003\u0002\u0002\u0002\u0138\u0139\u00071\u0002\u0002\u0139', + "(\u0003\u0002\u0002\u0002\u013a\u013b\u0007'\u0002\u0002\u013b*\u0003", + '\u0002\u0002\u0002\u013c\u013d\u0007#\u0002\u0002\u013d,\u0003\u0002', + '\u0002\u0002\u013e\u013f\u0007(\u0002\u0002\u013f\u0140\u0007(\u0002', + '\u0002\u0140.\u0003\u0002\u0002\u0002\u0141\u0142\u0007~\u0002\u0002', + '\u0142\u0143\u0007~\u0002\u0002\u01430\u0003\u0002\u0002\u0002\u0144', + '\u0145\u0007#\u0002\u0002\u0145\u0146\u0007?\u0002\u0002\u01462\u0003', + '\u0002\u0002\u0002\u0147\u0148\u0007@\u0002\u0002\u0148\u0149\u0007', + '?\u0002\u0002\u01494\u0003\u0002\u0002\u0002\u014a\u014b\u0007@\u0002', + '\u0002\u014b6\u0003\u0002\u0002\u0002\u014c\u014d\u0007>\u0002\u0002', + '\u014d\u014e\u0007?\u0002\u0002\u014e8\u0003\u0002\u0002\u0002\u014f', + '\u0150\u0007>\u0002\u0002\u0150:\u0003\u0002\u0002\u0002\u0151\u0152', + '\u0007?\u0002\u0002\u0152\u0153\u0007?\u0002\u0002\u0153<\u0003\u0002', + '\u0002\u0002\u0154\u0155\u0007?\u0002\u0002\u0155\u0156\u0007\u0080', + '\u0002\u0002\u0156>\u0003\u0002\u0002\u0002\u0157\u0158\u0007(\u0002', + '\u0002\u0158@\u0003\u0002\u0002\u0002\u0159\u015a\u0007~\u0002\u0002', + '\u015aB\u0003\u0002\u0002\u0002\u015b\u015c\u0007`\u0002\u0002\u015c', + 'D\u0003\u0002\u0002\u0002\u015d\u015e\u0007\u0080\u0002\u0002\u015e', + 'F\u0003\u0002\u0002\u0002\u015f\u0160\u0007@\u0002\u0002\u0160\u0161', + '\u0007@\u0002\u0002\u0161\u0162\u0007@\u0002\u0002\u0162H\u0003\u0002', + '\u0002\u0002\u0163\u0164\u0007>\u0002\u0002\u0164\u0165\u0007>\u0002', + '\u0002\u0165J\u0003\u0002\u0002\u0002\u0166\u0167\u0007@\u0002\u0002', + '\u0167\u0168\u0007@\u0002\u0002\u0168L\u0003\u0002\u0002\u0002\u0169', + '\u016b\t\u0006\u0002\u0002\u016a\u0169\u0003\u0002\u0002\u0002\u016b', + '\u016c\u0003\u0002\u0002\u0002\u016c\u016a\u0003\u0002\u0002\u0002\u016c', + '\u016d\u0003\u0002\u0002\u0002\u016d\u017d\u0003\u0002\u0002\u0002\u016e', + '\u0170\u00070\u0002\u0002\u016f\u0171\t\u0006\u0002\u0002\u0170\u016f', + '\u0003\u0002\u0002\u0002\u0171\u0172\u0003\u0002\u0002\u0002\u0172\u0170', + '\u0003\u0002\u0002\u0002\u0172\u0173\u0003\u0002\u0002\u0002\u0173\u017e', + '\u0003\u0002\u0002\u0002\u0174\u0176\t\u0007\u0002\u0002\u0175\u0177', + '\t\b\u0002\u0002\u0176\u0175\u0003\u0002\u0002\u0002\u0176\u0177\u0003', + '\u0002\u0002\u0002\u0177\u0179\u0003\u0002\u0002\u0002\u0178\u017a\t', + '\u0006\u0002\u0002\u0179\u0178\u0003\u0002\u0002\u0002\u017a\u017b\u0003', + '\u0002\u0002\u0002\u017b\u0179\u0003\u0002\u0002\u0002\u017b\u017c\u0003', + '\u0002\u0002\u0002\u017c\u017e\u0003\u0002\u0002\u0002\u017d\u016e\u0003', + '\u0002\u0002\u0002\u017d\u0174\u0003\u0002\u0002\u0002\u017d\u017e\u0003', + '\u0002\u0002\u0002\u017e\u0180\u0003\u0002\u0002\u0002\u017f\u0181\t', + '\t\u0002\u0002\u0180\u017f\u0003\u0002\u0002\u0002\u0180\u0181\u0003', + '\u0002\u0002\u0002\u0181N\u0003\u0002\u0002\u0002\u0182\u0183\u0007', + '2\u0002\u0002\u0183\u0185\t\n\u0002\u0002\u0184\u0186\t\u000b\u0002', + '\u0002\u0185\u0184\u0003\u0002\u0002\u0002\u0186\u0187\u0003\u0002\u0002', + '\u0002\u0187\u0185\u0003\u0002\u0002\u0002\u0187\u0188\u0003\u0002\u0002', + '\u0002\u0188P\u0003\u0002\u0002\u0002\u0189\u018a\u0007v\u0002\u0002', + '\u018a\u018b\u0007t\u0002\u0002\u018b\u018c\u0007w\u0002\u0002\u018c', + '\u018d\u0007g\u0002\u0002\u018dR\u0003\u0002\u0002\u0002\u018e\u018f', + '\u0007h\u0002\u0002\u018f\u0190\u0007c\u0002\u0002\u0190\u0191\u0007', + 'n\u0002\u0002\u0191\u0192\u0007u\u0002\u0002\u0192\u0193\u0007g\u0002', + '\u0002\u0193T\u0003\u0002\u0002\u0002\u0194\u019a\u0007$\u0002\u0002', + '\u0195\u0199\n\f\u0002\u0002\u0196\u0197\u0007^\u0002\u0002\u0197\u0199', + '\u0007$\u0002\u0002\u0198\u0195\u0003\u0002\u0002\u0002\u0198\u0196', + '\u0003\u0002\u0002\u0002\u0199\u019c\u0003\u0002\u0002\u0002\u019a\u0198', + '\u0003\u0002\u0002\u0002\u019a\u019b\u0003\u0002\u0002\u0002\u019b\u019d', + '\u0003\u0002\u0002\u0002\u019c\u019a\u0003\u0002\u0002\u0002\u019d\u01a9', + '\u0007$\u0002\u0002\u019e\u01a4\u0007)\u0002\u0002\u019f\u01a3\n\r\u0002', + '\u0002\u01a0\u01a1\u0007^\u0002\u0002\u01a1\u01a3\u0007)\u0002\u0002', + '\u01a2\u019f\u0003\u0002\u0002\u0002\u01a2\u01a0\u0003\u0002\u0002\u0002', + '\u01a3\u01a6\u0003\u0002\u0002\u0002\u01a4\u01a2\u0003\u0002\u0002\u0002', + '\u01a4\u01a5\u0003\u0002\u0002\u0002\u01a5\u01a7\u0003\u0002\u0002\u0002', + '\u01a6\u01a4\u0003\u0002\u0002\u0002\u01a7\u01a9\u0007)\u0002\u0002', + '\u01a8\u0194\u0003\u0002\u0002\u0002\u01a8\u019e\u0003\u0002\u0002\u0002', + '\u01a9V\u0003\u0002\u0002\u0002\u01aa\u01ab\u0007?\u0002\u0002\u01ab', + 'X\u0003\u0002\u0002\u0002\u01ac\u01ad\u0007n\u0002\u0002\u01ad\u01ae', + '\u0007g\u0002\u0002\u01ae\u01af\u0007v\u0002\u0002\u01afZ\u0003\u0002', + '\u0002\u0002\u01b0\u01b1\u0007h\u0002\u0002\u01b1\u01b2\u0007p\u0002', + '\u0002\u01b2\\\u0003\u0002\u0002\u0002\u01b3\u01b4\u0007t\u0002\u0002', + '\u01b4\u01b5\u0007g\u0002\u0002\u01b5\u01b6\u0007v\u0002\u0002\u01b6', + '\u01b7\u0007w\u0002\u0002\u01b7\u01b8\u0007t\u0002\u0002\u01b8\u01b9', + '\u0007p\u0002\u0002\u01b9^\u0003\u0002\u0002\u0002\u01ba\u01bb\u0007', + 'k\u0002\u0002\u01bb\u01bc\u0007h\u0002\u0002\u01bc`\u0003\u0002\u0002', + '\u0002\u01bd\u01be\u0007g\u0002\u0002\u01be\u01bf\u0007n\u0002\u0002', + '\u01bf\u01c0\u0007u\u0002\u0002\u01c0\u01c1\u0007g\u0002\u0002\u01c1', + 'b\u0003\u0002\u0002\u0002\u01c2\u01c3\u0007g\u0002\u0002\u01c3\u01c4', + '\u0007n\u0002\u0002\u01c4\u01c5\u0007u\u0002\u0002\u01c5\u01c6\u0007', + 'k\u0002\u0002\u01c6\u01c7\u0007h\u0002\u0002\u01c7d\u0003\u0002\u0002', + '\u0002\u01c8\u01c9\u0007d\u0002\u0002\u01c9\u01ca\u0007t\u0002\u0002', + '\u01ca\u01cb\u0007g\u0002\u0002\u01cb\u01cc\u0007c\u0002\u0002\u01cc', + '\u01cd\u0007m\u0002\u0002\u01cdf\u0003\u0002\u0002\u0002\u01ce\u01cf', + '\u0007e\u0002\u0002\u01cf\u01d0\u0007q\u0002\u0002\u01d0\u01d1\u0007', + 'p\u0002\u0002\u01d1\u01d2\u0007v\u0002\u0002\u01d2\u01d3\u0007k\u0002', + '\u0002\u01d3\u01d4\u0007p\u0002\u0002\u01d4\u01d5\u0007w\u0002\u0002', + '\u01d5\u01d6\u0007g\u0002\u0002\u01d6h\u0003\u0002\u0002\u0002\u01d7', + '\u01d8\u0007h\u0002\u0002\u01d8\u01d9\u0007q\u0002\u0002\u01d9\u01da', + '\u0007t\u0002\u0002\u01daj\u0003\u0002\u0002\u0002\u01db\u01dc\u0007', + 'u\u0002\u0002\u01dc\u01dd\u0007y\u0002\u0002\u01dd\u01de\u0007k\u0002', + '\u0002\u01de\u01df\u0007v\u0002\u0002\u01df\u01e0\u0007e\u0002\u0002', + '\u01e0\u01e1\u0007j\u0002\u0002\u01e1l\u0003\u0002\u0002\u0002\u01e2', + '\u01e3\u0007y\u0002\u0002\u01e3\u01e4\u0007j\u0002\u0002\u01e4\u01e5', + '\u0007k\u0002\u0002\u01e5\u01e6\u0007n\u0002\u0002\u01e6\u01e7\u0007', + 'g\u0002\u0002\u01e7n\u0003\u0002\u0002\u0002\u01e8\u01e9\u0007]\u0002', + '\u0002\u01e9p\u0003\u0002\u0002\u0002\u01ea\u01eb\u0007_\u0002\u0002', + '\u01ebr\u0003\u0002\u0002\u0002\u01ec\u01ed\u0007*\u0002\u0002\u01ed', + 't\u0003\u0002\u0002\u0002\u01ee\u01ef\u0007+\u0002\u0002\u01efv\u0003', + '\u0002\u0002\u0002\u01f0\u01f1\u0007}\u0002\u0002\u01f1x\u0003\u0002', + '\u0002\u0002\u01f2\u01f3\u0007\u007f\u0002\u0002\u01f3z\u0003\u0002', + '\u0002\u0002\u01f4\u01f5\u0007=\u0002\u0002\u01f5|\u0003\u0002\u0002', + '\u0002\u01f6\u01f7\u0007A\u0002\u0002\u01f7~\u0003\u0002\u0002\u0002', + '\u01f8\u01f9\u0007<\u0002\u0002\u01f9\u0080\u0003\u0002\u0002\u0002', + '\u01fa\u01fb\u00070\u0002\u0002\u01fb\u0082\u0003\u0002\u0002\u0002', + '\u01fc\u01fd\u0007-\u0002\u0002\u01fd\u0084\u0003\u0002\u0002\u0002', + '\u01fe\u01ff\u0007/\u0002\u0002\u01ff\u0086\u0003\u0002\u0002\u0002', + '\u0200\u0201\u0007-\u0002\u0002\u0201\u0202\u0007-\u0002\u0002\u0202', + '\u0088\u0003\u0002\u0002\u0002\u0203\u0204\u0007/\u0002\u0002\u0204', + '\u0205\u0007/\u0002\u0002\u0205\u008a\u0003\u0002\u0002\u0002\u0206', + '\u020a\t\u000e\u0002\u0002\u0207\u0209\t\u000f\u0002\u0002\u0208\u0207', + '\u0003\u0002\u0002\u0002\u0209\u020c\u0003\u0002\u0002\u0002\u020a\u0208', + '\u0003\u0002\u0002\u0002\u020a\u020b\u0003\u0002\u0002\u0002\u020b\u0217', + '\u0003\u0002\u0002\u0002\u020c\u020a\u0003\u0002\u0002\u0002\u020d\u020e', + '\u00070\u0002\u0002\u020e\u0212\t\u000e\u0002\u0002\u020f\u0211\t\u000f', + '\u0002\u0002\u0210\u020f\u0003\u0002\u0002\u0002\u0211\u0214\u0003\u0002', + '\u0002\u0002\u0212\u0210\u0003\u0002\u0002\u0002\u0212\u0213\u0003\u0002', + '\u0002\u0002\u0213\u0216\u0003\u0002\u0002\u0002\u0214\u0212\u0003\u0002', + '\u0002\u0002\u0215\u020d\u0003\u0002\u0002\u0002\u0216\u0219\u0003\u0002', + '\u0002\u0002\u0217\u0215\u0003\u0002\u0002\u0002\u0217\u0218\u0003\u0002', + '\u0002\u0002\u0218\u008c\u0003\u0002\u0002\u0002\u0219\u0217\u0003\u0002', + '\u0002\u0002\u021a\u021b\u000b\u0002\u0002\u0002\u021b\u008e\u0003\u0002', + '\u0002\u0002&\u0002\u00ba\u00c1\u00cb\u00d2\u00da\u00e0\u00e5\u00ea', + '\u00f3\u00f8\u00fd\u0104\u010b\u0110\u0118\u011d\u0121\u0124\u012c\u0131', + '\u016c\u0172\u0176\u017b\u017d\u0180\u0187\u0198\u019a\u01a2\u01a4\u01a8', + '\u020a\u0212\u0217\u0003\b\u0002\u0002' +].join('') + +const atn = new ATNDeserializer().deserialize(serializedATN as unknown as number[]) + +const decisionsToDFA = atn.decisionToState.map((ds, index) => new DFA(ds, index)) + +export default class DSLLexer extends Lexer { + static EOF = Token.EOF + static T__0 = 1 + static T__1 = 2 + static T__2 = 3 + static T__3 = 4 + static T__4 = 5 + static T__5 = 6 + static T__6 = 7 + static T__7 = 8 + static T__8 = 9 + static RegularAssign = 10 + static RegularLikeRight = 11 + static RegularRelationLeftExpression = 12 + static RegularRelationRightExpression = 13 + static Space = 14 + static NewLine = 15 + static Comment = 16 + static Power = 17 + static Multiply = 18 + static Divide = 19 + static Mode = 20 + static Not = 21 + static And = 22 + static Or = 23 + static NotEqual = 24 + static GreatThanOrEqual = 25 + static GreatThan = 26 + static LessThanOrEqual = 27 + static LessThan = 28 + static Equal = 29 + static RegulaLike = 30 + static BitAnd = 31 + static BitOr = 32 + static BitXor = 33 + static BitNot = 34 + static BitRightShiftNoSign = 35 + static BitLeftShift = 36 + static BitRightShift = 37 + static Number = 38 + static NumberHex = 39 + static BooleanTrue = 40 + static BooleanFalse = 41 + static String = 42 + static Assignment = 43 + static VariablePrefix = 44 + static FunctionKeyword = 45 + static ReturnKeyword = 46 + static IfKeyword = 47 + static ElseKeyword = 48 + static ElseIfKeyword = 49 + static Break = 50 + static Continue = 51 + static For = 52 + static Switch = 53 + static While = 54 + static OpenBracket = 55 + static CloseBracket = 56 + static OpenParen = 57 + static CloseParen = 58 + static OpenBrace = 59 + static CloseBrace = 60 + static SemiColon = 61 + static QuestionMark = 62 + static Colon = 63 + static Dot = 64 + static Plus = 65 + static Minus = 66 + static PlusPlus = 67 + static MinusMinus = 68 + static Identifier = 69 + static UnexpectedCharacter = 70 + static grammarFileName = 'DSL.g4' + static channelNames = ['DEFAULT_TOKEN_CHANNEL', 'HIDDEN'] + static modeNames = ['DEFAULT_MODE'] + static literalNames = [ + null, + "'use'", + "','", + "'in'", + "'range'", + "'try'", + "'catch'", + "'lambda'", + "'->'", + "'end'", + null, + null, + null, + null, + null, + null, + null, + "'**'", + "'*'", + "'/'", + "'%'", + "'!'", + "'&&'", + "'||'", + "'!='", + "'>='", + "'>'", + "'<='", + "'<'", + "'=='", + "'=~'", + "'&'", + "'|'", + "'^'", + "'~'", + "'>>>'", + "'<<'", + "'>>'", + null, + null, + "'true'", + "'false'", + null, + "'='", + "'let'", + "'fn'", + "'return'", + "'if'", + "'else'", + "'elsif'", + "'break'", + "'continue'", + "'for'", + "'switch'", + "'while'", + "'['", + "']'", + "'('", + "')'", + "'{'", + "'}'", + "';'", + "'?'", + "':'", + "'.'", + "'+'", + "'-'", + "'++'", + "'--'" + ] + static symbolicNames = [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 'RegularAssign', + 'RegularLikeRight', + 'RegularRelationLeftExpression', + 'RegularRelationRightExpression', + 'Space', + 'NewLine', + 'Comment', + 'Power', + 'Multiply', + 'Divide', + 'Mode', + 'Not', + 'And', + 'Or', + 'NotEqual', + 'GreatThanOrEqual', + 'GreatThan', + 'LessThanOrEqual', + 'LessThan', + 'Equal', + 'RegulaLike', + 'BitAnd', + 'BitOr', + 'BitXor', + 'BitNot', + 'BitRightShiftNoSign', + 'BitLeftShift', + 'BitRightShift', + 'Number', + 'NumberHex', + 'BooleanTrue', + 'BooleanFalse', + 'String', + 'Assignment', + 'VariablePrefix', + 'FunctionKeyword', + 'ReturnKeyword', + 'IfKeyword', + 'ElseKeyword', + 'ElseIfKeyword', + 'Break', + 'Continue', + 'For', + 'Switch', + 'While', + 'OpenBracket', + 'CloseBracket', + 'OpenParen', + 'CloseParen', + 'OpenBrace', + 'CloseBrace', + 'SemiColon', + 'QuestionMark', + 'Colon', + 'Dot', + 'Plus', + 'Minus', + 'PlusPlus', + 'MinusMinus', + 'Identifier', + 'UnexpectedCharacter' + ] + static ruleNames = [ + 'T__0', + 'T__1', + 'T__2', + 'T__3', + 'T__4', + 'T__5', + 'T__6', + 'T__7', + 'T__8', + 'RegularAssign', + 'RegularLikeRight', + 'RegularRelationLeftExpression', + 'RegularRelationRightExpression', + 'Space', + 'NewLine', + 'Comment', + 'Power', + 'Multiply', + 'Divide', + 'Mode', + 'Not', + 'And', + 'Or', + 'NotEqual', + 'GreatThanOrEqual', + 'GreatThan', + 'LessThanOrEqual', + 'LessThan', + 'Equal', + 'RegulaLike', + 'BitAnd', + 'BitOr', + 'BitXor', + 'BitNot', + 'BitRightShiftNoSign', + 'BitLeftShift', + 'BitRightShift', + 'Number', + 'NumberHex', + 'BooleanTrue', + 'BooleanFalse', + 'String', + 'Assignment', + 'VariablePrefix', + 'FunctionKeyword', + 'ReturnKeyword', + 'IfKeyword', + 'ElseKeyword', + 'ElseIfKeyword', + 'Break', + 'Continue', + 'For', + 'Switch', + 'While', + 'OpenBracket', + 'CloseBracket', + 'OpenParen', + 'CloseParen', + 'OpenBrace', + 'CloseBrace', + 'SemiColon', + 'QuestionMark', + 'Colon', + 'Dot', + 'Plus', + 'Minus', + 'PlusPlus', + 'MinusMinus', + 'Identifier', + 'UnexpectedCharacter' + ] + + constructor(input: CharStream) { + super(input) + this._interp = new LexerATNSimulator(this, atn, decisionsToDFA, new PredictionContextCache()) + } + + get atn() { + return atn + } +} diff --git a/webui/src/views/settings/components/script/aviatorscript/grammar/DSLParser.ts b/webui/src/views/settings/components/script/aviatorscript/grammar/DSLParser.ts new file mode 100644 index 000000000..742fb0687 --- /dev/null +++ b/webui/src/views/settings/components/script/aviatorscript/grammar/DSLParser.ts @@ -0,0 +1,5031 @@ +// Generated from workspace/2022-02-16-003239-023436000/DSL.g4 by ANTLR 4.9.3 +// jshint ignore: start +import { + ATN, + ATNDeserializer, + CommonTokenStream, + DFA, + FailedPredicateException, + NoViableAltException, + Parser, + ParserATNSimulator, + ParserRuleContext, + PredictionContextCache, + RecognitionException, + Token +} from 'antlr4' + +const serializedATN = [ + '\u0003\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786', + '\u5964\u0003H\u0262\u0004\u0002\t\u0002\u0004\u0003\t\u0003\u0004\u0004', + '\t\u0004\u0004\u0005\t\u0005\u0004\u0006\t\u0006\u0004\u0007\t\u0007', + '\u0004\b\t\b\u0004\t\t\t\u0004\n\t\n\u0004\u000b\t\u000b\u0004\f\t\f', + '\u0004\r\t\r\u0004\u000e\t\u000e\u0004\u000f\t\u000f\u0004\u0010\t\u0010', + '\u0004\u0011\t\u0011\u0004\u0012\t\u0012\u0004\u0013\t\u0013\u0004\u0014', + '\t\u0014\u0004\u0015\t\u0015\u0004\u0016\t\u0016\u0004\u0017\t\u0017', + '\u0004\u0018\t\u0018\u0004\u0019\t\u0019\u0004\u001a\t\u001a\u0004\u001b', + '\t\u001b\u0004\u001c\t\u001c\u0004\u001d\t\u001d\u0004\u001e\t\u001e', + '\u0004\u001f\t\u001f\u0004 \t \u0004!\t!\u0004"\t"\u0004#\t#\u0004', + "$\t$\u0004%\t%\u0004&\t&\u0004'\t'\u0004(\t(\u0004)\t)\u0004*\t*\u0004", + '+\t+\u0004,\t,\u0004-\t-\u0004.\t.\u0004/\t/\u00040\t0\u0003\u0002\u0003', + '\u0002\u0003\u0002\u0003\u0003\u0006\u0003e\n\u0003\r\u0003\u000e\u0003', + 'f\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004l\n\u0004\u0003\u0004', + '\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004', + 't\n\u0004\u0003\u0004\u0003\u0004\u0005\u0004x\n\u0004\u0003\u0004\u0003', + '\u0004\u0003\u0004\u0003\u0004\u0003\u0004\u0005\u0004\u007f\n\u0004', + '\u0003\u0004\u0003\u0004\u0005\u0004\u0083\n\u0004\u0003\u0004\u0003', + '\u0004\u0003\u0004\u0005\u0004\u0088\n\u0004\u0003\u0004\u0003\u0004', + '\u0003\u0004\u0006\u0004\u008d\n\u0004\r\u0004\u000e\u0004\u008e\u0005', + '\u0004\u0091\n\u0004\u0003\u0004\u0003\u0004\u0007\u0004\u0095\n\u0004', + '\f\u0004\u000e\u0004\u0098\u000b\u0004\u0003\u0005\u0003\u0005\u0003', + '\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0003\u0005\u0007\u0005\u00a1', + '\n\u0005\f\u0005\u000e\u0005\u00a4\u000b\u0005\u0003\u0005\u0005\u0005', + '\u00a7\n\u0005\u0003\u0005\u0003\u0005\u0005\u0005\u00ab\n\u0005\u0003', + '\u0005\u0003\u0005\u0003\u0006\u0003\u0006\u0005\u0006\u00b1\n\u0006', + '\u0003\u0006\u0006\u0006\u00b4\n\u0006\r\u0006\u000e\u0006\u00b5\u0003', + '\u0006\u0007\u0006\u00b9\n\u0006\f\u0006\u000e\u0006\u00bc\u000b\u0006', + '\u0003\u0006\u0003\u0006\u0003\u0007\u0003\u0007\u0005\u0007\u00c2\n', + '\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003\u0007\u0003', + '\u0007\u0003\u0007\u0003\b\u0005\b\u00cc\n\b\u0003\b\u0003\b\u0003\b', + '\u0005\b\u00d1\n\b\u0003\b\u0007\b\u00d4\n\b\f\b\u000e\b\u00d7\u000b', + '\b\u0005\b\u00d9\n\b\u0003\t\u0005\t\u00dc\n\t\u0003\t\u0007\t\u00df', + '\n\t\f\t\u000e\t\u00e2\u000b\t\u0003\t\u0005\t\u00e5\n\t\u0003\n\u0003', + '\n\u0003\n\u0003\u000b\u0003\u000b\u0003\u000b\u0007\u000b\u00ed\n\u000b', + '\f\u000b\u000e\u000b\u00f0\u000b\u000b\u0003\f\u0003\f\u0003\f\u0003', + '\f\u0003\f\u0003\f\u0005\f\u00f8\n\f\u0003\f\u0003\f\u0003\f\u0003\f', + '\u0005\f\u00fe\n\f\u0003\r\u0003\r\u0003\r\u0007\r\u0103\n\r\f\r\u000e', + '\r\u0106\u000b\r\u0003\u000e\u0003\u000e\u0003\u000e\u0003\u000e\u0003', + '\u000e\u0003\u000e\u0003\u000e\u0005\u000e\u010f\n\u000e\u0003\u000e', + '\u0003\u000e\u0003\u000e\u0003\u000e\u0005\u000e\u0115\n\u000e\u0003', + '\u000f\u0003\u000f\u0005\u000f\u0119\n\u000f\u0003\u000f\u0003\u000f', + '\u0005\u000f\u011d\n\u000f\u0003\u000f\u0003\u000f\u0007\u000f\u0121', + '\n\u000f\f\u000f\u000e\u000f\u0124\u000b\u000f\u0003\u000f\u0005\u000f', + '\u0127\n\u000f\u0003\u0010\u0003\u0010\u0003\u0010\u0005\u0010\u012c', + '\n\u0010\u0003\u0010\u0005\u0010\u012f\n\u0010\u0003\u0010\u0003\u0010', + '\u0005\u0010\u0133\n\u0010\u0003\u0010\u0003\u0010\u0003\u0011\u0003', + '\u0011\u0003\u0011\u0003\u0012\u0003\u0012\u0003\u0012\u0005\u0012\u013d', + '\n\u0012\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013\u0003\u0013', + '\u0003\u0013\u0003\u0014\u0003\u0014\u0005\u0014\u0147\n\u0014\u0003', + '\u0014\u0003\u0014\u0005\u0014\u014b\n\u0014\u0003\u0014\u0003\u0014', + '\u0005\u0014\u014f\n\u0014\u0003\u0015\u0003\u0015\u0003\u0016\u0003', + '\u0016\u0003\u0016\u0003\u0016\u0005\u0016\u0157\n\u0016\u0003\u0016', + '\u0003\u0016\u0003\u0016\u0003\u0016\u0003\u0017\u0003\u0017\u0003\u0017', + '\u0003\u0017\u0003\u0017\u0003\u0017\u0003\u0018\u0003\u0018\u0003\u0018', + '\u0005\u0018\u0166\n\u0018\u0003\u0018\u0003\u0018\u0003\u0018\u0003', + '\u0018\u0005\u0018\u016c\n\u0018\u0003\u0018\u0003\u0018\u0005\u0018', + '\u0170\n\u0018\u0003\u0018\u0003\u0018\u0003\u0019\u0003\u0019\u0005', + '\u0019\u0176\n\u0019\u0003\u0019\u0003\u0019\u0005\u0019\u017a\n\u0019', + '\u0003\u0019\u0003\u0019\u0003\u001a\u0003\u001a\u0003\u001b\u0003\u001b', + '\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0003\u001c', + '\u0005\u001c\u0188\n\u001c\u0003\u001c\u0003\u001c\u0003\u001c\u0005', + '\u001c\u018d\n\u001c\u0007\u001c\u018f\n\u001c\f\u001c\u000e\u001c\u0192', + '\u000b\u001c\u0003\u001c\u0003\u001c\u0007\u001c\u0196\n\u001c\f\u001c', + '\u000e\u001c\u0199\u000b\u001c\u0003\u001d\u0003\u001d\u0003\u001d\u0005', + '\u001d\u019e\n\u001d\u0003\u001d\u0007\u001d\u01a1\n\u001d\f\u001d\u000e', + '\u001d\u01a4\u000b\u001d\u0003\u001e\u0003\u001e\u0003\u001e\u0003\u001e', + '\u0007\u001e\u01aa\n\u001e\f\u001e\u000e\u001e\u01ad\u000b\u001e\u0003', + '\u001e\u0003\u001e\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003', + '\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u01c6', + '\n\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u01d1\n', + '\u001f\u0003\u001f\u0003\u001f\u0005\u001f\u01d5\n\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f', + '\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0003\u001f\u0007\u001f', + '\u01fb\n\u001f\f\u001f\u000e\u001f\u01fe\u000b\u001f\u0003 \u0003 \u0003', + ' \u0003 \u0003 \u0003 \u0007 \u0206\n \f \u000e \u0209\u000b \u0003', + ' \u0003 \u0005 \u020d\n \u0003!\u0003!\u0003!\u0003!\u0003!\u0003!\u0003', + '!\u0007!\u0216\n!\f!\u000e!\u0219\u000b!\u0003"\u0003"\u0003"\u0003', + '#\u0003#\u0003#\u0003$\u0003$\u0003$\u0003%\u0003%\u0003%\u0003&\u0003', + "&\u0003&\u0003'\u0003'\u0003'\u0003(\u0003(\u0003)\u0003)\u0003*", + '\u0003*\u0003+\u0003+\u0003,\u0003,\u0003-\u0003-\u0003-\u0003-\u0003', + '.\u0003.\u0003.\u0003.\u0003.\u0005.\u0240\n.\u0003.\u0003.\u0005.\u0244', + '\n.\u0003.\u0003.\u0005.\u0248\n.\u0003.\u0003.\u0005.\u024c\n.\u0003', + '.\u0005.\u024f\n.\u0003.\u0003.\u0005.\u0253\n.\u0007.\u0255\n.\f.\u000e', + '.\u0258\u000b.\u0005.\u025a\n.\u0003.\u0003.\u0003/\u0003/\u00030\u0003', + '0\u00030\u0002\u0004\u0006<1\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012', + '\u0014\u0016\u0018\u001a\u001c\u001e "$&(*,.02468:<>@BDFHJLNPRTVXZ', + "\\^\u0002\t\u0003\u0002%'\u0003\u0002\u001a\u001f\u0003\u0002\u0014", + '\u0016\u0003\u0002CD\u0003\u0002!"\u0004\u0002\u0011\u0011??\u0003', + '\u0002(,\u0002\u02a9\u0002`\u0003\u0002\u0002\u0002\u0004d\u0003\u0002', + '\u0002\u0002\u0006\u0090\u0003\u0002\u0002\u0002\b\u0099\u0003\u0002', + '\u0002\u0002\n\u00ae\u0003\u0002\u0002\u0002\f\u00bf\u0003\u0002\u0002', + '\u0002\u000e\u00d8\u0003\u0002\u0002\u0002\u0010\u00db\u0003\u0002\u0002', + '\u0002\u0012\u00e6\u0003\u0002\u0002\u0002\u0014\u00e9\u0003\u0002\u0002', + '\u0002\u0016\u00fd\u0003\u0002\u0002\u0002\u0018\u00ff\u0003\u0002\u0002', + '\u0002\u001a\u0114\u0003\u0002\u0002\u0002\u001c\u0116\u0003\u0002\u0002', + '\u0002\u001e\u012b\u0003\u0002\u0002\u0002 \u0136\u0003\u0002\u0002', + '\u0002"\u013c\u0003\u0002\u0002\u0002$\u013e\u0003\u0002\u0002\u0002', + '&\u0146\u0003\u0002\u0002\u0002(\u0150\u0003\u0002\u0002\u0002*\u0152', + '\u0003\u0002\u0002\u0002,\u015c\u0003\u0002\u0002\u0002.\u0162\u0003', + '\u0002\u0002\u00020\u0173\u0003\u0002\u0002\u00022\u017d\u0003\u0002', + '\u0002\u00024\u017f\u0003\u0002\u0002\u00026\u0181\u0003\u0002\u0002', + '\u00028\u019a\u0003\u0002\u0002\u0002:\u01a5\u0003\u0002\u0002\u0002', + '<\u01c5\u0003\u0002\u0002\u0002>\u01ff\u0003\u0002\u0002\u0002@\u020e', + '\u0003\u0002\u0002\u0002B\u021a\u0003\u0002\u0002\u0002D\u021d\u0003', + '\u0002\u0002\u0002F\u0220\u0003\u0002\u0002\u0002H\u0223\u0003\u0002', + '\u0002\u0002J\u0226\u0003\u0002\u0002\u0002L\u0229\u0003\u0002\u0002', + '\u0002N\u022c\u0003\u0002\u0002\u0002P\u022e\u0003\u0002\u0002\u0002', + 'R\u0230\u0003\u0002\u0002\u0002T\u0232\u0003\u0002\u0002\u0002V\u0234', + '\u0003\u0002\u0002\u0002X\u0236\u0003\u0002\u0002\u0002Z\u023f\u0003', + '\u0002\u0002\u0002\\\u025d\u0003\u0002\u0002\u0002^\u025f\u0003\u0002', + '\u0002\u0002`a\u0005\u0004\u0003\u0002ab\u0007\u0002\u0002\u0003b\u0003', + '\u0003\u0002\u0002\u0002ce\u0005\u0006\u0004\u0002dc\u0003\u0002\u0002', + '\u0002ef\u0003\u0002\u0002\u0002fd\u0003\u0002\u0002\u0002fg\u0003\u0002', + '\u0002\u0002g\u0005\u0003\u0002\u0002\u0002hi\b\u0004\u0001\u0002ik', + '\u0005\n\u0006\u0002jl\u0005\\/\u0002kj\u0003\u0002\u0002\u0002kl\u0003', + '\u0002\u0002\u0002l\u0091\u0003\u0002\u0002\u0002m\u0091\u0005\b\u0005', + '\u0002no\u0005\f\u0007\u0002op\u0005\\/\u0002p\u0091\u0003\u0002\u0002', + '\u0002qs\u0005\u0012\n\u0002rt\u0005\\/\u0002sr\u0003\u0002\u0002\u0002', + 'st\u0003\u0002\u0002\u0002t\u0091\u0003\u0002\u0002\u0002uw\u0005\u0018', + '\r\u0002vx\u0005\\/\u0002wv\u0003\u0002\u0002\u0002wx\u0003\u0002\u0002', + '\u0002x\u0091\u0003\u0002\u0002\u0002y\u0091\u0005\u001c\u000f\u0002', + 'z\u0091\u0005"\u0012\u0002{\u0091\u00050\u0019\u0002|~\u00074\u0002', + '\u0002}\u007f\u0005\\/\u0002~}\u0003\u0002\u0002\u0002~\u007f\u0003', + '\u0002\u0002\u0002\u007f\u0091\u0003\u0002\u0002\u0002\u0080\u0082\u0007', + '5\u0002\u0002\u0081\u0083\u0005\\/\u0002\u0082\u0081\u0003\u0002\u0002', + '\u0002\u0082\u0083\u0003\u0002\u0002\u0002\u0083\u0091\u0003\u0002\u0002', + '\u0002\u0084\u0091\u00058\u001d\u0002\u0085\u0087\u0005<\u001f\u0002', + '\u0086\u0088\u0005\\/\u0002\u0087\u0086\u0003\u0002\u0002\u0002\u0087', + '\u0088\u0003\u0002\u0002\u0002\u0088\u0091\u0003\u0002\u0002\u0002\u0089', + '\u0091\u00056\u001c\u0002\u008a\u0091\u0007\u0012\u0002\u0002\u008b', + '\u008d\u0005\\/\u0002\u008c\u008b\u0003\u0002\u0002\u0002\u008d\u008e', + '\u0003\u0002\u0002\u0002\u008e\u008c\u0003\u0002\u0002\u0002\u008e\u008f', + '\u0003\u0002\u0002\u0002\u008f\u0091\u0003\u0002\u0002\u0002\u0090h', + '\u0003\u0002\u0002\u0002\u0090m\u0003\u0002\u0002\u0002\u0090n\u0003', + '\u0002\u0002\u0002\u0090q\u0003\u0002\u0002\u0002\u0090u\u0003\u0002', + '\u0002\u0002\u0090y\u0003\u0002\u0002\u0002\u0090z\u0003\u0002\u0002', + '\u0002\u0090{\u0003\u0002\u0002\u0002\u0090|\u0003\u0002\u0002\u0002', + '\u0090\u0080\u0003\u0002\u0002\u0002\u0090\u0084\u0003\u0002\u0002\u0002', + '\u0090\u0085\u0003\u0002\u0002\u0002\u0090\u0089\u0003\u0002\u0002\u0002', + '\u0090\u008a\u0003\u0002\u0002\u0002\u0090\u008c\u0003\u0002\u0002\u0002', + '\u0091\u0096\u0003\u0002\u0002\u0002\u0092\u0093\f\u0005\u0002\u0002', + '\u0093\u0095\u0007\u0012\u0002\u0002\u0094\u0092\u0003\u0002\u0002\u0002', + '\u0095\u0098\u0003\u0002\u0002\u0002\u0096\u0094\u0003\u0002\u0002\u0002', + '\u0096\u0097\u0003\u0002\u0002\u0002\u0097\u0007\u0003\u0002\u0002\u0002', + '\u0098\u0096\u0003\u0002\u0002\u0002\u0099\u009a\u0007\u0003\u0002\u0002', + '\u009a\u00a6\u0005@!\u0002\u009b\u009c\u0007B\u0002\u0002\u009c\u009d', + '\u0007=\u0002\u0002\u009d\u00a2\u0007G\u0002\u0002\u009e\u009f\u0007', + '\u0004\u0002\u0002\u009f\u00a1\u0007G\u0002\u0002\u00a0\u009e\u0003', + '\u0002\u0002\u0002\u00a1\u00a4\u0003\u0002\u0002\u0002\u00a2\u00a0\u0003', + '\u0002\u0002\u0002\u00a2\u00a3\u0003\u0002\u0002\u0002\u00a3\u00a5\u0003', + '\u0002\u0002\u0002\u00a4\u00a2\u0003\u0002\u0002\u0002\u00a5\u00a7\u0007', + '>\u0002\u0002\u00a6\u009b\u0003\u0002\u0002\u0002\u00a6\u00a7\u0003', + '\u0002\u0002\u0002\u00a7\u00aa\u0003\u0002\u0002\u0002\u00a8\u00a9\u0007', + 'B\u0002\u0002\u00a9\u00ab\u0007\u0014\u0002\u0002\u00aa\u00a8\u0003', + '\u0002\u0002\u0002\u00aa\u00ab\u0003\u0002\u0002\u0002\u00ab\u00ac\u0003', + '\u0002\u0002\u0002\u00ac\u00ad\u0007?\u0002\u0002\u00ad\t\u0003\u0002', + '\u0002\u0002\u00ae\u00b0\u0007=\u0002\u0002\u00af\u00b1\u0005\\/\u0002', + '\u00b0\u00af\u0003\u0002\u0002\u0002\u00b0\u00b1\u0003\u0002\u0002\u0002', + '\u00b1\u00b3\u0003\u0002\u0002\u0002\u00b2\u00b4\u0005\u0006\u0004\u0002', + '\u00b3\u00b2\u0003\u0002\u0002\u0002\u00b4\u00b5\u0003\u0002\u0002\u0002', + '\u00b5\u00b3\u0003\u0002\u0002\u0002\u00b5\u00b6\u0003\u0002\u0002\u0002', + '\u00b6\u00ba\u0003\u0002\u0002\u0002\u00b7\u00b9\u0005\\/\u0002\u00b8', + '\u00b7\u0003\u0002\u0002\u0002\u00b9\u00bc\u0003\u0002\u0002\u0002\u00ba', + '\u00b8\u0003\u0002\u0002\u0002\u00ba\u00bb\u0003\u0002\u0002\u0002\u00bb', + '\u00bd\u0003\u0002\u0002\u0002\u00bc\u00ba\u0003\u0002\u0002\u0002\u00bd', + '\u00be\u0007>\u0002\u0002\u00be\u000b\u0003\u0002\u0002\u0002\u00bf', + '\u00c1\u0007/\u0002\u0002\u00c0\u00c2\u0007G\u0002\u0002\u00c1\u00c0', + '\u0003\u0002\u0002\u0002\u00c1\u00c2\u0003\u0002\u0002\u0002\u00c2\u00c3', + '\u0003\u0002\u0002\u0002\u00c3\u00c4\u0007;\u0002\u0002\u00c4\u00c5', + '\u0005\u000e\b\u0002\u00c5\u00c6\u0007<\u0002\u0002\u00c6\u00c7\u0007', + '=\u0002\u0002\u00c7\u00c8\u0005\u0010\t\u0002\u00c8\u00c9\u0007>\u0002', + '\u0002\u00c9\r\u0003\u0002\u0002\u0002\u00ca\u00cc\u0007!\u0002\u0002', + '\u00cb\u00ca\u0003\u0002\u0002\u0002\u00cb\u00cc\u0003\u0002\u0002\u0002', + '\u00cc\u00cd\u0003\u0002\u0002\u0002\u00cd\u00d5\u0007G\u0002\u0002', + '\u00ce\u00d0\u0007\u0004\u0002\u0002\u00cf\u00d1\u0007!\u0002\u0002', + '\u00d0\u00cf\u0003\u0002\u0002\u0002\u00d0\u00d1\u0003\u0002\u0002\u0002', + '\u00d1\u00d2\u0003\u0002\u0002\u0002\u00d2\u00d4\u0007G\u0002\u0002', + '\u00d3\u00ce\u0003\u0002\u0002\u0002\u00d4\u00d7\u0003\u0002\u0002\u0002', + '\u00d5\u00d3\u0003\u0002\u0002\u0002\u00d5\u00d6\u0003\u0002\u0002\u0002', + '\u00d6\u00d9\u0003\u0002\u0002\u0002\u00d7\u00d5\u0003\u0002\u0002\u0002', + '\u00d8\u00cb\u0003\u0002\u0002\u0002\u00d8\u00d9\u0003\u0002\u0002\u0002', + '\u00d9\u000f\u0003\u0002\u0002\u0002\u00da\u00dc\u0005\\/\u0002\u00db', + '\u00da\u0003\u0002\u0002\u0002\u00db\u00dc\u0003\u0002\u0002\u0002\u00dc', + '\u00e0\u0003\u0002\u0002\u0002\u00dd\u00df\u0005\u0006\u0004\u0002\u00de', + '\u00dd\u0003\u0002\u0002\u0002\u00df\u00e2\u0003\u0002\u0002\u0002\u00e0', + '\u00de\u0003\u0002\u0002\u0002\u00e0\u00e1\u0003\u0002\u0002\u0002\u00e1', + '\u00e4\u0003\u0002\u0002\u0002\u00e2\u00e0\u0003\u0002\u0002\u0002\u00e3', + '\u00e5\u00058\u001d\u0002\u00e4\u00e3\u0003\u0002\u0002\u0002\u00e4', + '\u00e5\u0003\u0002\u0002\u0002\u00e5\u0011\u0003\u0002\u0002\u0002\u00e6', + '\u00e7\u0007.\u0002\u0002\u00e7\u00e8\u0005\u0014\u000b\u0002\u00e8', + '\u0013\u0003\u0002\u0002\u0002\u00e9\u00ee\u0005\u0016\f\u0002\u00ea', + '\u00eb\u0007\u0004\u0002\u0002\u00eb\u00ed\u0005\u0016\f\u0002\u00ec', + '\u00ea\u0003\u0002\u0002\u0002\u00ed\u00f0\u0003\u0002\u0002\u0002\u00ee', + '\u00ec\u0003\u0002\u0002\u0002\u00ee\u00ef\u0003\u0002\u0002\u0002\u00ef', + '\u0015\u0003\u0002\u0002\u0002\u00f0\u00ee\u0003\u0002\u0002\u0002\u00f1', + '\u00f2\u0005@!\u0002\u00f2\u00f3\u0007\f\u0002\u0002\u00f3\u00fe\u0003', + '\u0002\u0002\u0002\u00f4\u00f7\u0005@!\u0002\u00f5\u00f6\u0007-\u0002', + '\u0002\u00f6\u00f8\u0005<\u001f\u0002\u00f7\u00f5\u0003\u0002\u0002', + '\u0002\u00f7\u00f8\u0003\u0002\u0002\u0002\u00f8\u00fe\u0003\u0002\u0002', + '\u0002\u00f9\u00fa\u0005@!\u0002\u00fa\u00fb\u0007-\u0002\u0002\u00fb', + '\u00fc\u0005\u0006\u0004\u0002\u00fc\u00fe\u0003\u0002\u0002\u0002\u00fd', + '\u00f1\u0003\u0002\u0002\u0002\u00fd\u00f4\u0003\u0002\u0002\u0002\u00fd', + '\u00f9\u0003\u0002\u0002\u0002\u00fe\u0017\u0003\u0002\u0002\u0002\u00ff', + '\u0104\u0005\u001a\u000e\u0002\u0100\u0101\u0007\u0004\u0002\u0002\u0101', + '\u0103\u0005\u001a\u000e\u0002\u0102\u0100\u0003\u0002\u0002\u0002\u0103', + '\u0106\u0003\u0002\u0002\u0002\u0104\u0102\u0003\u0002\u0002\u0002\u0104', + '\u0105\u0003\u0002\u0002\u0002\u0105\u0019\u0003\u0002\u0002\u0002\u0106', + '\u0104\u0003\u0002\u0002\u0002\u0107\u0108\u0005@!\u0002\u0108\u0109', + '\u0007\f\u0002\u0002\u0109\u0115\u0003\u0002\u0002\u0002\u010a\u010b', + '\u0005@!\u0002\u010b\u010e\u0007-\u0002\u0002\u010c\u010f\u0005<\u001f', + '\u0002\u010d\u010f\u0005\f\u0007\u0002\u010e\u010c\u0003\u0002\u0002', + '\u0002\u010e\u010d\u0003\u0002\u0002\u0002\u010f\u0115\u0003\u0002\u0002', + '\u0002\u0110\u0115\u0005F$\u0002\u0111\u0115\u0005H%\u0002\u0112\u0115', + "\u0005J&\u0002\u0113\u0115\u0005L'\u0002\u0114\u0107\u0003\u0002\u0002", + '\u0002\u0114\u010a\u0003\u0002\u0002\u0002\u0114\u0110\u0003\u0002\u0002', + '\u0002\u0114\u0111\u0003\u0002\u0002\u0002\u0114\u0112\u0003\u0002\u0002', + '\u0002\u0114\u0113\u0003\u0002\u0002\u0002\u0115\u001b\u0003\u0002\u0002', + '\u0002\u0116\u0118\u00071\u0002\u0002\u0117\u0119\u0007;\u0002\u0002', + '\u0118\u0117\u0003\u0002\u0002\u0002\u0118\u0119\u0003\u0002\u0002\u0002', + '\u0119\u011a\u0003\u0002\u0002\u0002\u011a\u011c\u0005<\u001f\u0002', + '\u011b\u011d\u0007<\u0002\u0002\u011c\u011b\u0003\u0002\u0002\u0002', + '\u011c\u011d\u0003\u0002\u0002\u0002\u011d\u011e\u0003\u0002\u0002\u0002', + '\u011e\u0122\u0005\u0006\u0004\u0002\u011f\u0121\u0005\u001e\u0010\u0002', + '\u0120\u011f\u0003\u0002\u0002\u0002\u0121\u0124\u0003\u0002\u0002\u0002', + '\u0122\u0120\u0003\u0002\u0002\u0002\u0122\u0123\u0003\u0002\u0002\u0002', + '\u0123\u0126\u0003\u0002\u0002\u0002\u0124\u0122\u0003\u0002\u0002\u0002', + '\u0125\u0127\u0005 \u0011\u0002\u0126\u0125\u0003\u0002\u0002\u0002', + '\u0126\u0127\u0003\u0002\u0002\u0002\u0127\u001d\u0003\u0002\u0002\u0002', + '\u0128\u012c\u00073\u0002\u0002\u0129\u012a\u00072\u0002\u0002\u012a', + '\u012c\u00071\u0002\u0002\u012b\u0128\u0003\u0002\u0002\u0002\u012b', + '\u0129\u0003\u0002\u0002\u0002\u012c\u012e\u0003\u0002\u0002\u0002\u012d', + '\u012f\u0007;\u0002\u0002\u012e\u012d\u0003\u0002\u0002\u0002\u012e', + '\u012f\u0003\u0002\u0002\u0002\u012f\u0130\u0003\u0002\u0002\u0002\u0130', + '\u0132\u0005<\u001f\u0002\u0131\u0133\u0007<\u0002\u0002\u0132\u0131', + '\u0003\u0002\u0002\u0002\u0132\u0133\u0003\u0002\u0002\u0002\u0133\u0134', + '\u0003\u0002\u0002\u0002\u0134\u0135\u0005\u0006\u0004\u0002\u0135\u001f', + '\u0003\u0002\u0002\u0002\u0136\u0137\u00072\u0002\u0002\u0137\u0138', + '\u0005\u0006\u0004\u0002\u0138!\u0003\u0002\u0002\u0002\u0139\u013d', + '\u0005$\u0013\u0002\u013a\u013d\u0005*\u0016\u0002\u013b\u013d\u0005', + ',\u0017\u0002\u013c\u0139\u0003\u0002\u0002\u0002\u013c\u013a\u0003', + '\u0002\u0002\u0002\u013c\u013b\u0003\u0002\u0002\u0002\u013d#\u0003', + '\u0002\u0002\u0002\u013e\u013f\u00076\u0002\u0002\u013f\u0140\u0007', + ';\u0002\u0002\u0140\u0141\u0005&\u0014\u0002\u0141\u0142\u0007<\u0002', + '\u0002\u0142\u0143\u0005(\u0015\u0002\u0143%\u0003\u0002\u0002\u0002', + '\u0144\u0147\u0005\u0012\n\u0002\u0145\u0147\u0005\u0018\r\u0002\u0146', + '\u0144\u0003\u0002\u0002\u0002\u0146\u0145\u0003\u0002\u0002\u0002\u0146', + '\u0147\u0003\u0002\u0002\u0002\u0147\u0148\u0003\u0002\u0002\u0002\u0148', + '\u014a\u0007?\u0002\u0002\u0149\u014b\u0005<\u001f\u0002\u014a\u0149', + '\u0003\u0002\u0002\u0002\u014a\u014b\u0003\u0002\u0002\u0002\u014b\u014c', + '\u0003\u0002\u0002\u0002\u014c\u014e\u0007?\u0002\u0002\u014d\u014f', + '\u0005\u0018\r\u0002\u014e\u014d\u0003\u0002\u0002\u0002\u014e\u014f', + "\u0003\u0002\u0002\u0002\u014f'\u0003\u0002\u0002\u0002\u0150\u0151", + '\u0005\u0006\u0004\u0002\u0151)\u0003\u0002\u0002\u0002\u0152\u0153', + '\u00076\u0002\u0002\u0153\u0156\u0007G\u0002\u0002\u0154\u0155\u0007', + '\u0004\u0002\u0002\u0155\u0157\u0007G\u0002\u0002\u0156\u0154\u0003', + '\u0002\u0002\u0002\u0156\u0157\u0003\u0002\u0002\u0002\u0157\u0158\u0003', + '\u0002\u0002\u0002\u0158\u0159\u0007\u0005\u0002\u0002\u0159\u015a\u0005', + '@!\u0002\u015a\u015b\u0005(\u0015\u0002\u015b+\u0003\u0002\u0002\u0002', + '\u015c\u015d\u00076\u0002\u0002\u015d\u015e\u0007G\u0002\u0002\u015e', + '\u015f\u0007\u0005\u0002\u0002\u015f\u0160\u0005.\u0018\u0002\u0160', + '\u0161\u0005(\u0015\u0002\u0161-\u0003\u0002\u0002\u0002\u0162\u0163', + '\u0007\u0006\u0002\u0002\u0163\u0165\u0007;\u0002\u0002\u0164\u0166', + '\u0007D\u0002\u0002\u0165\u0164\u0003\u0002\u0002\u0002\u0165\u0166', + '\u0003\u0002\u0002\u0002\u0166\u0167\u0003\u0002\u0002\u0002\u0167\u0168', + '\u0007(\u0002\u0002\u0168\u016b\u0007\u0004\u0002\u0002\u0169\u016c', + '\u0007(\u0002\u0002\u016a\u016c\u0005@!\u0002\u016b\u0169\u0003\u0002', + '\u0002\u0002\u016b\u016a\u0003\u0002\u0002\u0002\u016c\u016f\u0003\u0002', + '\u0002\u0002\u016d\u016e\u0007\u0004\u0002\u0002\u016e\u0170\u0007(', + '\u0002\u0002\u016f\u016d\u0003\u0002\u0002\u0002\u016f\u0170\u0003\u0002', + '\u0002\u0002\u0170\u0171\u0003\u0002\u0002\u0002\u0171\u0172\u0007<', + '\u0002\u0002\u0172/\u0003\u0002\u0002\u0002\u0173\u0175\u00078\u0002', + '\u0002\u0174\u0176\u0007;\u0002\u0002\u0175\u0174\u0003\u0002\u0002', + '\u0002\u0175\u0176\u0003\u0002\u0002\u0002\u0176\u0177\u0003\u0002\u0002', + '\u0002\u0177\u0179\u00052\u001a\u0002\u0178\u017a\u0007<\u0002\u0002', + '\u0179\u0178\u0003\u0002\u0002\u0002\u0179\u017a\u0003\u0002\u0002\u0002', + '\u017a\u017b\u0003\u0002\u0002\u0002\u017b\u017c\u00054\u001b\u0002', + '\u017c1\u0003\u0002\u0002\u0002\u017d\u017e\u0005<\u001f\u0002\u017e', + '3\u0003\u0002\u0002\u0002\u017f\u0180\u0005\u0006\u0004\u0002\u0180', + '5\u0003\u0002\u0002\u0002\u0181\u0182\u0007\u0007\u0002\u0002\u0182', + '\u0197\u0005\u0006\u0004\u0002\u0183\u0184\u0007\b\u0002\u0002\u0184', + '\u0185\u0007;\u0002\u0002\u0185\u0187\u0007G\u0002\u0002\u0186\u0188', + '\u0007G\u0002\u0002\u0187\u0186\u0003\u0002\u0002\u0002\u0187\u0188', + '\u0003\u0002\u0002\u0002\u0188\u0190\u0003\u0002\u0002\u0002\u0189\u018a', + '\u0007"\u0002\u0002\u018a\u018c\u0007G\u0002\u0002\u018b\u018d\u0007', + 'G\u0002\u0002\u018c\u018b\u0003\u0002\u0002\u0002\u018c\u018d\u0003', + '\u0002\u0002\u0002\u018d\u018f\u0003\u0002\u0002\u0002\u018e\u0189\u0003', + '\u0002\u0002\u0002\u018f\u0192\u0003\u0002\u0002\u0002\u0190\u018e\u0003', + '\u0002\u0002\u0002\u0190\u0191\u0003\u0002\u0002\u0002\u0191\u0193\u0003', + '\u0002\u0002\u0002\u0192\u0190\u0003\u0002\u0002\u0002\u0193\u0194\u0007', + '<\u0002\u0002\u0194\u0196\u0005\u0006\u0004\u0002\u0195\u0183\u0003', + '\u0002\u0002\u0002\u0196\u0199\u0003\u0002\u0002\u0002\u0197\u0195\u0003', + '\u0002\u0002\u0002\u0197\u0198\u0003\u0002\u0002\u0002\u01987\u0003', + '\u0002\u0002\u0002\u0199\u0197\u0003\u0002\u0002\u0002\u019a\u019d\u0007', + '0\u0002\u0002\u019b\u019e\u0005<\u001f\u0002\u019c\u019e\u0005\f\u0007', + '\u0002\u019d\u019b\u0003\u0002\u0002\u0002\u019d\u019c\u0003\u0002\u0002', + '\u0002\u019d\u019e\u0003\u0002\u0002\u0002\u019e\u01a2\u0003\u0002\u0002', + '\u0002\u019f\u01a1\u0005\\/\u0002\u01a0\u019f\u0003\u0002\u0002\u0002', + '\u01a1\u01a4\u0003\u0002\u0002\u0002\u01a2\u01a0\u0003\u0002\u0002\u0002', + '\u01a2\u01a3\u0003\u0002\u0002\u0002\u01a39\u0003\u0002\u0002\u0002', + '\u01a4\u01a2\u0003\u0002\u0002\u0002\u01a5\u01a6\u00079\u0002\u0002', + '\u01a6\u01ab\u0005<\u001f\u0002\u01a7\u01a8\u0007\u0004\u0002\u0002', + '\u01a8\u01aa\u0005<\u001f\u0002\u01a9\u01a7\u0003\u0002\u0002\u0002', + '\u01aa\u01ad\u0003\u0002\u0002\u0002\u01ab\u01a9\u0003\u0002\u0002\u0002', + '\u01ab\u01ac\u0003\u0002\u0002\u0002\u01ac\u01ae\u0003\u0002\u0002\u0002', + '\u01ad\u01ab\u0003\u0002\u0002\u0002\u01ae\u01af\u0007:\u0002\u0002', + '\u01af;\u0003\u0002\u0002\u0002\u01b0\u01b1\b\u001f\u0001\u0002\u01b1', + '\u01c6\u0005^0\u0002\u01b2\u01c6\u0005> \u0002\u01b3\u01c6\u0005Z.\u0002', + '\u01b4\u01c6\u0005B"\u0002\u01b5\u01c6\u0005D#\u0002\u01b6\u01c6\u0005', + 'F$\u0002\u01b7\u01c6\u0005H%\u0002\u01b8\u01c6\u0005J&\u0002\u01b9\u01c6', + "\u0005L'\u0002\u01ba\u01bb\u0007\u0017\u0002\u0002\u01bb\u01c6\u0005", + '<\u001f\u0018\u01bc\u01bd\u0007$\u0002\u0002\u01bd\u01c6\u0005<\u001f', + '\u0017\u01be\u01c6\u0005X-\u0002\u01bf\u01c6\u0005@!\u0002\u01c0\u01c6', + '\u0005:\u001e\u0002\u01c1\u01c6\u0005.\u0018\u0002\u01c2\u01c6\u0007', + '\u000e\u0002\u0002\u01c3\u01c6\u0007\u000f\u0002\u0002\u01c4\u01c6\u0005', + '\u001a\u000e\u0002\u01c5\u01b0\u0003\u0002\u0002\u0002\u01c5\u01b2\u0003', + '\u0002\u0002\u0002\u01c5\u01b3\u0003\u0002\u0002\u0002\u01c5\u01b4\u0003', + '\u0002\u0002\u0002\u01c5\u01b5\u0003\u0002\u0002\u0002\u01c5\u01b6\u0003', + '\u0002\u0002\u0002\u01c5\u01b7\u0003\u0002\u0002\u0002\u01c5\u01b8\u0003', + '\u0002\u0002\u0002\u01c5\u01b9\u0003\u0002\u0002\u0002\u01c5\u01ba\u0003', + '\u0002\u0002\u0002\u01c5\u01bc\u0003\u0002\u0002\u0002\u01c5\u01be\u0003', + '\u0002\u0002\u0002\u01c5\u01bf\u0003\u0002\u0002\u0002\u01c5\u01c0\u0003', + '\u0002\u0002\u0002\u01c5\u01c1\u0003\u0002\u0002\u0002\u01c5\u01c2\u0003', + '\u0002\u0002\u0002\u01c5\u01c3\u0003\u0002\u0002\u0002\u01c5\u01c4\u0003', + '\u0002\u0002\u0002\u01c6\u01fc\u0003\u0002\u0002\u0002\u01c7\u01c8\f', + '\u0016\u0002\u0002\u01c8\u01c9\u0007\u0013\u0002\u0002\u01c9\u01fb\u0005', + '<\u001f\u0017\u01ca\u01cb\f\u0015\u0002\u0002\u01cb\u01cc\u0005P)\u0002', + '\u01cc\u01cd\u0005<\u001f\u0016\u01cd\u01fb\u0003\u0002\u0002\u0002', + '\u01ce\u01d0\f\u0014\u0002\u0002\u01cf\u01d1\u0007\u0011\u0002\u0002', + '\u01d0\u01cf\u0003\u0002\u0002\u0002\u01d0\u01d1\u0003\u0002\u0002\u0002', + '\u01d1\u01d2\u0003\u0002\u0002\u0002\u01d2\u01d4\u0005R*\u0002\u01d3', + '\u01d5\u0007\u0011\u0002\u0002\u01d4\u01d3\u0003\u0002\u0002\u0002\u01d4', + '\u01d5\u0003\u0002\u0002\u0002\u01d5\u01d6\u0003\u0002\u0002\u0002\u01d6', + '\u01d7\u0005<\u001f\u0015\u01d7\u01fb\u0003\u0002\u0002\u0002\u01d8', + '\u01d9\f\u0013\u0002\u0002\u01d9\u01da\t\u0002\u0002\u0002\u01da\u01fb', + '\u0005<\u001f\u0014\u01db\u01dc\f\u0012\u0002\u0002\u01dc\u01dd\u0005', + 'N(\u0002\u01dd\u01de\u0005<\u001f\u0013\u01de\u01fb\u0003\u0002\u0002', + '\u0002\u01df\u01e0\f\u0011\u0002\u0002\u01e0\u01e1\u0007!\u0002\u0002', + '\u01e1\u01fb\u0005<\u001f\u0012\u01e2\u01e3\f\u0010\u0002\u0002\u01e3', + '\u01e4\u0007"\u0002\u0002\u01e4\u01fb\u0005<\u001f\u0011\u01e5\u01e6', + '\f\u000f\u0002\u0002\u01e6\u01e7\u0005N(\u0002\u01e7\u01e8\u0005<\u001f', + '\u0010\u01e8\u01fb\u0003\u0002\u0002\u0002\u01e9\u01ea\f\u000e\u0002', + '\u0002\u01ea\u01eb\u0007\u0018\u0002\u0002\u01eb\u01fb\u0005<\u001f', + '\u000f\u01ec\u01ed\f\r\u0002\u0002\u01ed\u01ee\u0007\u0019\u0002\u0002', + '\u01ee\u01fb\u0005<\u001f\u000e\u01ef\u01f0\f\f\u0002\u0002\u01f0\u01f1', + '\u0007 \u0002\u0002\u01f1\u01fb\u0005<\u001f\r\u01f2\u01f3\f\n\u0002', + '\u0002\u01f3\u01f4\u0007@\u0002\u0002\u01f4\u01f5\u0005<\u001f\u0002', + '\u01f5\u01f6\u0007A\u0002\u0002\u01f6\u01f7\u0005<\u001f\u000b\u01f7', + '\u01fb\u0003\u0002\u0002\u0002\u01f8\u01f9\f\u000b\u0002\u0002\u01f9', + '\u01fb\u0007\r\u0002\u0002\u01fa\u01c7\u0003\u0002\u0002\u0002\u01fa', + '\u01ca\u0003\u0002\u0002\u0002\u01fa\u01ce\u0003\u0002\u0002\u0002\u01fa', + '\u01d8\u0003\u0002\u0002\u0002\u01fa\u01db\u0003\u0002\u0002\u0002\u01fa', + '\u01df\u0003\u0002\u0002\u0002\u01fa\u01e2\u0003\u0002\u0002\u0002\u01fa', + '\u01e5\u0003\u0002\u0002\u0002\u01fa\u01e9\u0003\u0002\u0002\u0002\u01fa', + '\u01ec\u0003\u0002\u0002\u0002\u01fa\u01ef\u0003\u0002\u0002\u0002\u01fa', + '\u01f2\u0003\u0002\u0002\u0002\u01fa\u01f8\u0003\u0002\u0002\u0002\u01fb', + '\u01fe\u0003\u0002\u0002\u0002\u01fc\u01fa\u0003\u0002\u0002\u0002\u01fc', + '\u01fd\u0003\u0002\u0002\u0002\u01fd=\u0003\u0002\u0002\u0002\u01fe', + '\u01fc\u0003\u0002\u0002\u0002\u01ff\u0200\u0007\t\u0002\u0002\u0200', + '\u0201\u0007;\u0002\u0002\u0201\u0202\u0005\u000e\b\u0002\u0202\u0203', + '\u0007<\u0002\u0002\u0203\u0207\u0007\n\u0002\u0002\u0204\u0206\u0005', + '\u0006\u0004\u0002\u0205\u0204\u0003\u0002\u0002\u0002\u0206\u0209\u0003', + '\u0002\u0002\u0002\u0207\u0205\u0003\u0002\u0002\u0002\u0207\u0208\u0003', + '\u0002\u0002\u0002\u0208\u020a\u0003\u0002\u0002\u0002\u0209\u0207\u0003', + '\u0002\u0002\u0002\u020a\u020c\u0007\u000b\u0002\u0002\u020b\u020d\u0007', + '?\u0002\u0002\u020c\u020b\u0003\u0002\u0002\u0002\u020c\u020d\u0003', + '\u0002\u0002\u0002\u020d?\u0003\u0002\u0002\u0002\u020e\u0217\u0007', + 'G\u0002\u0002\u020f\u0210\u0007B\u0002\u0002\u0210\u0216\u0007G\u0002', + '\u0002\u0211\u0212\u00079\u0002\u0002\u0212\u0213\u0005<\u001f\u0002', + '\u0213\u0214\u0007:\u0002\u0002\u0214\u0216\u0003\u0002\u0002\u0002', + '\u0215\u020f\u0003\u0002\u0002\u0002\u0215\u0211\u0003\u0002\u0002\u0002', + '\u0216\u0219\u0003\u0002\u0002\u0002\u0217\u0215\u0003\u0002\u0002\u0002', + '\u0217\u0218\u0003\u0002\u0002\u0002\u0218A\u0003\u0002\u0002\u0002', + '\u0219\u0217\u0003\u0002\u0002\u0002\u021a\u021b\u0007C\u0002\u0002', + '\u021b\u021c\u0005<\u001f\u0002\u021cC\u0003\u0002\u0002\u0002\u021d', + '\u021e\u0007D\u0002\u0002\u021e\u021f\u0005<\u001f\u0002\u021fE\u0003', + '\u0002\u0002\u0002\u0220\u0221\u0007G\u0002\u0002\u0221\u0222\u0007', + 'E\u0002\u0002\u0222G\u0003\u0002\u0002\u0002\u0223\u0224\u0007G\u0002', + '\u0002\u0224\u0225\u0007F\u0002\u0002\u0225I\u0003\u0002\u0002\u0002', + '\u0226\u0227\u0007E\u0002\u0002\u0227\u0228\u0007G\u0002\u0002\u0228', + 'K\u0003\u0002\u0002\u0002\u0229\u022a\u0007F\u0002\u0002\u022a\u022b', + '\u0007G\u0002\u0002\u022bM\u0003\u0002\u0002\u0002\u022c\u022d\t\u0003', + '\u0002\u0002\u022dO\u0003\u0002\u0002\u0002\u022e\u022f\t\u0004\u0002', + '\u0002\u022fQ\u0003\u0002\u0002\u0002\u0230\u0231\t\u0005\u0002\u0002', + '\u0231S\u0003\u0002\u0002\u0002\u0232\u0233\t\u0006\u0002\u0002\u0233', + 'U\u0003\u0002\u0002\u0002\u0234\u0235\t\u0004\u0002\u0002\u0235W\u0003', + '\u0002\u0002\u0002\u0236\u0237\u0007;\u0002\u0002\u0237\u0238\u0005', + '<\u001f\u0002\u0238\u0239\u0007<\u0002\u0002\u0239Y\u0003\u0002\u0002', + '\u0002\u023a\u023b\u0007;\u0002\u0002\u023b\u023c\u0005> \u0002\u023c', + '\u023d\u0007<\u0002\u0002\u023d\u0240\u0003\u0002\u0002\u0002\u023e', + '\u0240\u0005@!\u0002\u023f\u023a\u0003\u0002\u0002\u0002\u023f\u023e', + '\u0003\u0002\u0002\u0002\u0240\u0241\u0003\u0002\u0002\u0002\u0241\u0259', + '\u0007;\u0002\u0002\u0242\u0244\u0007\u0014\u0002\u0002\u0243\u0242', + '\u0003\u0002\u0002\u0002\u0243\u0244\u0003\u0002\u0002\u0002\u0244\u0245', + '\u0003\u0002\u0002\u0002\u0245\u0256\u0005<\u001f\u0002\u0246\u0248', + '\u0007\u0011\u0002\u0002\u0247\u0246\u0003\u0002\u0002\u0002\u0247\u0248', + '\u0003\u0002\u0002\u0002\u0248\u0249\u0003\u0002\u0002\u0002\u0249\u024b', + '\u0007\u0004\u0002\u0002\u024a\u024c\u0007\u0011\u0002\u0002\u024b\u024a', + '\u0003\u0002\u0002\u0002\u024b\u024c\u0003\u0002\u0002\u0002\u024c\u024e', + '\u0003\u0002\u0002\u0002\u024d\u024f\u0007\u0014\u0002\u0002\u024e\u024d', + '\u0003\u0002\u0002\u0002\u024e\u024f\u0003\u0002\u0002\u0002\u024f\u0252', + '\u0003\u0002\u0002\u0002\u0250\u0253\u0005<\u001f\u0002\u0251\u0253', + '\u0007C\u0002\u0002\u0252\u0250\u0003\u0002\u0002\u0002\u0252\u0251', + '\u0003\u0002\u0002\u0002\u0253\u0255\u0003\u0002\u0002\u0002\u0254\u0247', + '\u0003\u0002\u0002\u0002\u0255\u0258\u0003\u0002\u0002\u0002\u0256\u0254', + '\u0003\u0002\u0002\u0002\u0256\u0257\u0003\u0002\u0002\u0002\u0257\u025a', + '\u0003\u0002\u0002\u0002\u0258\u0256\u0003\u0002\u0002\u0002\u0259\u0243', + '\u0003\u0002\u0002\u0002\u0259\u025a\u0003\u0002\u0002\u0002\u025a\u025b', + '\u0003\u0002\u0002\u0002\u025b\u025c\u0007<\u0002\u0002\u025c[\u0003', + '\u0002\u0002\u0002\u025d\u025e\t\u0007\u0002\u0002\u025e]\u0003\u0002', + '\u0002\u0002\u025f\u0260\t\b\u0002\u0002\u0260_\u0003\u0002\u0002\u0002', + 'Ifksw~\u0082\u0087\u008e\u0090\u0096\u00a2\u00a6\u00aa\u00b0\u00b5\u00ba', + '\u00c1\u00cb\u00d0\u00d5\u00d8\u00db\u00e0\u00e4\u00ee\u00f7\u00fd\u0104', + '\u010e\u0114\u0118\u011c\u0122\u0126\u012b\u012e\u0132\u013c\u0146\u014a', + '\u014e\u0156\u0165\u016b\u016f\u0175\u0179\u0187\u018c\u0190\u0197\u019d', + '\u01a2\u01ab\u01c5\u01d0\u01d4\u01fa\u01fc\u0207\u020c\u0215\u0217\u023f', + '\u0243\u0247\u024b\u024e\u0252\u0256\u0259' +].join('') +const atn = new ATNDeserializer().deserialize(serializedATN as unknown as number[]) + +const decisionsToDFA = atn.decisionToState.map((ds, index) => new DFA(ds, index)) + +const sharedContextCache = new PredictionContextCache() + +class RootContext extends ParserRuleContext { + constructor(parser: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_root + } + ruleIndex: number + + program() { + return this.getTypedRuleContext(ProgramContext, 0) + } + + EOF() { + return this.getToken(DSLParser.EOF, 0) + } +} + +class ProgramContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_program + } + ruleIndex: number + + statement(i?: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(StatementContext) + } else { + return this.getTypedRuleContext(StatementContext, i) + } + } +} + +class StatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_statement + } + ruleIndex: number + + block() { + return this.getTypedRuleContext(BlockContext, 0) + } + + eos(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(EosContext) + } else { + return this.getTypedRuleContext(EosContext, i) + } + } + + useStatement() { + return this.getTypedRuleContext(UseStatementContext, 0) + } + + functionDeclaration() { + return this.getTypedRuleContext(FunctionDeclarationContext, 0) + } + + variableStatement() { + return this.getTypedRuleContext(VariableStatementContext, 0) + } + + assignListStatement() { + return this.getTypedRuleContext(AssignListStatementContext, 0) + } + + ifStatement() { + return this.getTypedRuleContext(IfStatementContext, 0) + } + + forStatements() { + return this.getTypedRuleContext(ForStatementsContext, 0) + } + + whileStatement() { + return this.getTypedRuleContext(WhileStatementContext, 0) + } + + Break() { + return this.getToken(DSLParser.Break, 0) + } + + Continue() { + return this.getToken(DSLParser.Continue, 0) + } + + returnStatement() { + return this.getTypedRuleContext(ReturnStatementContext, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + tryStatement() { + return this.getTypedRuleContext(TryStatementContext, 0) + } + + Comment() { + return this.getToken(DSLParser.Comment, 0) + } + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } +} + +class UseStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_useStatement + } + ruleIndex: number + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + SemiColon() { + return this.getToken(DSLParser.SemiColon, 0) + } + + Dot(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Dot) + } else { + return this.getToken(DSLParser.Dot, i) + } + } + + OpenBrace() { + return this.getToken(DSLParser.OpenBrace, 0) + } + + Identifier(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Identifier) + } else { + return this.getToken(DSLParser.Identifier, i) + } + } + + CloseBrace() { + return this.getToken(DSLParser.CloseBrace, 0) + } + + Multiply() { + return this.getToken(DSLParser.Multiply, 0) + } +} + +class BlockContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_block + } + ruleIndex: number + + OpenBrace() { + return this.getToken(DSLParser.OpenBrace, 0) + } + + CloseBrace() { + return this.getToken(DSLParser.CloseBrace, 0) + } + + eos(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(EosContext) + } else { + return this.getTypedRuleContext(EosContext, i) + } + } + + statement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(StatementContext) + } else { + return this.getTypedRuleContext(StatementContext, i) + } + } +} + +class FunctionDeclarationContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_functionDeclaration + } + ruleIndex: number + + FunctionKeyword() { + return this.getToken(DSLParser.FunctionKeyword, 0) + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + functionParameterList() { + return this.getTypedRuleContext(FunctionParameterListContext, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } + + OpenBrace() { + return this.getToken(DSLParser.OpenBrace, 0) + } + + functionBody() { + return this.getTypedRuleContext(FunctionBodyContext, 0) + } + + CloseBrace() { + return this.getToken(DSLParser.CloseBrace, 0) + } + + Identifier() { + return this.getToken(DSLParser.Identifier, 0) + } +} + +class FunctionParameterListContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_functionParameterList + } + ruleIndex: number + + Identifier(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Identifier) + } else { + return this.getToken(DSLParser.Identifier, i) + } + } + + BitAnd(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.BitAnd) + } else { + return this.getToken(DSLParser.BitAnd, i) + } + } +} + +class FunctionBodyContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_functionBody + } + + eos() { + return this.getTypedRuleContext(EosContext, 0) + } + + statement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(StatementContext) + } else { + return this.getTypedRuleContext(StatementContext, i) + } + } + + returnStatement() { + return this.getTypedRuleContext(ReturnStatementContext, 0) + } +} + +class VariableStatementContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_variableStatement + } + + VariablePrefix() { + return this.getToken(DSLParser.VariablePrefix, 0) + } + + variableDeclarationList() { + return this.getTypedRuleContext(VariableDeclarationListContext, 0) + } +} + +class VariableDeclarationListContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_variableDeclarationList + } + ruleIndex: number + + variableDeclaration(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(VariableDeclarationContext) + } else { + return this.getTypedRuleContext(VariableDeclarationContext, i) + } + } +} + +class VariableDeclarationContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_variableDeclaration + } + ruleIndex: number + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + RegularAssign() { + return this.getToken(DSLParser.RegularAssign, 0) + } + + Assignment() { + return this.getToken(DSLParser.Assignment, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } +} + +class AssignListStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_assignListStatement + } + ruleIndex: number + + assignStatement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(AssignStatementContext) + } else { + return this.getTypedRuleContext(AssignStatementContext, i) + } + } +} + +class AssignStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_assignStatement + } + ruleIndex: number + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + RegularAssign() { + return this.getToken(DSLParser.RegularAssign, 0) + } + + Assignment() { + return this.getToken(DSLParser.Assignment, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + functionDeclaration() { + return this.getTypedRuleContext(FunctionDeclarationContext, 0) + } + + rightPlusPlus() { + return this.getTypedRuleContext(RightPlusPlusContext, 0) + } + + rightMinusMinus() { + return this.getTypedRuleContext(RightMinusMinusContext, 0) + } + + leftPlusPlus() { + return this.getTypedRuleContext(LeftPlusPlusContext, 0) + } + + leftMinusMinus() { + return this.getTypedRuleContext(LeftMinusMinusContext, 0) + } +} + +class IfStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_ifStatement + } + ruleIndex: number + + IfKeyword() { + return this.getToken(DSLParser.IfKeyword, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } + + elseIfStatement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(ElseIfStatementContext) + } else { + return this.getTypedRuleContext(ElseIfStatementContext, i) + } + } + + elseStatement() { + return this.getTypedRuleContext(ElseStatementContext, 0) + } +} + +class ElseIfStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_elseIfStatement + } + ruleIndex: number + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } + + ElseIfKeyword() { + return this.getToken(DSLParser.ElseIfKeyword, 0) + } + + ElseKeyword() { + return this.getToken(DSLParser.ElseKeyword, 0) + } + + IfKeyword() { + return this.getToken(DSLParser.IfKeyword, 0) + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } +} + +class ElseStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_elseStatement + } + ruleIndex: number + + ElseKeyword() { + return this.getToken(DSLParser.ElseKeyword, 0) + } + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } +} + +class ForStatementsContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_forStatements + } + ruleIndex: number + + forStatement() { + return this.getTypedRuleContext(ForStatementContext, 0) + } + + forInStatement() { + return this.getTypedRuleContext(ForInStatementContext, 0) + } + + forInRangeStatement() { + return this.getTypedRuleContext(ForInRangeStatementContext, 0) + } +} + +class ForStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_forStatement + } + ruleIndex: number + + For() { + return this.getToken(DSLParser.For, 0) + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + forStatementParametar() { + return this.getTypedRuleContext(ForStatementParametarContext, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } + + forStatementBody() { + return this.getTypedRuleContext(ForStatementBodyContext, 0) + } +} + +class ForStatementParametarContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_forStatementParametar + } + ruleIndex: number + + SemiColon(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.SemiColon) + } else { + return this.getToken(DSLParser.SemiColon, i) + } + } + + variableStatement() { + return this.getTypedRuleContext(VariableStatementContext, 0) + } + + assignListStatement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(AssignListStatementContext) + } else { + return this.getTypedRuleContext(AssignListStatementContext, i) + } + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } +} + +class ForStatementBodyContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_forStatementBody + } + ruleIndex: number + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } +} + +class ForInStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_forInStatement + } + ruleIndex: number + + For() { + return this.getToken(DSLParser.For, 0) + } + + Identifier(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Identifier) + } else { + return this.getToken(DSLParser.Identifier, i) + } + } + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + forStatementBody() { + return this.getTypedRuleContext(ForStatementBodyContext, 0) + } +} + +class ForInRangeStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_forInRangeStatement + } + ruleIndex: number + + For() { + return this.getToken(DSLParser.For, 0) + } + + Identifier() { + return this.getToken(DSLParser.Identifier, 0) + } + + rangeFunction() { + return this.getTypedRuleContext(RangeFunctionContext, 0) + } + + forStatementBody() { + return this.getTypedRuleContext(ForStatementBodyContext, 0) + } +} + +class RangeFunctionContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_rangeFunction + } + ruleIndex: number + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + Number(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Number) + } else { + return this.getToken(DSLParser.Number, i) + } + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + Minus() { + return this.getToken(DSLParser.Minus, 0) + } +} + +class WhileStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_whileStatement + } + ruleIndex: number + + While() { + return this.getToken(DSLParser.While, 0) + } + + whileStatementParametar() { + return this.getTypedRuleContext(WhileStatementParametarContext, 0) + } + + whileStatementBody() { + return this.getTypedRuleContext(WhileStatementBodyContext, 0) + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } +} + +class WhileStatementParametarContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_whileStatementParametar + } + ruleIndex: number + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } +} + +class WhileStatementBodyContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_whileStatementBody + } + ruleIndex: number + + statement() { + return this.getTypedRuleContext(StatementContext, 0) + } +} + +class TryStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_tryStatement + } + ruleIndex: number + + statement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(StatementContext) + } else { + return this.getTypedRuleContext(StatementContext, i) + } + } + + OpenParen(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.OpenParen) + } else { + return this.getToken(DSLParser.OpenParen, i) + } + } + + Identifier(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Identifier) + } else { + return this.getToken(DSLParser.Identifier, i) + } + } + + CloseParen(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.CloseParen) + } else { + return this.getToken(DSLParser.CloseParen, i) + } + } + + BitOr(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.BitOr) + } else { + return this.getToken(DSLParser.BitOr, i) + } + } +} + +class ReturnStatementContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_returnStatement + } + ruleIndex: number + + ReturnKeyword() { + return this.getToken(DSLParser.ReturnKeyword, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + functionDeclaration() { + return this.getTypedRuleContext(FunctionDeclarationContext, 0) + } + + eos(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(EosContext) + } else { + return this.getTypedRuleContext(EosContext, i) + } + } +} + +class ArrayContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_array + } + ruleIndex: number + + OpenBracket() { + return this.getToken(DSLParser.OpenBracket, 0) + } + + expression(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext) + } else { + return this.getTypedRuleContext(ExpressionContext, i) + } + } + + CloseBracket() { + return this.getToken(DSLParser.CloseBracket, 0) + } +} + +class ExpressionContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_expression + } + ruleIndex: number + + literal() { + return this.getTypedRuleContext(LiteralContext, 0) + } + + lambdaExpression() { + return this.getTypedRuleContext(LambdaExpressionContext, 0) + } + + functionInvoikeExpression() { + return this.getTypedRuleContext(FunctionInvoikeExpressionContext, 0) + } + + plusExpression() { + return this.getTypedRuleContext(PlusExpressionContext, 0) + } + + minusExpression() { + return this.getTypedRuleContext(MinusExpressionContext, 0) + } + + rightPlusPlus() { + return this.getTypedRuleContext(RightPlusPlusContext, 0) + } + + rightMinusMinus() { + return this.getTypedRuleContext(RightMinusMinusContext, 0) + } + + leftPlusPlus() { + return this.getTypedRuleContext(LeftPlusPlusContext, 0) + } + + leftMinusMinus() { + return this.getTypedRuleContext(LeftMinusMinusContext, 0) + } + + Not() { + return this.getToken(DSLParser.Not, 0) + } + + expression(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext) + } else { + return this.getTypedRuleContext(ExpressionContext, i) + } + } + + BitNot() { + return this.getToken(DSLParser.BitNot, 0) + } + + wrapperExpression() { + return this.getTypedRuleContext(WrapperExpressionContext, 0) + } + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + array() { + return this.getTypedRuleContext(ArrayContext, 0) + } + + rangeFunction() { + return this.getTypedRuleContext(RangeFunctionContext, 0) + } + + RegularRelationLeftExpression() { + return this.getToken(DSLParser.RegularRelationLeftExpression, 0) + } + + RegularRelationRightExpression() { + return this.getToken(DSLParser.RegularRelationRightExpression, 0) + } + + assignStatement() { + return this.getTypedRuleContext(AssignStatementContext, 0) + } + + Power() { + return this.getToken(DSLParser.Power, 0) + } + + operator2() { + return this.getTypedRuleContext(Operator2Context, 0) + } + + operator1() { + return this.getTypedRuleContext(Operator1Context, 0) + } + + NewLine(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.NewLine) + } else { + return this.getToken(DSLParser.NewLine, i) + } + } + + BitRightShiftNoSign() { + return this.getToken(DSLParser.BitRightShiftNoSign, 0) + } + + BitLeftShift() { + return this.getToken(DSLParser.BitLeftShift, 0) + } + + BitRightShift() { + return this.getToken(DSLParser.BitRightShift, 0) + } + + relationOperator() { + return this.getTypedRuleContext(RelationOperatorContext, 0) + } + + BitAnd() { + return this.getToken(DSLParser.BitAnd, 0) + } + + BitOr() { + return this.getToken(DSLParser.BitOr, 0) + } + + And() { + return this.getToken(DSLParser.And, 0) + } + + Or() { + return this.getToken(DSLParser.Or, 0) + } + + RegulaLike() { + return this.getToken(DSLParser.RegulaLike, 0) + } + + QuestionMark() { + return this.getToken(DSLParser.QuestionMark, 0) + } + + Colon() { + return this.getToken(DSLParser.Colon, 0) + } + + RegularLikeRight() { + return this.getToken(DSLParser.RegularLikeRight, 0) + } +} + +class LambdaExpressionContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_lambdaExpression + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + functionParameterList() { + return this.getTypedRuleContext(FunctionParameterListContext, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } + + statement(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(StatementContext) + } else { + return this.getTypedRuleContext(StatementContext, i) + } + } + + SemiColon() { + return this.getToken(DSLParser.SemiColon, 0) + } +} + +class IdentifierExpressContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_identifierExpress + } + ruleIndex: number + + Identifier(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Identifier) + } else { + return this.getToken(DSLParser.Identifier, i) + } + } + + Dot(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Dot) + } else { + return this.getToken(DSLParser.Dot, i) + } + } + + OpenBracket(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.OpenBracket) + } else { + return this.getToken(DSLParser.OpenBracket, i) + } + } + + expression(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext) + } else { + return this.getTypedRuleContext(ExpressionContext, i) + } + } + + CloseBracket(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.CloseBracket) + } else { + return this.getToken(DSLParser.CloseBracket, i) + } + } +} + +class PlusExpressionContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_plusExpression + } + ruleIndex: number + + Plus() { + return this.getToken(DSLParser.Plus, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } +} + +class MinusExpressionContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_minusExpression + } + + Minus() { + return this.getToken(DSLParser.Minus, 0) + } + ruleIndex: number + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } +} + +class RightPlusPlusContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_rightPlusPlus + } + ruleIndex: number + + Identifier() { + return this.getToken(DSLParser.Identifier, 0) + } + + PlusPlus() { + return this.getToken(DSLParser.PlusPlus, 0) + } +} + +class RightMinusMinusContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_rightMinusMinus + } + + Identifier() { + return this.getToken(DSLParser.Identifier, 0) + } + ruleIndex: number + + MinusMinus() { + return this.getToken(DSLParser.MinusMinus, 0) + } +} + +class LeftPlusPlusContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_leftPlusPlus + } + + PlusPlus() { + return this.getToken(DSLParser.PlusPlus, 0) + } + ruleIndex: number + + Identifier() { + return this.getToken(DSLParser.Identifier, 0) + } +} + +class LeftMinusMinusContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_leftMinusMinus + } + + MinusMinus() { + return this.getToken(DSLParser.MinusMinus, 0) + } + ruleIndex: number + + Identifier() { + return this.getToken(DSLParser.Identifier, 0) + } +} + +class RelationOperatorContext extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_relationOperator + } + + GreatThan() { + return this.getToken(DSLParser.GreatThan, 0) + } + ruleIndex: number + + GreatThanOrEqual() { + return this.getToken(DSLParser.GreatThanOrEqual, 0) + } + + LessThan() { + return this.getToken(DSLParser.LessThan, 0) + } + + LessThanOrEqual() { + return this.getToken(DSLParser.LessThanOrEqual, 0) + } + + Equal() { + return this.getToken(DSLParser.Equal, 0) + } + + NotEqual() { + return this.getToken(DSLParser.NotEqual, 0) + } +} + +class Operator2Context extends ParserRuleContext { + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_operator2 + } + + Multiply() { + return this.getToken(DSLParser.Multiply, 0) + } + ruleIndex: number + + Divide() { + return this.getToken(DSLParser.Divide, 0) + } + + Mode() { + return this.getToken(DSLParser.Mode, 0) + } +} + +class Operator1Context extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_operator1 + } + + Plus() { + return this.getToken(DSLParser.Plus, 0) + } + + Minus() { + return this.getToken(DSLParser.Minus, 0) + } +} + +class BitOperatorContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_bitOperator + } + + BitAnd() { + return this.getToken(DSLParser.BitAnd, 0) + } + + BitOr() { + return this.getToken(DSLParser.BitOr, 0) + } +} + +class SingleBitOperatorContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_singleBitOperator + } + + Multiply() { + return this.getToken(DSLParser.Multiply, 0) + } + + Divide() { + return this.getToken(DSLParser.Divide, 0) + } + + Mode() { + return this.getToken(DSLParser.Mode, 0) + } +} + +class WrapperExpressionContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_wrapperExpression + } + + OpenParen() { + return this.getToken(DSLParser.OpenParen, 0) + } + + expression() { + return this.getTypedRuleContext(ExpressionContext, 0) + } + + CloseParen() { + return this.getToken(DSLParser.CloseParen, 0) + } +} + +class FunctionInvoikeExpressionContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_functionInvoikeExpression + } + + OpenParen(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.OpenParen) + } else { + return this.getToken(DSLParser.OpenParen, i) + } + } + + CloseParen(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.CloseParen) + } else { + return this.getToken(DSLParser.CloseParen, i) + } + } + + lambdaExpression() { + return this.getTypedRuleContext(LambdaExpressionContext, 0) + } + + identifierExpress() { + return this.getTypedRuleContext(IdentifierExpressContext, 0) + } + + expression(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTypedRuleContexts(ExpressionContext) + } else { + return this.getTypedRuleContext(ExpressionContext, i) + } + } + + Multiply(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Multiply) + } else { + return this.getToken(DSLParser.Multiply, i) + } + } + + Plus(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.Plus) + } else { + return this.getToken(DSLParser.Plus, i) + } + } + + NewLine(i: number | null) { + if (i === undefined) { + i = null + } + if (i === null) { + return this.getTokens(DSLParser.NewLine) + } else { + return this.getToken(DSLParser.NewLine, i) + } + } +} + +class EosContext extends ParserRuleContext { + ruleIndex: number + + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_eos + } + + SemiColon() { + return this.getToken(DSLParser.SemiColon, 0) + } + + NewLine() { + return this.getToken(DSLParser.NewLine, 0) + } +} + +class LiteralContext extends ParserRuleContext { + ruleIndex: number + constructor(parser?: Parser, parent?: ParserRuleContext, invokingState?: number) { + if (invokingState === undefined || invokingState === null) { + invokingState = -1 + } + super(parent, invokingState) + this.parser = parser + this.ruleIndex = DSLParser.RULE_literal + } + + Number() { + return this.getToken(DSLParser.Number, 0) + } + + NumberHex() { + return this.getToken(DSLParser.NumberHex, 0) + } + + BooleanTrue() { + return this.getToken(DSLParser.BooleanTrue, 0) + } + + BooleanFalse() { + return this.getToken(DSLParser.BooleanFalse, 0) + } + + String() { + return this.getToken(DSLParser.String, 0) + } +} + +export default class DSLParser extends Parser { + static grammarFileName = 'DSL.g4' + static literalNames = [ + null, + "'use'", + "','", + "'in'", + "'range'", + "'try'", + "'catch'", + "'lambda'", + "'->'", + "'end'", + null, + null, + null, + null, + null, + null, + null, + "'**'", + "'*'", + "'/'", + "'%'", + "'!'", + "'&&'", + "'||'", + "'!='", + "'>='", + "'>'", + "'<='", + "'<'", + "'=='", + "'=~'", + "'&'", + "'|'", + "'^'", + "'~'", + "'>>>'", + "'<<'", + "'>>'", + null, + null, + "'true'", + "'false'", + null, + "'='", + "'let'", + "'fn'", + "'return'", + "'if'", + "'else'", + "'elsif'", + "'break'", + "'continue'", + "'for'", + "'switch'", + "'while'", + "'['", + "']'", + "'('", + "')'", + "'{'", + "'}'", + "';'", + "'?'", + "':'", + "'.'", + "'+'", + "'-'", + "'++'", + "'--'" + ] + static symbolicNames = [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 'RegularAssign', + 'RegularLikeRight', + 'RegularRelationLeftExpression', + 'RegularRelationRightExpression', + 'Space', + 'NewLine', + 'Comment', + 'Power', + 'Multiply', + 'Divide', + 'Mode', + 'Not', + 'And', + 'Or', + 'NotEqual', + 'GreatThanOrEqual', + 'GreatThan', + 'LessThanOrEqual', + 'LessThan', + 'Equal', + 'RegulaLike', + 'BitAnd', + 'BitOr', + 'BitXor', + 'BitNot', + 'BitRightShiftNoSign', + 'BitLeftShift', + 'BitRightShift', + 'Number', + 'NumberHex', + 'BooleanTrue', + 'BooleanFalse', + 'String', + 'Assignment', + 'VariablePrefix', + 'FunctionKeyword', + 'ReturnKeyword', + 'IfKeyword', + 'ElseKeyword', + 'ElseIfKeyword', + 'Break', + 'Continue', + 'For', + 'Switch', + 'While', + 'OpenBracket', + 'CloseBracket', + 'OpenParen', + 'CloseParen', + 'OpenBrace', + 'CloseBrace', + 'SemiColon', + 'QuestionMark', + 'Colon', + 'Dot', + 'Plus', + 'Minus', + 'PlusPlus', + 'MinusMinus', + 'Identifier', + 'UnexpectedCharacter' + ] + static ruleNames = [ + 'root', + 'program', + 'statement', + 'useStatement', + 'block', + 'functionDeclaration', + 'functionParameterList', + 'functionBody', + 'variableStatement', + 'variableDeclarationList', + 'variableDeclaration', + 'assignListStatement', + 'assignStatement', + 'ifStatement', + 'elseIfStatement', + 'elseStatement', + 'forStatements', + 'forStatement', + 'forStatementParametar', + 'forStatementBody', + 'forInStatement', + 'forInRangeStatement', + 'rangeFunction', + 'whileStatement', + 'whileStatementParametar', + 'whileStatementBody', + 'tryStatement', + 'returnStatement', + 'array', + 'expression', + 'lambdaExpression', + 'identifierExpress', + 'plusExpression', + 'minusExpression', + 'rightPlusPlus', + 'rightMinusMinus', + 'leftPlusPlus', + 'leftMinusMinus', + 'relationOperator', + 'operator2', + 'operator1', + 'bitOperator', + 'singleBitOperator', + 'wrapperExpression', + 'functionInvoikeExpression', + 'eos', + 'literal' + ] + + static EOF = Token.EOF + static T__0 = 1 + static T__1 = 2 + static T__2 = 3 + static T__3 = 4 + static T__4 = 5 + static T__5 = 6 + static T__6 = 7 + static T__7 = 8 + static T__8 = 9 + static RegularAssign = 10 + static RegularLikeRight = 11 + static RegularRelationLeftExpression = 12 + static RegularRelationRightExpression = 13 + static Space = 14 + static NewLine = 15 + static Comment = 16 + static Power = 17 + static Multiply = 18 + static Divide = 19 + static Mode = 20 + static Not = 21 + static And = 22 + static Or = 23 + static NotEqual = 24 + static GreatThanOrEqual = 25 + static GreatThan = 26 + static LessThanOrEqual = 27 + static LessThan = 28 + static Equal = 29 + static RegulaLike = 30 + static BitAnd = 31 + static BitOr = 32 + static BitXor = 33 + static BitNot = 34 + static BitRightShiftNoSign = 35 + static BitLeftShift = 36 + static BitRightShift = 37 + static Number = 38 + static NumberHex = 39 + static BooleanTrue = 40 + static BooleanFalse = 41 + static String = 42 + static Assignment = 43 + static VariablePrefix = 44 + static FunctionKeyword = 45 + static ReturnKeyword = 46 + static IfKeyword = 47 + static ElseKeyword = 48 + static ElseIfKeyword = 49 + static Break = 50 + static Continue = 51 + static For = 52 + static Switch = 53 + static While = 54 + static OpenBracket = 55 + static CloseBracket = 56 + static OpenParen = 57 + static CloseParen = 58 + static OpenBrace = 59 + static CloseBrace = 60 + static SemiColon = 61 + static QuestionMark = 62 + static Colon = 63 + static Dot = 64 + static Plus = 65 + static Minus = 66 + static PlusPlus = 67 + static MinusMinus = 68 + static Identifier = 69 + static UnexpectedCharacter = 70 + static RULE_root = 0 + static RULE_program = 1 + static RULE_statement = 2 + static RULE_useStatement = 3 + static RULE_block = 4 + static RULE_functionDeclaration = 5 + static RULE_functionParameterList = 6 + static RULE_functionBody = 7 + static RULE_variableStatement = 8 + static RULE_variableDeclarationList = 9 + static RULE_variableDeclaration = 10 + static RULE_assignListStatement = 11 + static RULE_assignStatement = 12 + static RULE_ifStatement = 13 + static RULE_elseIfStatement = 14 + static RULE_elseStatement = 15 + static RULE_forStatements = 16 + static RULE_forStatement = 17 + static RULE_forStatementParametar = 18 + static RULE_forStatementBody = 19 + static RULE_forInStatement = 20 + static RULE_forInRangeStatement = 21 + static RULE_rangeFunction = 22 + static RULE_whileStatement = 23 + static RULE_whileStatementParametar = 24 + static RULE_whileStatementBody = 25 + static RULE_tryStatement = 26 + static RULE_returnStatement = 27 + static RULE_array = 28 + static RULE_expression = 29 + static RULE_lambdaExpression = 30 + static RULE_identifierExpress = 31 + static RULE_plusExpression = 32 + static RULE_minusExpression = 33 + static RULE_rightPlusPlus = 34 + static RULE_rightMinusMinus = 35 + static RULE_leftPlusPlus = 36 + static RULE_leftMinusMinus = 37 + static RULE_relationOperator = 38 + static RULE_operator2 = 39 + static RULE_operator1 = 40 + static RULE_bitOperator = 41 + static RULE_singleBitOperator = 42 + static RULE_wrapperExpression = 43 + static RULE_functionInvoikeExpression = 44 + static RULE_eos = 45 + static RULE_literal = 46 + static RootContext = RootContext + static ProgramContext = ProgramContext + static StatementContext = StatementContext + static UseStatementContext = UseStatementContext + static BlockContext = BlockContext + static FunctionDeclarationContext = FunctionDeclarationContext + static FunctionParameterListContext = FunctionParameterListContext + static FunctionBodyContext = FunctionBodyContext + static VariableStatementContext = VariableStatementContext + static VariableDeclarationListContext = VariableDeclarationListContext + static VariableDeclarationContext = VariableDeclarationContext + static AssignListStatementContext = AssignListStatementContext + static AssignStatementContext = AssignStatementContext + static IfStatementContext = IfStatementContext + static ElseIfStatementContext = ElseIfStatementContext + static ElseStatementContext = ElseStatementContext + static ForStatementsContext = ForStatementsContext + static ForStatementContext = ForStatementContext + static ForStatementParametarContext = ForStatementParametarContext + static ForStatementBodyContext = ForStatementBodyContext + static ForInStatementContext = ForInStatementContext + static ForInRangeStatementContext = ForInRangeStatementContext + static RangeFunctionContext = RangeFunctionContext + static WhileStatementContext = WhileStatementContext + static WhileStatementParametarContext = WhileStatementParametarContext + static WhileStatementBodyContext = WhileStatementBodyContext + static TryStatementContext = TryStatementContext + static ReturnStatementContext = ReturnStatementContext + static ArrayContext = ArrayContext + static ExpressionContext = ExpressionContext + static LambdaExpressionContext = LambdaExpressionContext + static IdentifierExpressContext = IdentifierExpressContext + static PlusExpressionContext = PlusExpressionContext + static MinusExpressionContext = MinusExpressionContext + static RightPlusPlusContext = RightPlusPlusContext + static RightMinusMinusContext = RightMinusMinusContext + static LeftPlusPlusContext = LeftPlusPlusContext + static LeftMinusMinusContext = LeftMinusMinusContext + static RelationOperatorContext = RelationOperatorContext + static Operator2Context = Operator2Context + static Operator1Context = Operator1Context + static BitOperatorContext = BitOperatorContext + static SingleBitOperatorContext = SingleBitOperatorContext + static WrapperExpressionContext = WrapperExpressionContext + static FunctionInvoikeExpressionContext = FunctionInvoikeExpressionContext + static EosContext = EosContext + static LiteralContext = LiteralContext + constructor(input: CommonTokenStream) { + super(input) + this._interp = new ParserATNSimulator(this, atn, decisionsToDFA, sharedContextCache) + DSLParser.ruleNames = DSLParser.ruleNames + DSLParser.literalNames = DSLParser.literalNames + DSLParser.symbolicNames = DSLParser.symbolicNames + } + + get atn() { + return atn + } + + sempred(localctx: ParserRuleContext, ruleIndex: number, predIndex: number) { + switch (ruleIndex) { + case 2: + return this.statement_sempred(localctx, predIndex) + case 29: + return this.expression_sempred(localctx, predIndex) + default: + throw 'No predicate with index:' + ruleIndex + } + } + + statement_sempred(_localctx: ParserRuleContext, predIndex: number) { + switch (predIndex) { + case 0: + return this.precpred(this._ctx, 3) + default: + throw 'No predicate with index:' + predIndex + } + } + + expression_sempred(_localctx: ParserRuleContext, predIndex: number) { + switch (predIndex) { + case 1: + return this.precpred(this._ctx, 20) + case 2: + return this.precpred(this._ctx, 19) + case 3: + return this.precpred(this._ctx, 18) + case 4: + return this.precpred(this._ctx, 17) + case 5: + return this.precpred(this._ctx, 16) + case 6: + return this.precpred(this._ctx, 15) + case 7: + return this.precpred(this._ctx, 14) + case 8: + return this.precpred(this._ctx, 13) + case 9: + return this.precpred(this._ctx, 12) + case 10: + return this.precpred(this._ctx, 11) + case 11: + return this.precpred(this._ctx, 10) + case 12: + return this.precpred(this._ctx, 8) + case 13: + return this.precpred(this._ctx, 9) + default: + throw 'No predicate with index:' + predIndex + } + } + + root() { + const localctx = new RootContext(this, this._ctx, this.state) + this.enterRule(localctx, 0, DSLParser.RULE_root) + try { + this.enterOuterAlt(localctx, 1) + this.state = 94 + this.program() + this.state = 95 + this.match(DSLParser.EOF) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + program() { + const localctx = new ProgramContext(this, this._ctx, this.state) + this.enterRule(localctx, 2, DSLParser.RULE_program) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 98 + this._errHandler.sync(this) + _la = this._input.LA(1) + do { + this.state = 97 + this.statement(0) + this.state = 100 + this._errHandler.sync(this) + _la = this._input.LA(1) + } while ( + ((_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << DSLParser.T__0) | + (1 << DSLParser.T__3) | + (1 << DSLParser.T__4) | + (1 << DSLParser.T__6) | + (1 << DSLParser.RegularRelationLeftExpression) | + (1 << DSLParser.RegularRelationRightExpression) | + (1 << DSLParser.NewLine) | + (1 << DSLParser.Comment) | + (1 << DSLParser.Not))) !== + 0) || + (((_la - 34) & ~0x1f) == 0 && + ((1 << (_la - 34)) & + ((1 << (DSLParser.BitNot - 34)) | + (1 << (DSLParser.Number - 34)) | + (1 << (DSLParser.NumberHex - 34)) | + (1 << (DSLParser.BooleanTrue - 34)) | + (1 << (DSLParser.BooleanFalse - 34)) | + (1 << (DSLParser.String - 34)) | + (1 << (DSLParser.VariablePrefix - 34)) | + (1 << (DSLParser.FunctionKeyword - 34)) | + (1 << (DSLParser.ReturnKeyword - 34)) | + (1 << (DSLParser.IfKeyword - 34)) | + (1 << (DSLParser.Break - 34)) | + (1 << (DSLParser.Continue - 34)) | + (1 << (DSLParser.For - 34)) | + (1 << (DSLParser.While - 34)) | + (1 << (DSLParser.OpenBracket - 34)) | + (1 << (DSLParser.OpenParen - 34)) | + (1 << (DSLParser.OpenBrace - 34)) | + (1 << (DSLParser.SemiColon - 34)) | + (1 << (DSLParser.Plus - 34)))) !== + 0) || + (((_la - 66) & ~0x1f) == 0 && + ((1 << (_la - 66)) & + ((1 << (DSLParser.Minus - 66)) | + (1 << (DSLParser.PlusPlus - 66)) | + (1 << (DSLParser.MinusMinus - 66)) | + (1 << (DSLParser.Identifier - 66)))) !== + 0) + ) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + statement(_p?: number) { + if (_p === undefined) { + _p = 0 + } + const _parentctx = this._ctx + const _parentState = this.state + let localctx = new StatementContext(this, this._ctx, _parentState) + let _prevctx = localctx + const _startState = 4 + this.enterRecursionRule(localctx, 4, DSLParser.RULE_statement, _p) + try { + this.enterOuterAlt(localctx, 1) + this.state = 142 + this._errHandler.sync(this) + switch (this._interp.adaptivePredict(this._input, 8, this._ctx)) { + case 1: + this.state = 103 + this.block() + this.state = 105 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 1, this._ctx) + if (la_ === 1) { + this.state = 104 + this.eos() + } + break + + case 2: + this.state = 107 + this.useStatement() + break + + case 3: + this.state = 108 + this.functionDeclaration() + this.state = 109 + this.eos() + break + + case 4: + this.state = 111 + this.variableStatement() + this.state = 113 + this._errHandler.sync(this) + const la_4 = this._interp.adaptivePredict(this._input, 2, this._ctx) + if (la_4 === 1) { + this.state = 112 + this.eos() + } + break + + case 5: + this.state = 115 + this.assignListStatement() + this.state = 117 + this._errHandler.sync(this) + const la_5 = this._interp.adaptivePredict(this._input, 3, this._ctx) + if (la_5 === 1) { + this.state = 116 + this.eos() + } + break + + case 6: + this.state = 119 + this.ifStatement() + break + + case 7: + this.state = 120 + this.forStatements() + break + + case 8: + this.state = 121 + this.whileStatement() + break + + case 9: + this.state = 122 + this.match(DSLParser.Break) + this.state = 124 + this._errHandler.sync(this) + const la_9 = this._interp.adaptivePredict(this._input, 4, this._ctx) + if (la_9 === 1) { + this.state = 123 + this.eos() + } + break + + case 10: + this.state = 126 + this.match(DSLParser.Continue) + this.state = 128 + this._errHandler.sync(this) + const la_10 = this._interp.adaptivePredict(this._input, 5, this._ctx) + if (la_10 === 1) { + this.state = 127 + this.eos() + } + break + + case 11: + this.state = 130 + this.returnStatement() + break + + case 12: + this.state = 131 + this.expression(0) + this.state = 133 + this._errHandler.sync(this) + if (this._interp.adaptivePredict(this._input, 6, this._ctx) === 1) { + this.state = 132 + this.eos() + } + break + + case 13: + this.state = 135 + this.tryStatement() + break + + case 14: + this.state = 136 + this.match(DSLParser.Comment) + break + + case 15: + this.state = 138 + this._errHandler.sync(this) + let _alt = 1 + do { + switch (_alt) { + case 1: + this.state = 137 + this.eos() + break + default: + throw new NoViableAltException(this) + } + this.state = 140 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 7, this._ctx) + } while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) + break + } + this._ctx.stop = this._input.LT(-1) + this.state = 148 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 9, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners !== null) { + this.triggerExitRuleEvent() + } + _prevctx = localctx + localctx = new StatementContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_statement) + this.state = 144 + if (!this.precpred(this._ctx, 3)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 3)', '') + } + this.state = 145 + this.match(DSLParser.Comment) + } + this.state = 150 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 9, this._ctx) + } + } catch (error) { + if (error instanceof RecognitionException) { + localctx.exception = error + this._errHandler.reportError(this, error) + this._errHandler.recover(this, error) + } else { + throw error + } + } finally { + this.unrollRecursionContexts(_parentctx) + } + return localctx + } + + useStatement() { + const localctx = new UseStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 6, DSLParser.RULE_useStatement) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 151 + this.match(DSLParser.T__0) + this.state = 152 + this.identifierExpress() + this.state = 164 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 11, this._ctx) + if (la_ === 1) { + this.state = 153 + this.match(DSLParser.Dot) + this.state = 154 + this.match(DSLParser.OpenBrace) + this.state = 155 + this.match(DSLParser.Identifier) + this.state = 160 + this._errHandler.sync(this) + _la = this._input.LA(1) + while (_la === DSLParser.T__1) { + this.state = 156 + this.match(DSLParser.T__1) + this.state = 157 + this.match(DSLParser.Identifier) + this.state = 162 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + this.state = 163 + this.match(DSLParser.CloseBrace) + } + this.state = 168 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Dot) { + this.state = 166 + this.match(DSLParser.Dot) + this.state = 167 + this.match(DSLParser.Multiply) + } + + this.state = 170 + this.match(DSLParser.SemiColon) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + block() { + const localctx = new BlockContext(this, this._ctx, this.state) + this.enterRule(localctx, 8, DSLParser.RULE_block) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 172 + this.match(DSLParser.OpenBrace) + this.state = 174 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 13, this._ctx) + if (la_ === 1) { + this.state = 173 + this.eos() + } + this.state = 177 + this._errHandler.sync(this) + let _alt = 1 + do { + switch (_alt) { + case 1: + this.state = 176 + this.statement(0) + break + default: + throw new NoViableAltException(this) + } + this.state = 179 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 14, this._ctx) + } while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) + this.state = 184 + this._errHandler.sync(this) + _la = this._input.LA(1) + while (_la === DSLParser.NewLine || _la === DSLParser.SemiColon) { + this.state = 181 + this.eos() + this.state = 186 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + this.state = 187 + this.match(DSLParser.CloseBrace) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + functionDeclaration() { + const localctx = new FunctionDeclarationContext(this, this._ctx, this.state) + this.enterRule(localctx, 10, DSLParser.RULE_functionDeclaration) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 189 + this.match(DSLParser.FunctionKeyword) + this.state = 191 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Identifier) { + this.state = 190 + this.match(DSLParser.Identifier) + } + + this.state = 193 + this.match(DSLParser.OpenParen) + this.state = 194 + this.functionParameterList() + this.state = 195 + this.match(DSLParser.CloseParen) + this.state = 196 + this.match(DSLParser.OpenBrace) + this.state = 197 + this.functionBody() + this.state = 198 + this.match(DSLParser.CloseBrace) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + functionParameterList() { + const localctx = new FunctionParameterListContext(this, this._ctx, this.state) + this.enterRule(localctx, 12, DSLParser.RULE_functionParameterList) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 214 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.BitAnd || _la === DSLParser.Identifier) { + this.state = 201 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.BitAnd) { + this.state = 200 + this.match(DSLParser.BitAnd) + } + + this.state = 203 + this.match(DSLParser.Identifier) + this.state = 211 + this._errHandler.sync(this) + _la = this._input.LA(1) + while (_la === DSLParser.T__1) { + this.state = 204 + this.match(DSLParser.T__1) + this.state = 206 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.BitAnd) { + this.state = 205 + this.match(DSLParser.BitAnd) + } + + this.state = 208 + this.match(DSLParser.Identifier) + this.state = 213 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + functionBody() { + const localctx = new FunctionBodyContext(this, this._ctx, this.state) + this.enterRule(localctx, 14, DSLParser.RULE_functionBody) + try { + this.enterOuterAlt(localctx, 1) + this.state = 217 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 21, this._ctx) + if (la_ === 1) { + this.state = 216 + this.eos() + } + this.state = 222 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 22, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 219 + this.statement(0) + } + this.state = 224 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 22, this._ctx) + } + + this.state = 226 + this._errHandler.sync(this) + const _la = this._input.LA(1) + if (_la === DSLParser.ReturnKeyword) { + this.state = 225 + this.returnStatement() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + variableStatement() { + const localctx = new VariableStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 16, DSLParser.RULE_variableStatement) + try { + this.enterOuterAlt(localctx, 1) + this.state = 228 + this.match(DSLParser.VariablePrefix) + this.state = 229 + this.variableDeclarationList() + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + variableDeclarationList() { + const localctx = new VariableDeclarationListContext(this, this._ctx, this.state) + this.enterRule(localctx, 18, DSLParser.RULE_variableDeclarationList) + try { + this.enterOuterAlt(localctx, 1) + this.state = 231 + this.variableDeclaration() + this.state = 236 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 24, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 232 + this.match(DSLParser.T__1) + this.state = 233 + this.variableDeclaration() + } + this.state = 238 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 24, this._ctx) + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + variableDeclaration() { + const localctx = new VariableDeclarationContext(this, this._ctx, this.state) + this.enterRule(localctx, 20, DSLParser.RULE_variableDeclaration) + try { + this.state = 251 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 26, this._ctx) + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1) + this.state = 239 + this.identifierExpress() + this.state = 240 + this.match(DSLParser.RegularAssign) + break + + case 2: + this.enterOuterAlt(localctx, 2) + this.state = 242 + this.identifierExpress() + this.state = 245 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 25, this._ctx) + if (la_ === 1) { + this.state = 243 + this.match(DSLParser.Assignment) + this.state = 244 + this.expression(0) + } + break + + case 3: + this.enterOuterAlt(localctx, 3) + this.state = 247 + this.identifierExpress() + this.state = 248 + this.match(DSLParser.Assignment) + this.state = 249 + this.statement(0) + break + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + assignListStatement() { + const localctx = new AssignListStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 22, DSLParser.RULE_assignListStatement) + try { + this.enterOuterAlt(localctx, 1) + this.state = 253 + this.assignStatement() + this.state = 258 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 27, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 254 + this.match(DSLParser.T__1) + this.state = 255 + this.assignStatement() + } + this.state = 260 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 27, this._ctx) + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + assignStatement() { + const localctx = new AssignStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 24, DSLParser.RULE_assignStatement) + try { + this.state = 274 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 29, this._ctx) + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1) + this.state = 261 + this.identifierExpress() + this.state = 262 + this.match(DSLParser.RegularAssign) + break + + case 2: + this.enterOuterAlt(localctx, 2) + this.state = 264 + this.identifierExpress() + this.state = 265 + this.match(DSLParser.Assignment) + this.state = 268 + this._errHandler.sync(this) + switch (this._input.LA(1)) { + case DSLParser.T__3: + case DSLParser.T__6: + case DSLParser.RegularRelationLeftExpression: + case DSLParser.RegularRelationRightExpression: + case DSLParser.Not: + case DSLParser.BitNot: + case DSLParser.Number: + case DSLParser.NumberHex: + case DSLParser.BooleanTrue: + case DSLParser.BooleanFalse: + case DSLParser.String: + case DSLParser.OpenBracket: + case DSLParser.OpenParen: + case DSLParser.Plus: + case DSLParser.Minus: + case DSLParser.PlusPlus: + case DSLParser.MinusMinus: + case DSLParser.Identifier: + this.state = 266 + this.expression(0) + break + case DSLParser.FunctionKeyword: + this.state = 267 + this.functionDeclaration() + break + default: + throw new NoViableAltException(this) + } + break + + case 3: + this.enterOuterAlt(localctx, 3) + this.state = 270 + this.rightPlusPlus() + break + + case 4: + this.enterOuterAlt(localctx, 4) + this.state = 271 + this.rightMinusMinus() + break + + case 5: + this.enterOuterAlt(localctx, 5) + this.state = 272 + this.leftPlusPlus() + break + + case 6: + this.enterOuterAlt(localctx, 6) + this.state = 273 + this.leftMinusMinus() + break + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + ifStatement() { + const localctx = new IfStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 26, DSLParser.RULE_ifStatement) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 276 + this.match(DSLParser.IfKeyword) + this.state = 278 + this._errHandler.sync(this) + let la_ = this._interp.adaptivePredict(this._input, 30, this._ctx) + if (la_ === 1) { + this.state = 277 + this.match(DSLParser.OpenParen) + } + this.state = 280 + this.expression(0) + this.state = 282 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.CloseParen) { + this.state = 281 + this.match(DSLParser.CloseParen) + } + + this.state = 284 + this.statement(0) + this.state = 288 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 32, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 285 + this.elseIfStatement() + } + this.state = 290 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 32, this._ctx) + } + + this.state = 292 + this._errHandler.sync(this) + la_ = this._interp.adaptivePredict(this._input, 33, this._ctx) + if (la_ === 1) { + this.state = 291 + this.elseStatement() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + elseIfStatement() { + const localctx = new ElseIfStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 28, DSLParser.RULE_elseIfStatement) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 297 + this._errHandler.sync(this) + switch (this._input.LA(1)) { + case DSLParser.ElseIfKeyword: + this.state = 294 + this.match(DSLParser.ElseIfKeyword) + break + case DSLParser.ElseKeyword: + this.state = 295 + this.match(DSLParser.ElseKeyword) + this.state = 296 + this.match(DSLParser.IfKeyword) + break + default: + throw new NoViableAltException(this) + } + this.state = 300 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 35, this._ctx) + if (la_ === 1) { + this.state = 299 + this.match(DSLParser.OpenParen) + } + this.state = 302 + this.expression(0) + this.state = 304 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.CloseParen) { + this.state = 303 + this.match(DSLParser.CloseParen) + } + + this.state = 306 + this.statement(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + elseStatement() { + const localctx = new ElseStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 30, DSLParser.RULE_elseStatement) + try { + this.enterOuterAlt(localctx, 1) + this.state = 308 + this.match(DSLParser.ElseKeyword) + this.state = 309 + this.statement(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + forStatements() { + const localctx = new ForStatementsContext(this, this._ctx, this.state) + this.enterRule(localctx, 32, DSLParser.RULE_forStatements) + try { + this.state = 314 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 37, this._ctx) + switch (la_) { + case 1: + this.enterOuterAlt(localctx, 1) + this.state = 311 + this.forStatement() + break + + case 2: + this.enterOuterAlt(localctx, 2) + this.state = 312 + this.forInStatement() + break + + case 3: + this.enterOuterAlt(localctx, 3) + this.state = 313 + this.forInRangeStatement() + break + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + forStatement() { + const localctx = new ForStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 34, DSLParser.RULE_forStatement) + try { + this.enterOuterAlt(localctx, 1) + this.state = 316 + this.match(DSLParser.For) + this.state = 317 + this.match(DSLParser.OpenParen) + this.state = 318 + this.forStatementParametar() + this.state = 319 + this.match(DSLParser.CloseParen) + this.state = 320 + this.forStatementBody() + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + forStatementParametar() { + const localctx = new ForStatementParametarContext(this, this._ctx, this.state) + this.enterRule(localctx, 36, DSLParser.RULE_forStatementParametar) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 324 + this._errHandler.sync(this) + switch (this._input.LA(1)) { + case DSLParser.VariablePrefix: + this.state = 322 + this.variableStatement() + break + case DSLParser.PlusPlus: + case DSLParser.MinusMinus: + case DSLParser.Identifier: + this.state = 323 + this.assignListStatement() + break + case DSLParser.SemiColon: + break + default: + break + } + this.state = 326 + this.match(DSLParser.SemiColon) + this.state = 328 + this._errHandler.sync(this) + _la = this._input.LA(1) + if ( + (((_la - 4) & ~0x1f) == 0 && + ((1 << (_la - 4)) & + ((1 << (DSLParser.T__3 - 4)) | + (1 << (DSLParser.T__6 - 4)) | + (1 << (DSLParser.RegularRelationLeftExpression - 4)) | + (1 << (DSLParser.RegularRelationRightExpression - 4)) | + (1 << (DSLParser.Not - 4)) | + (1 << (DSLParser.BitNot - 4)))) !== + 0) || + (((_la - 38) & ~0x1f) == 0 && + ((1 << (_la - 38)) & + ((1 << (DSLParser.Number - 38)) | + (1 << (DSLParser.NumberHex - 38)) | + (1 << (DSLParser.BooleanTrue - 38)) | + (1 << (DSLParser.BooleanFalse - 38)) | + (1 << (DSLParser.String - 38)) | + (1 << (DSLParser.OpenBracket - 38)) | + (1 << (DSLParser.OpenParen - 38)) | + (1 << (DSLParser.Plus - 38)) | + (1 << (DSLParser.Minus - 38)) | + (1 << (DSLParser.PlusPlus - 38)) | + (1 << (DSLParser.MinusMinus - 38)) | + (1 << (DSLParser.Identifier - 38)))) !== + 0) + ) { + this.state = 327 + this.expression(0) + } + + this.state = 330 + this.match(DSLParser.SemiColon) + this.state = 332 + this._errHandler.sync(this) + _la = this._input.LA(1) + if ( + ((_la - 67) & ~0x1f) == 0 && + ((1 << (_la - 67)) & + ((1 << (DSLParser.PlusPlus - 67)) | + (1 << (DSLParser.MinusMinus - 67)) | + (1 << (DSLParser.Identifier - 67)))) !== + 0 + ) { + this.state = 331 + this.assignListStatement() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + forStatementBody() { + const localctx = new ForStatementBodyContext(this, this._ctx, this.state) + this.enterRule(localctx, 38, DSLParser.RULE_forStatementBody) + try { + this.enterOuterAlt(localctx, 1) + this.state = 334 + this.statement(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + forInStatement() { + const localctx = new ForInStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 40, DSLParser.RULE_forInStatement) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 336 + this.match(DSLParser.For) + this.state = 337 + this.match(DSLParser.Identifier) + this.state = 340 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.T__1) { + this.state = 338 + this.match(DSLParser.T__1) + this.state = 339 + this.match(DSLParser.Identifier) + } + + this.state = 342 + this.match(DSLParser.T__2) + this.state = 343 + this.identifierExpress() + this.state = 344 + this.forStatementBody() + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + forInRangeStatement() { + const localctx = new ForInRangeStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 42, DSLParser.RULE_forInRangeStatement) + try { + this.enterOuterAlt(localctx, 1) + this.state = 346 + this.match(DSLParser.For) + this.state = 347 + this.match(DSLParser.Identifier) + this.state = 348 + this.match(DSLParser.T__2) + this.state = 349 + this.rangeFunction() + this.state = 350 + this.forStatementBody() + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + rangeFunction() { + const localctx = new RangeFunctionContext(this, this._ctx, this.state) + this.enterRule(localctx, 44, DSLParser.RULE_rangeFunction) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 352 + this.match(DSLParser.T__3) + this.state = 353 + this.match(DSLParser.OpenParen) + this.state = 355 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Minus) { + this.state = 354 + this.match(DSLParser.Minus) + } + + this.state = 357 + this.match(DSLParser.Number) + this.state = 358 + this.match(DSLParser.T__1) + this.state = 361 + this._errHandler.sync(this) + switch (this._input.LA(1)) { + case DSLParser.Number: + this.state = 359 + this.match(DSLParser.Number) + break + case DSLParser.Identifier: + this.state = 360 + this.identifierExpress() + break + default: + throw new NoViableAltException(this) + } + this.state = 365 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.T__1) { + this.state = 363 + this.match(DSLParser.T__1) + this.state = 364 + this.match(DSLParser.Number) + } + + this.state = 367 + this.match(DSLParser.CloseParen) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + whileStatement() { + const localctx = new WhileStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 46, DSLParser.RULE_whileStatement) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 369 + this.match(DSLParser.While) + this.state = 371 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 45, this._ctx) + if (la_ === 1) { + this.state = 370 + this.match(DSLParser.OpenParen) + } + this.state = 373 + this.whileStatementParametar() + this.state = 375 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.CloseParen) { + this.state = 374 + this.match(DSLParser.CloseParen) + } + + this.state = 377 + this.whileStatementBody() + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + whileStatementParametar() { + const localctx = new WhileStatementParametarContext(this, this._ctx, this.state) + this.enterRule(localctx, 48, DSLParser.RULE_whileStatementParametar) + try { + this.enterOuterAlt(localctx, 1) + this.state = 379 + this.expression(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + whileStatementBody() { + const localctx = new WhileStatementBodyContext(this, this._ctx, this.state) + this.enterRule(localctx, 50, DSLParser.RULE_whileStatementBody) + try { + this.enterOuterAlt(localctx, 1) + this.state = 381 + this.statement(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + tryStatement() { + const localctx = new TryStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 52, DSLParser.RULE_tryStatement) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 383 + this.match(DSLParser.T__4) + this.state = 384 + this.statement(0) + this.state = 405 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 50, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 385 + this.match(DSLParser.T__5) + this.state = 386 + this.match(DSLParser.OpenParen) + this.state = 387 + this.match(DSLParser.Identifier) + this.state = 389 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Identifier) { + this.state = 388 + this.match(DSLParser.Identifier) + } + + this.state = 398 + this._errHandler.sync(this) + _la = this._input.LA(1) + while (_la === DSLParser.BitOr) { + this.state = 391 + this.match(DSLParser.BitOr) + this.state = 392 + this.match(DSLParser.Identifier) + this.state = 394 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Identifier) { + this.state = 393 + this.match(DSLParser.Identifier) + } + + this.state = 400 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + this.state = 401 + this.match(DSLParser.CloseParen) + this.state = 402 + this.statement(0) + } + this.state = 407 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 50, this._ctx) + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + returnStatement() { + const localctx = new ReturnStatementContext(this, this._ctx, this.state) + this.enterRule(localctx, 54, DSLParser.RULE_returnStatement) + try { + this.enterOuterAlt(localctx, 1) + this.state = 408 + this.match(DSLParser.ReturnKeyword) + this.state = 411 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 51, this._ctx) + if (la_ === 1) { + this.state = 409 + this.expression(0) + } else if (la_ === 2) { + this.state = 410 + this.functionDeclaration() + } + this.state = 416 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 52, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 413 + this.eos() + } + this.state = 418 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 52, this._ctx) + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + array() { + const localctx = new ArrayContext(this, this._ctx, this.state) + this.enterRule(localctx, 56, DSLParser.RULE_array) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 419 + this.match(DSLParser.OpenBracket) + this.state = 420 + this.expression(0) + this.state = 425 + this._errHandler.sync(this) + _la = this._input.LA(1) + while (_la === DSLParser.T__1) { + this.state = 421 + this.match(DSLParser.T__1) + this.state = 422 + this.expression(0) + this.state = 427 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + this.state = 428 + this.match(DSLParser.CloseBracket) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + expression(_p: number) { + if (_p === undefined) { + _p = 0 + } + const _parentctx = this._ctx + const _parentState = this.state + let localctx = new ExpressionContext(this, this._ctx, _parentState) + const _startState = 58 + this.enterRecursionRule(localctx, 58, DSLParser.RULE_expression, _p) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 451 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 54, this._ctx) + switch (la_) { + case 1: + this.state = 431 + this.literal() + break + + case 2: + this.state = 432 + this.lambdaExpression() + break + + case 3: + this.state = 433 + this.functionInvoikeExpression() + break + + case 4: + this.state = 434 + this.plusExpression() + break + + case 5: + this.state = 435 + this.minusExpression() + break + + case 6: + this.state = 436 + this.rightPlusPlus() + break + + case 7: + this.state = 437 + this.rightMinusMinus() + break + + case 8: + this.state = 438 + this.leftPlusPlus() + break + + case 9: + this.state = 439 + this.leftMinusMinus() + break + + case 10: + this.state = 440 + this.match(DSLParser.Not) + this.state = 441 + this.expression(22) + break + + case 11: + this.state = 442 + this.match(DSLParser.BitNot) + this.state = 443 + this.expression(21) + break + + case 12: + this.state = 444 + this.wrapperExpression() + break + + case 13: + this.state = 445 + this.identifierExpress() + break + + case 14: + this.state = 446 + this.array() + break + + case 15: + this.state = 447 + this.rangeFunction() + break + + case 16: + this.state = 448 + this.match(DSLParser.RegularRelationLeftExpression) + break + + case 17: + this.state = 449 + this.match(DSLParser.RegularRelationRightExpression) + break + + case 18: + this.state = 450 + this.assignStatement() + break + } + this._ctx.stop = this._input.LT(-1) + this.state = 506 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 58, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + if (this._parseListeners !== null) { + this.triggerExitRuleEvent() + } + this.state = 504 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 57, this._ctx) + switch (la_) { + case 1: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 453 + if (!this.precpred(this._ctx, 20)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 20)', '') + } + this.state = 454 + this.match(DSLParser.Power) + this.state = 455 + this.expression(21) + break + + case 2: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 456 + if (!this.precpred(this._ctx, 19)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 19)', '') + } + this.state = 457 + this.operator2() + this.state = 458 + this.expression(20) + break + + case 3: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 460 + if (!this.precpred(this._ctx, 18)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 18)', '') + } + this.state = 462 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.NewLine) { + this.state = 461 + this.match(DSLParser.NewLine) + } + + this.state = 464 + this.operator1() + this.state = 466 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.NewLine) { + this.state = 465 + this.match(DSLParser.NewLine) + } + + this.state = 468 + this.expression(19) + break + + case 4: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 470 + if (!this.precpred(this._ctx, 17)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 17)', '') + } + this.state = 471 + _la = this._input.LA(1) + if ( + !( + ((_la - 35) & ~0x1f) == 0 && + ((1 << (_la - 35)) & + ((1 << (DSLParser.BitRightShiftNoSign - 35)) | + (1 << (DSLParser.BitLeftShift - 35)) | + (1 << (DSLParser.BitRightShift - 35)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + this.state = 472 + this.expression(18) + break + + case 5: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 473 + if (!this.precpred(this._ctx, 16)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 16)', '') + } + this.state = 474 + this.relationOperator() + this.state = 475 + this.expression(17) + break + + case 6: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 477 + if (!this.precpred(this._ctx, 15)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 15)', '') + } + this.state = 478 + this.match(DSLParser.BitAnd) + this.state = 479 + this.expression(16) + break + + case 7: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 480 + if (!this.precpred(this._ctx, 14)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 14)', '') + } + this.state = 481 + this.match(DSLParser.BitOr) + this.state = 482 + this.expression(15) + break + + case 8: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 483 + if (!this.precpred(this._ctx, 13)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 13)', '') + } + this.state = 484 + this.relationOperator() + this.state = 485 + this.expression(14) + break + + case 9: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 487 + if (!this.precpred(this._ctx, 12)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 12)', '') + } + this.state = 488 + this.match(DSLParser.And) + this.state = 489 + this.expression(13) + break + + case 10: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 490 + if (!this.precpred(this._ctx, 11)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 11)', '') + } + this.state = 491 + this.match(DSLParser.Or) + this.state = 492 + this.expression(12) + break + + case 11: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 493 + if (!this.precpred(this._ctx, 10)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 10)', '') + } + this.state = 494 + this.match(DSLParser.RegulaLike) + this.state = 495 + this.expression(11) + break + + case 12: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 496 + if (!this.precpred(this._ctx, 8)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 8)', '') + } + this.state = 497 + this.match(DSLParser.QuestionMark) + this.state = 498 + this.expression(0) + this.state = 499 + this.match(DSLParser.Colon) + this.state = 500 + this.expression(9) + break + + case 13: + localctx = new ExpressionContext(this, _parentctx, _parentState) + this.pushNewRecursionContext(localctx, _startState, DSLParser.RULE_expression) + this.state = 502 + if (!this.precpred(this._ctx, 9)) { + throw new FailedPredicateException(this, 'this.precpred(this._ctx, 9)', '') + } + this.state = 503 + this.match(DSLParser.RegularLikeRight) + break + } + } + this.state = 508 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 58, this._ctx) + } + } catch (error) { + if (error instanceof RecognitionException) { + localctx.exception = error + this._errHandler.reportError(this, error) + this._errHandler.recover(this, error) + } else { + throw error + } + } finally { + this.unrollRecursionContexts(_parentctx) + } + return localctx + } + + lambdaExpression() { + const localctx = new LambdaExpressionContext(this, this._ctx, this.state) + this.enterRule(localctx, 60, DSLParser.RULE_lambdaExpression) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 509 + this.match(DSLParser.T__6) + this.state = 510 + this.match(DSLParser.OpenParen) + this.state = 511 + this.functionParameterList() + this.state = 512 + this.match(DSLParser.CloseParen) + this.state = 513 + this.match(DSLParser.T__7) + this.state = 517 + this._errHandler.sync(this) + _la = this._input.LA(1) + while ( + ((_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << DSLParser.T__0) | + (1 << DSLParser.T__3) | + (1 << DSLParser.T__4) | + (1 << DSLParser.T__6) | + (1 << DSLParser.RegularRelationLeftExpression) | + (1 << DSLParser.RegularRelationRightExpression) | + (1 << DSLParser.NewLine) | + (1 << DSLParser.Comment) | + (1 << DSLParser.Not))) !== + 0) || + (((_la - 34) & ~0x1f) == 0 && + ((1 << (_la - 34)) & + ((1 << (DSLParser.BitNot - 34)) | + (1 << (DSLParser.Number - 34)) | + (1 << (DSLParser.NumberHex - 34)) | + (1 << (DSLParser.BooleanTrue - 34)) | + (1 << (DSLParser.BooleanFalse - 34)) | + (1 << (DSLParser.String - 34)) | + (1 << (DSLParser.VariablePrefix - 34)) | + (1 << (DSLParser.FunctionKeyword - 34)) | + (1 << (DSLParser.ReturnKeyword - 34)) | + (1 << (DSLParser.IfKeyword - 34)) | + (1 << (DSLParser.Break - 34)) | + (1 << (DSLParser.Continue - 34)) | + (1 << (DSLParser.For - 34)) | + (1 << (DSLParser.While - 34)) | + (1 << (DSLParser.OpenBracket - 34)) | + (1 << (DSLParser.OpenParen - 34)) | + (1 << (DSLParser.OpenBrace - 34)) | + (1 << (DSLParser.SemiColon - 34)) | + (1 << (DSLParser.Plus - 34)))) !== + 0) || + (((_la - 66) & ~0x1f) == 0 && + ((1 << (_la - 66)) & + ((1 << (DSLParser.Minus - 66)) | + (1 << (DSLParser.PlusPlus - 66)) | + (1 << (DSLParser.MinusMinus - 66)) | + (1 << (DSLParser.Identifier - 66)))) !== + 0) + ) { + this.state = 514 + this.statement(0) + this.state = 519 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + this.state = 520 + this.match(DSLParser.T__8) + this.state = 522 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 60, this._ctx) + if (la_ === 1) { + this.state = 521 + this.match(DSLParser.SemiColon) + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + identifierExpress() { + const localctx = new IdentifierExpressContext(this, this._ctx, this.state) + this.enterRule(localctx, 62, DSLParser.RULE_identifierExpress) + try { + this.enterOuterAlt(localctx, 1) + this.state = 524 + this.match(DSLParser.Identifier) + this.state = 533 + this._errHandler.sync(this) + let _alt = this._interp.adaptivePredict(this._input, 62, this._ctx) + while (_alt != 2 && _alt != ATN.INVALID_ALT_NUMBER) { + if (_alt === 1) { + this.state = 531 + this._errHandler.sync(this) + switch (this._input.LA(1)) { + case DSLParser.Dot: + this.state = 525 + this.match(DSLParser.Dot) + this.state = 526 + this.match(DSLParser.Identifier) + break + case DSLParser.OpenBracket: + this.state = 527 + this.match(DSLParser.OpenBracket) + this.state = 528 + this.expression(0) + this.state = 529 + this.match(DSLParser.CloseBracket) + break + default: + throw new NoViableAltException(this) + } + } + this.state = 535 + this._errHandler.sync(this) + _alt = this._interp.adaptivePredict(this._input, 62, this._ctx) + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + plusExpression() { + const localctx = new PlusExpressionContext(this, this._ctx, this.state) + this.enterRule(localctx, 64, DSLParser.RULE_plusExpression) + try { + this.enterOuterAlt(localctx, 1) + this.state = 536 + this.match(DSLParser.Plus) + this.state = 537 + this.expression(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + minusExpression() { + const localctx = new MinusExpressionContext(this, this._ctx, this.state) + this.enterRule(localctx, 66, DSLParser.RULE_minusExpression) + try { + this.enterOuterAlt(localctx, 1) + this.state = 539 + this.match(DSLParser.Minus) + this.state = 540 + this.expression(0) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + rightPlusPlus() { + const localctx = new RightPlusPlusContext(this, this._ctx, this.state) + this.enterRule(localctx, 68, DSLParser.RULE_rightPlusPlus) + try { + this.enterOuterAlt(localctx, 1) + this.state = 542 + this.match(DSLParser.Identifier) + this.state = 543 + this.match(DSLParser.PlusPlus) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + rightMinusMinus() { + const localctx = new RightMinusMinusContext(this, this._ctx, this.state) + this.enterRule(localctx, 70, DSLParser.RULE_rightMinusMinus) + try { + this.enterOuterAlt(localctx, 1) + this.state = 545 + this.match(DSLParser.Identifier) + this.state = 546 + this.match(DSLParser.MinusMinus) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + leftPlusPlus() { + const localctx = new LeftPlusPlusContext(this, this._ctx, this.state) + this.enterRule(localctx, 72, DSLParser.RULE_leftPlusPlus) + try { + this.enterOuterAlt(localctx, 1) + this.state = 548 + this.match(DSLParser.PlusPlus) + this.state = 549 + this.match(DSLParser.Identifier) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + leftMinusMinus() { + const localctx = new LeftMinusMinusContext(this, this._ctx, this.state) + this.enterRule(localctx, 74, DSLParser.RULE_leftMinusMinus) + try { + this.enterOuterAlt(localctx, 1) + this.state = 551 + this.match(DSLParser.MinusMinus) + this.state = 552 + this.match(DSLParser.Identifier) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + relationOperator() { + const localctx = new RelationOperatorContext(this, this._ctx, this.state) + this.enterRule(localctx, 76, DSLParser.RULE_relationOperator) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 554 + _la = this._input.LA(1) + if ( + !( + (_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << DSLParser.NotEqual) | + (1 << DSLParser.GreatThanOrEqual) | + (1 << DSLParser.GreatThan) | + (1 << DSLParser.LessThanOrEqual) | + (1 << DSLParser.LessThan) | + (1 << DSLParser.Equal))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + operator2() { + const localctx = new Operator2Context(this, this._ctx, this.state) + this.enterRule(localctx, 78, DSLParser.RULE_operator2) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 556 + _la = this._input.LA(1) + if ( + !( + (_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << DSLParser.Multiply) | (1 << DSLParser.Divide) | (1 << DSLParser.Mode))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + operator1() { + const localctx = new Operator1Context(this, this._ctx, this.state) + this.enterRule(localctx, 80, DSLParser.RULE_operator1) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 558 + _la = this._input.LA(1) + if (!(_la === DSLParser.Plus || _la === DSLParser.Minus)) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + bitOperator() { + const localctx = new BitOperatorContext(this, this._ctx, this.state) + this.enterRule(localctx, 82, DSLParser.RULE_bitOperator) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 560 + _la = this._input.LA(1) + if (!(_la === DSLParser.BitAnd || _la === DSLParser.BitOr)) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + singleBitOperator() { + const localctx = new SingleBitOperatorContext(this, this._ctx, this.state) + this.enterRule(localctx, 84, DSLParser.RULE_singleBitOperator) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 562 + _la = this._input.LA(1) + if ( + !( + (_la & ~0x1f) == 0 && + ((1 << _la) & + ((1 << DSLParser.Multiply) | (1 << DSLParser.Divide) | (1 << DSLParser.Mode))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + wrapperExpression() { + const localctx = new WrapperExpressionContext(this, this._ctx, this.state) + this.enterRule(localctx, 86, DSLParser.RULE_wrapperExpression) + try { + this.enterOuterAlt(localctx, 1) + this.state = 564 + this.match(DSLParser.OpenParen) + this.state = 565 + this.expression(0) + this.state = 566 + this.match(DSLParser.CloseParen) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + functionInvoikeExpression() { + const localctx = new FunctionInvoikeExpressionContext(this, this._ctx, this.state) + this.enterRule(localctx, 88, DSLParser.RULE_functionInvoikeExpression) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 573 + this._errHandler.sync(this) + switch (this._input.LA(1)) { + case DSLParser.OpenParen: + this.state = 568 + this.match(DSLParser.OpenParen) + this.state = 569 + this.lambdaExpression() + this.state = 570 + this.match(DSLParser.CloseParen) + break + case DSLParser.Identifier: + this.state = 572 + this.identifierExpress() + break + default: + throw new NoViableAltException(this) + } + this.state = 575 + this.match(DSLParser.OpenParen) + this.state = 599 + this._errHandler.sync(this) + _la = this._input.LA(1) + if ( + (((_la - 4) & ~0x1f) == 0 && + ((1 << (_la - 4)) & + ((1 << (DSLParser.T__3 - 4)) | + (1 << (DSLParser.T__6 - 4)) | + (1 << (DSLParser.RegularRelationLeftExpression - 4)) | + (1 << (DSLParser.RegularRelationRightExpression - 4)) | + (1 << (DSLParser.Multiply - 4)) | + (1 << (DSLParser.Not - 4)) | + (1 << (DSLParser.BitNot - 4)))) !== + 0) || + (((_la - 38) & ~0x1f) == 0 && + ((1 << (_la - 38)) & + ((1 << (DSLParser.Number - 38)) | + (1 << (DSLParser.NumberHex - 38)) | + (1 << (DSLParser.BooleanTrue - 38)) | + (1 << (DSLParser.BooleanFalse - 38)) | + (1 << (DSLParser.String - 38)) | + (1 << (DSLParser.OpenBracket - 38)) | + (1 << (DSLParser.OpenParen - 38)) | + (1 << (DSLParser.Plus - 38)) | + (1 << (DSLParser.Minus - 38)) | + (1 << (DSLParser.PlusPlus - 38)) | + (1 << (DSLParser.MinusMinus - 38)) | + (1 << (DSLParser.Identifier - 38)))) !== + 0) + ) { + this.state = 577 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Multiply) { + this.state = 576 + this.match(DSLParser.Multiply) + } + + this.state = 579 + this.expression(0) + this.state = 596 + this._errHandler.sync(this) + _la = this._input.LA(1) + while (_la === DSLParser.T__1 || _la === DSLParser.NewLine) { + this.state = 581 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.NewLine) { + this.state = 580 + this.match(DSLParser.NewLine) + } + + this.state = 583 + this.match(DSLParser.T__1) + this.state = 585 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.NewLine) { + this.state = 584 + this.match(DSLParser.NewLine) + } + + this.state = 588 + this._errHandler.sync(this) + _la = this._input.LA(1) + if (_la === DSLParser.Multiply) { + this.state = 587 + this.match(DSLParser.Multiply) + } + + this.state = 592 + this._errHandler.sync(this) + const la_ = this._interp.adaptivePredict(this._input, 68, this._ctx) + switch (la_) { + case 1: + this.state = 590 + this.expression(0) + break + + case 2: + this.state = 591 + this.match(DSLParser.Plus) + break + } + this.state = 598 + this._errHandler.sync(this) + _la = this._input.LA(1) + } + } + + this.state = 601 + this.match(DSLParser.CloseParen) + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + eos() { + const localctx = new EosContext(this, this._ctx, this.state) + this.enterRule(localctx, 90, DSLParser.RULE_eos) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 603 + _la = this._input.LA(1) + if (!(_la === DSLParser.NewLine || _la === DSLParser.SemiColon)) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } + + literal() { + const localctx = new LiteralContext(this, this._ctx, this.state) + this.enterRule(localctx, 92, DSLParser.RULE_literal) + let _la = 0 // Token type + try { + this.enterOuterAlt(localctx, 1) + this.state = 605 + _la = this._input.LA(1) + if ( + !( + ((_la - 38) & ~0x1f) == 0 && + ((1 << (_la - 38)) & + ((1 << (DSLParser.Number - 38)) | + (1 << (DSLParser.NumberHex - 38)) | + (1 << (DSLParser.BooleanTrue - 38)) | + (1 << (DSLParser.BooleanFalse - 38)) | + (1 << (DSLParser.String - 38)))) !== + 0 + ) + ) { + this._errHandler.recoverInline(this) + } else { + this._errHandler.reportMatch(this) + this.consume() + } + } catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re + this._errHandler.reportError(this, re) + this._errHandler.recover(this, re) + } else { + throw re + } + } finally { + this.exitRule() + } + return localctx + } +} diff --git a/webui/src/views/settings/components/script/aviatorscript/grammar/GrammarParser.ts b/webui/src/views/settings/components/script/aviatorscript/grammar/GrammarParser.ts new file mode 100644 index 000000000..3b43d094e --- /dev/null +++ b/webui/src/views/settings/components/script/aviatorscript/grammar/GrammarParser.ts @@ -0,0 +1,67 @@ +import { CharStreams, CommonTokenStream, ErrorListener, ParserRuleContext } from 'antlr4' + +import DSLLexer from './DSLLexer' +import DSLParser from './DSLParser' + +export default class GrammarParser { + parse(code: string) { + const chars = CharStreams.fromString(code) + const lexer = new DSLLexer(chars) + const tokens = new CommonTokenStream(lexer) + const parser = new DSLParser(tokens) + + const errors: { line: number; column: number; message: string }[] = [] + class MyErrorListener extends ErrorListener { + constructor() { + super() + } + syntaxError( + _recognizer: unknown, + _offendingSymbol: unknown, + line: number, + column: number, + message: string, + _e: unknown + ) { + errors.push({ line, column, message }) + } + } + + lexer.removeErrorListeners() + lexer.addErrorListener(new MyErrorListener()) + parser.removeErrorListeners() + parser.addErrorListener(new MyErrorListener()) + + parser.buildParseTrees = true + const tree = parser.root() + // console.info(tree); + + class Visitor { + visitChildren(ctx: ParserRuleContext) { + if (!ctx) { + return + } + if (ctx.children) { + return ctx.children.map((child) => { + // @ts-expect-error 类型定义有问题 + if (child.children && child.children.length != 0) { + // @ts-expect-error 类型定义有问题 + return child.accept(this) + } else { + return child.getText() + } + }) + } + } + } + // @ts-expect-error 类型定义有问题 + const result = tree.accept(new Visitor()) + return { + ast: { + rule: 'root', + children: result + }, + errors: errors + } + } +} diff --git a/webui/src/views/settings/components/script/aviatorscript/monarch.ts b/webui/src/views/settings/components/script/aviatorscript/monarch.ts new file mode 100644 index 000000000..9389f7155 --- /dev/null +++ b/webui/src/views/settings/components/script/aviatorscript/monarch.ts @@ -0,0 +1,175 @@ +import type { languages } from 'monaco-editor' + +const monarch = { + // Set defaultToken to invalid to see what you do not tokenize yet + // defaultToken: 'invalid', + + keywords: [ + 'continue', + 'for', + 'switch', + 'goto', + 'do', + 'if', + 'this', + 'break', + 'throw', + 'else', + 'elsif', + 'enum', + 'return', + 'catch', + 'try', + 'in', + 'finally', + 'const', + 'super', + 'while', + 'true', + 'false', + 'fn', + 'let', + 'lambda', + 'exports', + 'new', + 'end', + 'nil', + 'use' + ], + + typeKeywords: [ + // 'boolean', 'double', 'byte', 'int', 'short', 'char', 'void', 'long', 'float' + ], + + operators: [ + '=', + '>', + '<', + '!', + '~', + '?', + ':', + '==', + '<=', + '>=', + '!=', + '&&', + '||', + '+', + '-', + '*', + '/', + '&', + '|', + '^', + '%', + '<<', + '>>', + '>>>' + ], + + // we include these common regular expressions + symbols: /[=>](?!@symbols)/, '@brackets'], + [ + /@symbols/, + { + cases: { + '@operators': 'operator', + '@default': '' + } + } + ], + + // @ annotations. + // As an example, we emit a debugging log message on these tokens. + // Note: message are supressed during the first load -- change some lines to see them. + [ + /@\s*[a-zA-Z_\$][\w\$]*/, + { + token: 'annotation', + log: 'annotation token: $0' + } + ], + + // delimiter: after number because of .\d floats + [/[;,.]/, 'delimiter'], + + // strings + [/"([^"\\]|\\.)*$|'([^'\\]|\\.)*$/, 'string.invalid'], // non-teminated string + [ + /"|'/, + { + token: 'string.quote', + bracket: '@open', + next: '@string' + } + ], + + // characters + [/'[^\\']'/, 'string'], + [/(')(@escapes)(')/, ['string', 'string.escape', 'string']], + [/'/, 'string.invalid'] + ], + + comment: [ + [/[^\/*]+/, 'comment'], + [/\/\*/, 'comment', '@push'], // nested comment + ['\\*/', 'comment', '@pop'], + [/[\/*]/, 'comment'] + ], + + string: [ + [/[^\\"']+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [ + /"|'/, + { + token: 'string.quote', + bracket: '@close', + next: '@pop' + } + ] + ], + + whitespace: [ + [/[ \t\r\n]+/, 'white'], + [/\/\*/, 'comment', '@comment'], + [/\/\/.*$/, 'comment'], + [/##.*$/, 'comment'] + ] + } +} as languages.IMonarchLanguage +export default monarch diff --git a/webui/src/views/settings/components/script/aviatorscript/suggestions.ts b/webui/src/views/settings/components/script/aviatorscript/suggestions.ts new file mode 100644 index 000000000..63e60b848 --- /dev/null +++ b/webui/src/views/settings/components/script/aviatorscript/suggestions.ts @@ -0,0 +1,807 @@ +import { languages } from 'monaco-editor' + +const suggestions = [ + { + label: 'math', + kind: languages.CompletionItemKind.Text, + insertText: 'math.', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'println', + kind: languages.CompletionItemKind.Text, + insertText: 'println(${0:text})', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'for in', + kind: languages.CompletionItemKind.Snippet, + insertText: ['for ${1:x} in ${2:object} {', '\t${3:statement};', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'for in range', + kind: languages.CompletionItemKind.Snippet, + insertText: ['for ${1:i} in range(0, ${2:N}) {', '\t${3:statement};', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'while', + kind: languages.CompletionItemKind.Snippet, + insertText: ['while (${1:condition}) {', '\t$0', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'fn', + kind: languages.CompletionItemKind.Snippet, + insertText: ['fn ${1:name}(${2:paramList}) {', '\t${3}', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'try-catch', + kind: languages.CompletionItemKind.Snippet, + insertText: ['try {', '${1:statement1};', '} catch(e){', '\t$0', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'try-catch-finally', + kind: languages.CompletionItemKind.Snippet, + insertText: [ + 'try {', + '\t${1:statement1};', + '} catch(e){', + '\t$0', + '} finally {', + '\t$0', + '}' + ].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'let name', + kind: languages.CompletionItemKind.Keyword, + insertText: 'let ${1:name};', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'let name = value', + kind: languages.CompletionItemKind.Keyword, + insertText: 'let ${1:name}=$0;', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'true', + kind: languages.CompletionItemKind.Keyword, + insertText: 'true', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'false', + kind: languages.CompletionItemKind.Keyword, + insertText: 'false', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'use', + kind: languages.CompletionItemKind.Keyword, + insertText: 'use', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'break', + kind: languages.CompletionItemKind.Keyword, + insertText: 'break;', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'continue', + kind: languages.CompletionItemKind.Keyword, + insertText: 'continue;', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'throw', + kind: languages.CompletionItemKind.Keyword, + insertText: 'throw;', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'return', + kind: languages.CompletionItemKind.Keyword, + insertText: 'return', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'lambda', + kind: languages.CompletionItemKind.Keyword, + insertText: 'lambda', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'end', + kind: languages.CompletionItemKind.Keyword, + insertText: 'end;', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'new', + kind: languages.CompletionItemKind.Keyword, + insertText: 'new ', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'nil', + kind: languages.CompletionItemKind.Keyword, + insertText: 'nil', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'end', + kind: languages.CompletionItemKind.Keyword, + insertText: 'end;', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'assert', + kind: languages.CompletionItemKind.Keyword, + insertText: 'assert(${1:condition})', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'if', + kind: languages.CompletionItemKind.Snippet, + insertText: ['if (${1:condition}) {', '\t$0', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + documentation: 'If-Else Statement' + }, + { + label: 'if-else', + kind: languages.CompletionItemKind.Snippet, + insertText: ['if (${1:condition}) {', '\t$0', '} else {', '\t', '}'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + documentation: 'If-Else Statement' + }, + { + label: 'if-elseif-else', + kind: languages.CompletionItemKind.Snippet, + insertText: ['if (${1:condition}) {', '\t$0', '} elsif {', '\t', '} else {', '\t', '}'].join( + '\n' + ), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + documentation: 'If-Else Statement' + }, + { + label: 'let-lambda', + kind: languages.CompletionItemKind.Snippet, + insertText: ['let ${1:name} = lambda (${2:x}) -> ', '\t$0', 'end;'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + documentation: 'If-Else Statement' + }, + { + label: 'lambda', + kind: languages.CompletionItemKind.Snippet, + insertText: ['lambda (${1:x}) -> ', '\t$0', 'end;'].join('\n'), + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + documentation: 'If-Else Statement' + }, + { + label: 'assert(predicate, [msg])', + kind: languages.CompletionItemKind.Snippet, + insertText: 'assert($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'sysdate()', + kind: languages.CompletionItemKind.Snippet, + insertText: 'sysdate($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'rand()', + kind: languages.CompletionItemKind.Snippet, + insertText: 'rand($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'rand(n)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'rand($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'cmp(x, y)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'cmp($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'print([out],obj)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'print($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'println([out],obj)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'println($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'p([out], obj)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'p($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'pst([out], e);', + kind: languages.CompletionItemKind.Snippet, + insertText: 'pst($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'now()', + kind: languages.CompletionItemKind.Snippet, + insertText: 'now($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'long(v)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'long($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'double(v)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'double($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'boolean(v)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'boolean($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'str(v)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'str($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'bigint(x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'bigint($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'decimal(x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'decimal($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'identity(v)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'identity($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'type(x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'type($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'is_a(x, class)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'is_a($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'is_def(x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'is_def($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'undef(x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'undef($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'range(start, end, [step])', + kind: languages.CompletionItemKind.Snippet, + insertText: 'range($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'tuple(x1, x2, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'tuple($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'eval(script, [bindings], [cached])', + kind: languages.CompletionItemKind.Snippet, + insertText: 'eval($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'comparator(pred)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'comparator($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'max(x1, x2, x3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'max($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'min(x1, x2, x3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'min($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'constantly(x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'constantly($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'date_to_string(date,format)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'date_to_string($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string_to_date(source,format)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string_to_date($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.contains(s1,s2)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.contains($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.length(s)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.length($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.startsWith(s1,s2)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.startsWith($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.endsWith(s1,s2)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.endsWith($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.substring(s,begin[,end])', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.substring($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.indexOf(s1,s2)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.indexOf($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.split(target,regex,[limit])', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.split($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.join(seq,seperator)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.join($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.replace_first(s,regex,replacement)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.replace_first($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'string.replace_all(s,regex,replacement)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'string.replace_all($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.abs(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.abs($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.round(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.round($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.floor(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.floor($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.ceil(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.ceil($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.sqrt(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.sqrt($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.pow(d1,d2)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.pow($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.log(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.log($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.log10(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.log10($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.sin(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.sin($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.cos(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.cos($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.tan(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.tan($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.atan(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.atan($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.acos(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.acos($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'math.asin(d)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'math.asin($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'repeat(n, x)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'repeat($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'repeatedly(n, f)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'repeatedly($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.array(clazz, e1, e2,e3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.array($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.array_of(clazz, size1, size2, ...sizes)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.array_of($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.list(p1, p2, p3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.list($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.set(p1, p2, p3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.set($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.map(k1, v1, k2, v2, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.map($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.entry(key, value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.entry($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.keys(m)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.keys($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.vals(m)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.vals($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'into(to_seq, from_seq)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'into($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.contains_key(map, key)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.contains_key($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.add(coll, element)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.add($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.add(m, key, value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.add($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.put(coll, key, value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.put($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.remove(coll, element)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.remove($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.get(coll, element)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.get($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'map(seq,fun)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'map($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'filter(seq,predicate)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'filter($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'count(seq)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'count($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'is_empty(seq)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'is_empty($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'distinct(seq)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'distinct($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'is_distinct(seq)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'is_distinct($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'concat(seq1, seq2)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'concat($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'include(seq,element)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'include($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'sort(seq, [comparator])', + kind: languages.CompletionItemKind.Snippet, + insertText: 'sort($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'reverse(seq)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'reverse($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'reduce(seq,fun,init)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'reduce($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'take_while(seq, pred)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'take_while($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'drop_while(seq, pred)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'drop_while($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'group_by(seq, keyfn)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'group_by($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'zipmap(keys, values)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'zipmap($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.every(seq, fun)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.every($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.not_any(seq, fun)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.not_any($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.some(seq, fun)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.some($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.eq(value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.eq($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.neq(value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.neq($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.gt(value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.gt($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.ge(value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.ge($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.lt(value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.lt($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.le(value)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.le($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.nil()', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.nil($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.exists()', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.exists($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.and(p1, p2, p3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.and($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.or(p1, p2, p3, ...)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.or($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.min(coll)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.min($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'seq.max(coll)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'seq.max($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'load(path)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'load($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + }, + { + label: 'require(path)', + kind: languages.CompletionItemKind.Snippet, + insertText: 'require($0)', + insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + } +] + +export default suggestions diff --git a/webui/src/views/settings/components/script/index.vue b/webui/src/views/settings/components/script/index.vue new file mode 100644 index 000000000..fef53c163 --- /dev/null +++ b/webui/src/views/settings/components/script/index.vue @@ -0,0 +1,74 @@ + + diff --git a/webui/src/views/settings/index.vue b/webui/src/views/settings/index.vue index c92eb5945..0ddf27a99 100644 --- a/webui/src/views/settings/index.vue +++ b/webui/src/views/settings/index.vue @@ -14,15 +14,17 @@ {{ t('page.settings.tab.script') }} - + diff --git a/webui/vite.config.ts b/webui/vite.config.ts index dd657d77f..9f93d60da 100644 --- a/webui/vite.config.ts +++ b/webui/vite.config.ts @@ -46,7 +46,8 @@ export default defineConfig({ libs: ['pinia', 'vue-request', 'vue-i18n', 'vue-router', 'vue', '@vueuse/core', 'lodash'], arcoDesign: ['@arco-design/web-vue'], echarts: ['echarts', 'vue-echarts'], - uuid: ['uuid'] + uuid: ['uuid'], + monaco: ['monaco-editor'] } } } From 38c6257a4b3a9447c4124cc9d44bee10967598f6 Mon Sep 17 00:00:00 2001 From: Gaojianli Date: Wed, 30 Oct 2024 17:56:05 +0800 Subject: [PATCH 02/86] format --- .../profile/components/formArray.vue | 4 +++- .../views/settings/components/script/index.vue | 18 ++++++++---------- webui/src/views/settings/index.vue | 14 +++++++------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/webui/src/views/settings/components/profile/components/formArray.vue b/webui/src/views/settings/components/profile/components/formArray.vue index 8348dc829..e265710bf 100644 --- a/webui/src/views/settings/components/profile/components/formArray.vue +++ b/webui/src/views/settings/components/profile/components/formArray.vue @@ -11,7 +11,9 @@ } ]" > - {{ t('page.settings.tab.profile.form.ignoreAddress.action') }} + {{ + t('page.settings.tab.profile.form.ignoreAddress.action') + }} From 5a32a658dd793b550cb950ace95e524d8ca86552 Mon Sep 17 00:00:00 2001 From: Gaojianli <823805669hehe@gmail.com> Date: Fri, 1 Nov 2024 01:10:09 +0800 Subject: [PATCH 03/86] =?UTF-8?q?=E5=AE=8C=E5=85=A8=E5=8E=BB=E9=99=A4monac?= =?UTF-8?q?o=E7=9A=84=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webui/pnpm-lock.yaml | 120 ++-- .../script/aviatorscript/monarch.ts | 1 - .../script/aviatorscript/suggestions.ts | 530 +++++++++--------- .../settings/components/script/index.vue | 35 +- webui/vite.config.ts | 3 +- 5 files changed, 350 insertions(+), 339 deletions(-) diff --git a/webui/pnpm-lock.yaml b/webui/pnpm-lock.yaml index 2409d29fa..36533ffdf 100644 --- a/webui/pnpm-lock.yaml +++ b/webui/pnpm-lock.yaml @@ -417,139 +417,139 @@ packages: resolution: {integrity: sha512-XqVAi0O/KITtznpMK5TP4D+rWfwst5lrsbPbes5c5SPMGjwK7fuvlTdEmG2XUrxzYqDTIPshywyzdVYKooGdGA==} '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz} + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz} + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz} + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz} + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz} + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz} + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz} + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz} + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz} + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz} + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz} + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz} + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz} + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz} + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz} + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz} + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz} + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz} + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz} + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz} + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -607,7 +607,7 @@ packages: resolution: {integrity: sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==} '@guolao/vue-monaco-editor@1.5.4': - resolution: {integrity: sha512-eyBAqxJeDpV4mZYZSpNvh3xUgKCld5eEe0dBtjJhsy2+L0MB6PYFZ/FbPHNwskgp2RoIpfn1DLrIhXXE3lVbwQ==, tarball: https://registry.npmjs.org/@guolao/vue-monaco-editor/-/vue-monaco-editor-1.5.4.tgz} + resolution: {integrity: sha512-eyBAqxJeDpV4mZYZSpNvh3xUgKCld5eEe0dBtjJhsy2+L0MB6PYFZ/FbPHNwskgp2RoIpfn1DLrIhXXE3lVbwQ==} peerDependencies: '@vue/composition-api': ^1.7.1 monaco-editor: '>=0.43.0' @@ -666,7 +666,7 @@ packages: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} '@monaco-editor/loader@1.4.0': - resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==, tarball: https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz} + resolution: {integrity: sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==} peerDependencies: monaco-editor: '>= 0.21.0 < 1' @@ -743,82 +743,82 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz} + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz} + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz} + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz} + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} cpu: [x64] os: [darwin] '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz} + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz} + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz} + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz} + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz} + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz} + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz} + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz} + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} cpu: [x64] os: [linux] '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz} + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} cpu: [x64] os: [linux] '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz} + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz} + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz} + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} cpu: [x64] os: [win32] @@ -1048,11 +1048,11 @@ packages: engines: {node: '>=12'} antlr4@4.13.2: - resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==, tarball: https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz} + resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} engines: {node: '>=16'} anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, tarball: https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz} + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} argparse@2.0.1: @@ -1084,7 +1084,7 @@ packages: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, tarball: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz} + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} birpc@0.2.19: @@ -1172,7 +1172,7 @@ packages: engines: {node: '>=10'} chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} cipher-base@1.0.4: @@ -1334,7 +1334,7 @@ packages: engines: {node: '>=0.12'} errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://registry.npmjs.org/errno/-/errno-0.1.8.tgz} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true error-stack-parser-es@0.1.5: @@ -1484,7 +1484,7 @@ packages: engines: {node: '>=14.14'} fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -1531,7 +1531,7 @@ packages: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -1612,12 +1612,12 @@ packages: engines: {node: '>= 4'} image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true immutable@4.3.7: - resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==, tarball: https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz} + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -1642,7 +1642,7 @@ packages: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, tarball: https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz} + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} is-callable@1.2.7: @@ -1807,7 +1807,7 @@ packages: engines: {node: '>=12'} make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, tarball: https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz} + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} markdown-it@14.1.0: @@ -1840,7 +1840,7 @@ packages: hasBin: true mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz} + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true @@ -1865,7 +1865,7 @@ packages: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} monaco-editor@0.52.0: - resolution: {integrity: sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==, tarball: https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.0.tgz} + resolution: {integrity: sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==} mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} @@ -1889,7 +1889,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} needle@3.3.1: - resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==, tarball: https://registry.npmjs.org/needle/-/needle-3.3.1.tgz} + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} hasBin: true @@ -1901,7 +1901,7 @@ packages: engines: {node: '>=10'} normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, tarball: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz} + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} normalize.css@8.0.1: @@ -2120,7 +2120,7 @@ packages: engines: {node: '>= 6'} readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz} + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} resize-observer-polyfill@1.5.1: @@ -2166,7 +2166,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} sass@1.77.8: - resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==, tarball: https://registry.npmjs.org/sass/-/sass-1.77.8.tgz} + resolution: {integrity: sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==} engines: {node: '>=14.0.0'} hasBin: true @@ -2240,7 +2240,7 @@ packages: engines: {node: '>=0.10.0'} source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz} + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} speakingurl@14.0.1: @@ -2248,7 +2248,7 @@ packages: engines: {node: '>=0.10.0'} state-local@1.0.7: - resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==, tarball: https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz} + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} diff --git a/webui/src/views/settings/components/script/aviatorscript/monarch.ts b/webui/src/views/settings/components/script/aviatorscript/monarch.ts index 9389f7155..0cc5f66e0 100644 --- a/webui/src/views/settings/components/script/aviatorscript/monarch.ts +++ b/webui/src/views/settings/components/script/aviatorscript/monarch.ts @@ -1,5 +1,4 @@ import type { languages } from 'monaco-editor' - const monarch = { // Set defaultToken to invalid to see what you do not tokenize yet // defaultToken: 'invalid', diff --git a/webui/src/views/settings/components/script/aviatorscript/suggestions.ts b/webui/src/views/settings/components/script/aviatorscript/suggestions.ts index 63e60b848..ac2656ecd 100644 --- a/webui/src/views/settings/components/script/aviatorscript/suggestions.ts +++ b/webui/src/views/settings/components/script/aviatorscript/suggestions.ts @@ -1,51 +1,51 @@ -import { languages } from 'monaco-editor' +import { type MonacoEditor } from '@guolao/vue-monaco-editor' -const suggestions = [ +const getSuggestion = (moncaco: MonacoEditor) => [ { label: 'math', - kind: languages.CompletionItemKind.Text, + kind: moncaco.languages.CompletionItemKind.Text, insertText: 'math.', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'println', - kind: languages.CompletionItemKind.Text, + kind: moncaco.languages.CompletionItemKind.Text, insertText: 'println(${0:text})', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'for in', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['for ${1:x} in ${2:object} {', '\t${3:statement};', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'for in range', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['for ${1:i} in range(0, ${2:N}) {', '\t${3:statement};', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'while', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['while (${1:condition}) {', '\t$0', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'fn', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['fn ${1:name}(${2:paramList}) {', '\t${3}', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'try-catch', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['try {', '${1:statement1};', '} catch(e){', '\t$0', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'try-catch-finally', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: [ 'try {', '\t${1:statement1};', @@ -55,753 +55,753 @@ const suggestions = [ '\t$0', '}' ].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'let name', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'let ${1:name};', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'let name = value', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'let ${1:name}=$0;', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'true', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'true', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'false', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'false', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'use', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'use', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'break', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'break;', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'continue', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'continue;', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'throw', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'throw;', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'return', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'return', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'lambda', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'lambda', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'end', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'end;', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'new', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'new ', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'nil', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'nil', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'end', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'end;', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'assert', - kind: languages.CompletionItemKind.Keyword, + kind: moncaco.languages.CompletionItemKind.Keyword, insertText: 'assert(${1:condition})', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'if', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['if (${1:condition}) {', '\t$0', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, documentation: 'If-Else Statement' }, { label: 'if-else', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['if (${1:condition}) {', '\t$0', '} else {', '\t', '}'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, documentation: 'If-Else Statement' }, { label: 'if-elseif-else', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['if (${1:condition}) {', '\t$0', '} elsif {', '\t', '} else {', '\t', '}'].join( '\n' ), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, documentation: 'If-Else Statement' }, { label: 'let-lambda', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['let ${1:name} = lambda (${2:x}) -> ', '\t$0', 'end;'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, documentation: 'If-Else Statement' }, { label: 'lambda', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: ['lambda (${1:x}) -> ', '\t$0', 'end;'].join('\n'), - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet, + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, documentation: 'If-Else Statement' }, { label: 'assert(predicate, [msg])', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'assert($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'sysdate()', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'sysdate($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'rand()', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'rand($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'rand(n)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'rand($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'cmp(x, y)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'cmp($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'print([out],obj)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'print($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'println([out],obj)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'println($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'p([out], obj)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'p($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'pst([out], e);', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'pst($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'now()', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'now($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'long(v)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'long($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'double(v)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'double($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'boolean(v)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'boolean($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'str(v)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'str($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'bigint(x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'bigint($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'decimal(x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'decimal($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'identity(v)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'identity($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'type(x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'type($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'is_a(x, class)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'is_a($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'is_def(x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'is_def($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'undef(x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'undef($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'range(start, end, [step])', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'range($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'tuple(x1, x2, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'tuple($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'eval(script, [bindings], [cached])', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'eval($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'comparator(pred)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'comparator($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'max(x1, x2, x3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'max($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'min(x1, x2, x3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'min($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'constantly(x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'constantly($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'date_to_string(date,format)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'date_to_string($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string_to_date(source,format)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string_to_date($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.contains(s1,s2)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.contains($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.length(s)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.length($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.startsWith(s1,s2)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.startsWith($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.endsWith(s1,s2)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.endsWith($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.substring(s,begin[,end])', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.substring($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.indexOf(s1,s2)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.indexOf($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.split(target,regex,[limit])', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.split($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.join(seq,seperator)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.join($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.replace_first(s,regex,replacement)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.replace_first($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'string.replace_all(s,regex,replacement)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'string.replace_all($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.abs(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.abs($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.round(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.round($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.floor(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.floor($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.ceil(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.ceil($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.sqrt(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.sqrt($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.pow(d1,d2)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.pow($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.log(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.log($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.log10(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.log10($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.sin(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.sin($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.cos(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.cos($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.tan(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.tan($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.atan(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.atan($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.acos(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.acos($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'math.asin(d)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'math.asin($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'repeat(n, x)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'repeat($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'repeatedly(n, f)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'repeatedly($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.array(clazz, e1, e2,e3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.array($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.array_of(clazz, size1, size2, ...sizes)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.array_of($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.list(p1, p2, p3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.list($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.set(p1, p2, p3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.set($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.map(k1, v1, k2, v2, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.map($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.entry(key, value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.entry($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.keys(m)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.keys($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.vals(m)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.vals($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'into(to_seq, from_seq)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'into($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.contains_key(map, key)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.contains_key($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.add(coll, element)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.add($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.add(m, key, value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.add($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.put(coll, key, value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.put($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.remove(coll, element)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.remove($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.get(coll, element)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.get($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'map(seq,fun)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'map($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'filter(seq,predicate)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'filter($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'count(seq)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'count($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'is_empty(seq)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'is_empty($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'distinct(seq)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'distinct($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'is_distinct(seq)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'is_distinct($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'concat(seq1, seq2)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'concat($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'include(seq,element)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'include($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'sort(seq, [comparator])', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'sort($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'reverse(seq)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'reverse($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'reduce(seq,fun,init)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'reduce($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'take_while(seq, pred)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'take_while($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'drop_while(seq, pred)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'drop_while($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'group_by(seq, keyfn)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'group_by($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'zipmap(keys, values)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'zipmap($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.every(seq, fun)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.every($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.not_any(seq, fun)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.not_any($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.some(seq, fun)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.some($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.eq(value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.eq($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.neq(value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.neq($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.gt(value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.gt($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.ge(value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.ge($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.lt(value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.lt($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.le(value)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.le($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.nil()', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.nil($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.exists()', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.exists($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.and(p1, p2, p3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.and($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.or(p1, p2, p3, ...)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.or($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.min(coll)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.min($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'seq.max(coll)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'seq.max($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'load(path)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'load($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }, { label: 'require(path)', - kind: languages.CompletionItemKind.Snippet, + kind: moncaco.languages.CompletionItemKind.Snippet, insertText: 'require($0)', - insertTextRules: languages.CompletionItemInsertTextRule.InsertAsSnippet + insertTextRules: moncaco.languages.CompletionItemInsertTextRule.InsertAsSnippet } ] -export default suggestions +export default getSuggestion diff --git a/webui/src/views/settings/components/script/index.vue b/webui/src/views/settings/components/script/index.vue index 23caa2f46..01211d3dc 100644 --- a/webui/src/views/settings/components/script/index.vue +++ b/webui/src/views/settings/components/script/index.vue @@ -11,12 +11,16 @@ diff --git a/webui/vite.config.ts b/webui/vite.config.ts index 9f93d60da..dd657d77f 100644 --- a/webui/vite.config.ts +++ b/webui/vite.config.ts @@ -46,8 +46,7 @@ export default defineConfig({ libs: ['pinia', 'vue-request', 'vue-i18n', 'vue-router', 'vue', '@vueuse/core', 'lodash'], arcoDesign: ['@arco-design/web-vue'], echarts: ['echarts', 'vue-echarts'], - uuid: ['uuid'], - monaco: ['monaco-editor'] + uuid: ['uuid'] } } } From b5c8c177be1f8a7e9a6bc01b4388a22996ba3f1d Mon Sep 17 00:00:00 2001 From: Gaojianli <823805669hehe@gmail.com> Date: Fri, 1 Nov 2024 01:13:04 +0800 Subject: [PATCH 04/86] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webui/src/views/settings/components/script/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui/src/views/settings/components/script/index.vue b/webui/src/views/settings/components/script/index.vue index 01211d3dc..c4ec2f988 100644 --- a/webui/src/views/settings/components/script/index.vue +++ b/webui/src/views/settings/components/script/index.vue @@ -33,7 +33,7 @@ const MONACO_EDITOR_OPTIONS = { formatOnPaste: true } type onMountF = VueMonacoEditorEmitsOptions['mount'] -type editor = Parameters[0] // editor +type editor = Parameters[0] // monacoEditor.editor.IStandaloneCodeEditor const editorRef = shallowRef() const monacoRef = shallowRef() const handleMount: onMountF = (editor, monaco) => { From c47af765eb957d1ced5675f6c4e7c6990fddec21 Mon Sep 17 00:00:00 2001 From: Gaojianli <823805669hehe@gmail.com> Date: Fri, 1 Nov 2024 02:20:02 +0800 Subject: [PATCH 05/86] move to subdir --- .../editor}/aviatorscript/grammar/DSLLexer.ts | 0 .../aviatorscript/grammar/DSLParser.ts | 0 .../aviatorscript/grammar/GrammarParser.ts | 0 .../editor}/aviatorscript/monarch.ts | 0 .../editor}/aviatorscript/suggestions.ts | 0 .../script/components/editor/index.vue | 86 +++++++++++++++++++ .../settings/components/script/index.vue | 83 +----------------- webui/src/views/settings/index.vue | 4 +- 8 files changed, 90 insertions(+), 83 deletions(-) rename webui/src/views/settings/components/script/{ => components/editor}/aviatorscript/grammar/DSLLexer.ts (100%) rename webui/src/views/settings/components/script/{ => components/editor}/aviatorscript/grammar/DSLParser.ts (100%) rename webui/src/views/settings/components/script/{ => components/editor}/aviatorscript/grammar/GrammarParser.ts (100%) rename webui/src/views/settings/components/script/{ => components/editor}/aviatorscript/monarch.ts (100%) rename webui/src/views/settings/components/script/{ => components/editor}/aviatorscript/suggestions.ts (100%) create mode 100644 webui/src/views/settings/components/script/components/editor/index.vue diff --git a/webui/src/views/settings/components/script/aviatorscript/grammar/DSLLexer.ts b/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/DSLLexer.ts similarity index 100% rename from webui/src/views/settings/components/script/aviatorscript/grammar/DSLLexer.ts rename to webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/DSLLexer.ts diff --git a/webui/src/views/settings/components/script/aviatorscript/grammar/DSLParser.ts b/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/DSLParser.ts similarity index 100% rename from webui/src/views/settings/components/script/aviatorscript/grammar/DSLParser.ts rename to webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/DSLParser.ts diff --git a/webui/src/views/settings/components/script/aviatorscript/grammar/GrammarParser.ts b/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/GrammarParser.ts similarity index 100% rename from webui/src/views/settings/components/script/aviatorscript/grammar/GrammarParser.ts rename to webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/GrammarParser.ts diff --git a/webui/src/views/settings/components/script/aviatorscript/monarch.ts b/webui/src/views/settings/components/script/components/editor/aviatorscript/monarch.ts similarity index 100% rename from webui/src/views/settings/components/script/aviatorscript/monarch.ts rename to webui/src/views/settings/components/script/components/editor/aviatorscript/monarch.ts diff --git a/webui/src/views/settings/components/script/aviatorscript/suggestions.ts b/webui/src/views/settings/components/script/components/editor/aviatorscript/suggestions.ts similarity index 100% rename from webui/src/views/settings/components/script/aviatorscript/suggestions.ts rename to webui/src/views/settings/components/script/components/editor/aviatorscript/suggestions.ts diff --git a/webui/src/views/settings/components/script/components/editor/index.vue b/webui/src/views/settings/components/script/components/editor/index.vue new file mode 100644 index 000000000..e15c96843 --- /dev/null +++ b/webui/src/views/settings/components/script/components/editor/index.vue @@ -0,0 +1,86 @@ + + diff --git a/webui/src/views/settings/components/script/index.vue b/webui/src/views/settings/components/script/index.vue index c4ec2f988..611f525ec 100644 --- a/webui/src/views/settings/components/script/index.vue +++ b/webui/src/views/settings/components/script/index.vue @@ -1,85 +1,6 @@ diff --git a/webui/src/views/settings/index.vue b/webui/src/views/settings/index.vue index b613313a9..736ac20d5 100644 --- a/webui/src/views/settings/index.vue +++ b/webui/src/views/settings/index.vue @@ -14,7 +14,7 @@ {{ t('page.settings.tab.script') }} - + @@ -24,7 +24,7 @@ import { useI18n } from 'vue-i18n' import ConfigForm from './components/config/index.vue' import RunningStatus from './components/info/index.vue' import ProfileForm from './components/profile/index.vue' -const ScriptEditor = defineAsyncComponent(() => import('./components/script/index.vue')) +const ScriptList = defineAsyncComponent(() => import('./components/script/index.vue')) const { t } = useI18n() From 6e55f415534ba3a18f5486b5dd01cbca95415043 Mon Sep 17 00:00:00 2001 From: Ghost_chu Date: Fri, 1 Nov 2024 22:27:55 +0800 Subject: [PATCH 06/86] =?UTF-8?q?=E9=87=8D=E5=90=AF=E7=94=A8=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3=20+=20=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../database/dao/AbstractPBHDao.java | 6 ++--- .../database/dao/impl/HistoryDao.java | 2 +- .../module/impl/rule/ExpressionRule.java | 23 +++++++++---------- .../peerbanhelper/util/paging/Pageable.java | 2 +- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/ghostchu/peerbanhelper/database/dao/AbstractPBHDao.java b/src/main/java/com/ghostchu/peerbanhelper/database/dao/AbstractPBHDao.java index 06581887d..0ab8bb55a 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/database/dao/AbstractPBHDao.java +++ b/src/main/java/com/ghostchu/peerbanhelper/database/dao/AbstractPBHDao.java @@ -27,7 +27,7 @@ public CT callBatchTasks(Callable callable) throws SQLException { } public Page queryByPaging(QueryBuilder qb, Pageable pageable) throws SQLException { - var r = query(qb.offset(pageable.getQueryIndex() * pageable.getSize()).limit(pageable.getSize()).prepare()); + var r = query(qb.offset(pageable.getZeroBasedPage() * pageable.getSize()).limit(pageable.getSize()).prepare()); var ct = qb.offset(null).limit(null).countOf(); return new Page<>( pageable, @@ -40,7 +40,7 @@ public Page queryByPaging(Pageable pageable) throws SQLException { return new Page<>( pageable, countOf(), - query(queryBuilder().offset(pageable.getQueryIndex() * pageable.getSize()).limit(pageable.getSize()).prepare()) + query(queryBuilder().offset(pageable.getZeroBasedPage() * pageable.getSize()).limit(pageable.getSize()).prepare()) ); } @@ -61,7 +61,7 @@ public Page queryByPagingMatchArgs(T matchObject, Pageable pageable) throws S return new Page<>(pageable.getPage(), pageable.getSize(), 0, Collections.emptyList()); } else { where.and(fieldC); - var results = qb.offset(pageable.getQueryIndex() * pageable.getSize()).limit(pageable.getSize()).query(); + var results = qb.offset(pageable.getZeroBasedPage() * pageable.getSize()).limit(pageable.getSize()).query(); var ct = qb.countOf(); return new Page<>(pageable, ct, results); } diff --git a/src/main/java/com/ghostchu/peerbanhelper/database/dao/impl/HistoryDao.java b/src/main/java/com/ghostchu/peerbanhelper/database/dao/impl/HistoryDao.java index 7dfe3ab1f..889571700 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/database/dao/impl/HistoryDao.java +++ b/src/main/java/com/ghostchu/peerbanhelper/database/dao/impl/HistoryDao.java @@ -48,7 +48,7 @@ public Page getBannedIps(Pageable pageable, String filter) throws List mapped; try (GenericRawResults banLogs = builder .limit(pageable.getSize()) - .offset(pageable.getQueryIndex() * pageable.getSize()) + .offset(pageable.getZeroBasedPage() * pageable.getSize()) // .where().ge("banAt", twoWeeksAgo) .queryRaw()) { var results = banLogs.getResults(); diff --git a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java index c8c666a5a..16017f46c 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java +++ b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java @@ -15,8 +15,11 @@ import com.ghostchu.peerbanhelper.util.StrUtil; import com.ghostchu.peerbanhelper.util.context.IgnoreScan; import com.ghostchu.peerbanhelper.util.json.JsonUtil; +import com.ghostchu.peerbanhelper.util.paging.Page; +import com.ghostchu.peerbanhelper.util.paging.Pageable; import com.ghostchu.peerbanhelper.util.time.InfoHashUtil; import com.ghostchu.peerbanhelper.web.JavalinWebContainer; +import com.ghostchu.peerbanhelper.web.Role; import com.ghostchu.peerbanhelper.web.wrapper.StdResp; import com.ghostchu.simplereloadlib.ReloadResult; import com.ghostchu.simplereloadlib.Reloadable; @@ -107,17 +110,11 @@ public void onEnable() { } catch (Exception e) { log.error("Failed to load scripts", e); } -// javalinWebContainer.javalin() -// .get("/api/" + getConfigName() + "/scripts", this::listScripts, Role.USER_READ) -// .get("/api/" + getConfigName() + "/{scriptId}", this::readScript, Role.USER_READ) -// .put("/api/" + getConfigName() + "/{scriptId}", this::writeScript, Role.USER_WRITE) -// .delete("/api/" + getConfigName() + "/{scriptId}", this::deleteScript, Role.USER_WRITE); -// test code -// Torrent torrent = new TorrentImpl("1", "","",1,1.00d, 1,1); -// Peer peer = new PeerImpl(new PeerAddress("2408:8214:1551:bf20::1", 51413), -// "2408:8214:1551:bf20::1","-TR2940-", "Transmission 2.94", -// 1,1,1,1,0.0d,null); -// System.out.println(shouldBanPeer(torrent,peer, Executors.newVirtualThreadPerTaskExecutor())); + javalinWebContainer.javalin() + .get("/api/" + getConfigName() + "/scripts", this::listScripts, Role.USER_READ) + .get("/api/" + getConfigName() + "/{scriptId}", this::readScript, Role.USER_READ) + .put("/api/" + getConfigName() + "/{scriptId}", this::writeScript, Role.USER_WRITE) + .delete("/api/" + getConfigName() + "/{scriptId}", this::deleteScript, Role.USER_WRITE); } private void deleteScript(Context context) throws IOException { @@ -189,6 +186,7 @@ private boolean insideDirectory(File allowRange, File targetFile) { } private void listScripts(Context context) { + Pageable pageable = new Pageable(context); List list = new ArrayList<>(); for (Map.Entry entry : expressions.entrySet()) { var metadata = entry.getValue(); @@ -201,7 +199,8 @@ private void listScripts(Context context) { metadata.version() )); } - context.json(new StdResp(true, null, list)); + var r = list.stream().skip(pageable.getZeroBasedPage() * pageable.getSize()).limit(pageable.getSize()).toList(); + context.json(new StdResp(true, null, new Page<>(pageable, list.size(), r))); } diff --git a/src/main/java/com/ghostchu/peerbanhelper/util/paging/Pageable.java b/src/main/java/com/ghostchu/peerbanhelper/util/paging/Pageable.java index c4c9a82de..a660ae6c2 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/util/paging/Pageable.java +++ b/src/main/java/com/ghostchu/peerbanhelper/util/paging/Pageable.java @@ -28,7 +28,7 @@ public Pageable(Context context) { } } - public long getQueryIndex() { + public long getZeroBasedPage() { return this.page - 1; } From d294947cfce945452a591b3dc66f142cbb0c72f7 Mon Sep 17 00:00:00 2001 From: Ghost_chu Date: Fri, 1 Nov 2024 22:33:13 +0800 Subject: [PATCH 07/86] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=B0=8F=E5=B0=8F=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java index 16017f46c..e3cfce357 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java +++ b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java @@ -245,7 +245,7 @@ public CheckResult handleResult(Expression expression, Object returns) { } if (returns instanceof String string) { if (string.isBlank()) { - return pass(); + return null; } else if (string.startsWith("@")) { return new CheckResult(getClass(), PeerAction.SKIP, banDuration, new TranslationComponent(Lang.USER_SCRIPT_RULE), From d994f3769deb7a2c93de8a54cf0f96ba9130bcef Mon Sep 17 00:00:00 2001 From: Ghost_chu Date: Fri, 1 Nov 2024 22:41:35 +0800 Subject: [PATCH 08/86] =?UTF-8?q?=E9=98=BB=E6=AD=A2=E6=9D=A5=E8=87=AA?= =?UTF-8?q?=E4=BA=92=E8=81=94=E7=BD=91=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=AE=BF?= =?UTF-8?q?=E9=97=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/impl/rule/ExpressionRule.java | 18 +++++++++++++++--- .../com/ghostchu/peerbanhelper/text/Lang.java | 2 +- src/main/resources/lang/en_us/messages.yml | 3 ++- src/main/resources/lang/messages_fallback.yml | 1 + src/main/resources/lang/zh_cn/messages.yml | 1 + 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java index e3cfce357..f79918a87 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java +++ b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java @@ -10,9 +10,7 @@ import com.ghostchu.peerbanhelper.text.Lang; import com.ghostchu.peerbanhelper.text.TranslationComponent; import com.ghostchu.peerbanhelper.torrent.Torrent; -import com.ghostchu.peerbanhelper.util.HTTPUtil; -import com.ghostchu.peerbanhelper.util.IPAddressUtil; -import com.ghostchu.peerbanhelper.util.StrUtil; +import com.ghostchu.peerbanhelper.util.*; import com.ghostchu.peerbanhelper.util.context.IgnoreScan; import com.ghostchu.peerbanhelper.util.json.JsonUtil; import com.ghostchu.peerbanhelper.util.paging.Page; @@ -59,6 +57,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; +import static com.ghostchu.peerbanhelper.text.TextManager.tl; import static com.ghostchu.peerbanhelper.text.TextManager.tlUI; @Slf4j @@ -136,6 +135,11 @@ private void deleteScript(Context context) throws IOException { } private void writeScript(Context context) throws IOException { + if (!isSafeNetworkEnvironment(context)) { + context.status(HttpStatus.FORBIDDEN); + context.json(new StdResp(false, tl(locale(context), Lang.EXPRESS_RULE_ENGINE_DISALLOW_UNSAFE_SOURCE_ACCESS, context.ip()), null)); + return; + } var scriptId = context.pathParam("scriptId"); File readFile = getIfAllowedScriptId(scriptId); if (readFile == null) { @@ -179,6 +183,14 @@ private File getIfAllowedScriptId(String scriptId) { return null; } + private boolean isSafeNetworkEnvironment(Context context){ + var ip = IPAddressUtil.getIPAddress(context.ip()); + if(ip == null){ + throw new IllegalArgumentException("Safe check for IPAddress failed, the IP cannot be null"); + } + return ip.isLocal() && !MiscUtil.isUsingReserveProxy(context); + } + private boolean insideDirectory(File allowRange, File targetFile) { Path path = allowRange.toPath().normalize().toAbsolutePath(); Path target = targetFile.toPath().normalize().toAbsolutePath(); diff --git a/src/main/java/com/ghostchu/peerbanhelper/text/Lang.java b/src/main/java/com/ghostchu/peerbanhelper/text/Lang.java index 8d70a098d..10c993141 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/text/Lang.java +++ b/src/main/java/com/ghostchu/peerbanhelper/text/Lang.java @@ -420,7 +420,7 @@ public enum Lang { MODULE_AMM_TRAFFIC_MONITORING_TRAFFIC_ALERT_DESCRIPTION, DOWNLOADER_ALERT_TOO_MANY_FAILED_ATTEMPT_TITLE, DOWNLOADER_ALERT_TOO_MANY_FAILED_ATTEMPT_DESCRIPTION, DOWNLOADER_ALERT_TOO_MANY_FAILED_ATTEMPT_DESCRIPTION_FALLBACK, PROGRAM_OUT_OF_MEMORY_TITLE, PROGRAM_OUT_OF_MEMORY_DESCRIPTION, BAN_PEER_EXCEPTION, - PUSH_PROVIDER_TEST_TITLE, PUSH_PROVIDER_TEST_DESCRIPTION, PUSH_PROVIDER_TEST_SUCCESS, PUSH_PROVIDER_TEST_FAILED, PUSH_PROVIDER_TEST_ERROR; + PUSH_PROVIDER_TEST_TITLE, PUSH_PROVIDER_TEST_DESCRIPTION, PUSH_PROVIDER_TEST_SUCCESS, PUSH_PROVIDER_TEST_FAILED, PUSH_PROVIDER_TEST_ERROR, EXPRESS_RULE_ENGINE_DISALLOW_UNSAFE_SOURCE_ACCESS; public String getKey() { return name(); diff --git a/src/main/resources/lang/en_us/messages.yml b/src/main/resources/lang/en_us/messages.yml index 095270756..ae992c46c 100644 --- a/src/main/resources/lang/en_us/messages.yml +++ b/src/main/resources/lang/en_us/messages.yml @@ -478,4 +478,5 @@ PUSH_PROVIDER_TEST_DESCRIPTION: "If you see this message, it means that the push PUSH_PROVIDER_TEST_SUCCESS: "{} ({}) Test message sent successfully, please check if you have received the message" PUSH_PROVIDER_TEST_FAILED: "Test push service {} ({}) failed" PUSH_PROVIDER_TEST_ERROR: "Test push service {} ({}) failed: {}" -BAN_PEER_EXCEPTION: "An exception occurred while ban Peer, specific Peer unable to ban, Please report these information to PeerBanHelper developer" \ No newline at end of file +BAN_PEER_EXCEPTION: "An exception occurred while ban Peer, specific Peer unable to ban, Please report these information to PeerBanHelper developer" +EXPRESS_RULE_ENGINE_DISALLOW_UNSAFE_SOURCE_ACCESS: "For security reason, create AviatorScript via Internet or Reserve Proxy is disallowed." \ No newline at end of file diff --git a/src/main/resources/lang/messages_fallback.yml b/src/main/resources/lang/messages_fallback.yml index 0eb461063..3c6d47ace 100644 --- a/src/main/resources/lang/messages_fallback.yml +++ b/src/main/resources/lang/messages_fallback.yml @@ -477,3 +477,4 @@ PUSH_PROVIDER_TEST_SUCCESS: "{} ({}) 发送成功,请检查是否收到消息" PUSH_PROVIDER_TEST_FAILED: "测试推送服务 {} ({}) 失败" PUSH_PROVIDER_TEST_ERROR: "测试推送服务 {} ({}) 失败: {}" BAN_PEER_EXCEPTION: "封禁 Peer 时出现意外错误,指定 Peer 可能封禁失败,请将下面的信息报告给 PeerBanHelper 开发者" +EXPRESS_RULE_ENGINE_DISALLOW_UNSAFE_SOURCE_ACCESS: "因安全原因,不允许通过互联网或者反向代理创建 AviatorScript 脚本" \ No newline at end of file diff --git a/src/main/resources/lang/zh_cn/messages.yml b/src/main/resources/lang/zh_cn/messages.yml index 997ee2ed5..4184730e9 100644 --- a/src/main/resources/lang/zh_cn/messages.yml +++ b/src/main/resources/lang/zh_cn/messages.yml @@ -477,3 +477,4 @@ PUSH_PROVIDER_TEST_SUCCESS: "{} ({}) 发送成功,请检查是否收到消息" PUSH_PROVIDER_TEST_FAILED: "测试推送服务 {} ({}) 失败" PUSH_PROVIDER_TEST_ERROR: "测试推送服务 {} ({}) 失败: {}" BAN_PEER_EXCEPTION: "封禁 Peer 时出现意外错误,指定 Peer 可能封禁失败,请将下面的信息报告给 PeerBanHelper 开发者" +EXPRESS_RULE_ENGINE_DISALLOW_UNSAFE_SOURCE_ACCESS: "因安全原因,不允许通过互联网或者反向代理创建 AviatorScript 脚本" \ No newline at end of file From 13715949ad46ec31582a8c268cefdb08a9968543 Mon Sep 17 00:00:00 2001 From: Ghost_chu Date: Sat, 2 Nov 2024 00:11:06 +0800 Subject: [PATCH 09/86] =?UTF-8?q?=E5=85=81=E8=AE=B8=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=90=AF=E5=8A=A8=E5=8F=82=E6=95=B0=E7=A6=81?= =?UTF-8?q?=E7=94=A8=E5=AE=89=E5=85=A8=E7=BD=91=E7=BB=9C=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peerbanhelper/module/impl/rule/ExpressionRule.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java index f79918a87..3c37eb5fc 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java +++ b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java @@ -184,6 +184,10 @@ private File getIfAllowedScriptId(String scriptId) { } private boolean isSafeNetworkEnvironment(Context context){ + var value = System.getProperty("pbh.please-disable-safe-network-environment-check-i-know-this-is-very-dangerous-and-i-may-lose-my-data-and-hacker-may-attack-me-via-this-endpoint-and-steal-my-data-or-destroy-my-computer-i-am-fully-responsible-for-this-action-and-i-will-not-blame-the-developer-for-any-loss"); + if(value != null && value.equals("true")){ + return true; + } var ip = IPAddressUtil.getIPAddress(context.ip()); if(ip == null){ throw new IllegalArgumentException("Safe check for IPAddress failed, the IP cannot be null"); From 254c9004cce9fc4b9d9d1d83164ed66646c8b3b7 Mon Sep 17 00:00:00 2001 From: Ghost_chu Date: Sat, 2 Nov 2024 00:29:24 +0800 Subject: [PATCH 10/86] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20/route-view=20?= =?UTF-8?q?=E7=AB=AF=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ghostchu/peerbanhelper/web/JavalinWebContainer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/ghostchu/peerbanhelper/web/JavalinWebContainer.java b/src/main/java/com/ghostchu/peerbanhelper/web/JavalinWebContainer.java index 01545fbed..b94885645 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/web/JavalinWebContainer.java +++ b/src/main/java/com/ghostchu/peerbanhelper/web/JavalinWebContainer.java @@ -62,6 +62,7 @@ public JavalinWebContainer(ActivationManager activationManager) { c.showJavalinBanner = false; c.jsonMapper(gsonMapper); c.useVirtualThreads = true; + c.bundledPlugins.enableRouteOverview("/route-overview"); if (Main.getMainConfig().getBoolean("server.allow-cors") || System.getenv("PBH_ALLOW_CORS") != null || System.getProperty("PBH_ALLOW_CORS") != null From 4bd333fa097293e3a779a5ce58fc3091147e859f Mon Sep 17 00:00:00 2001 From: Ghost_chu Date: Sat, 2 Nov 2024 13:52:15 +0800 Subject: [PATCH 11/86] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peerbanhelper/module/impl/rule/ExpressionRule.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java index 6e85c96d1..9af022611 100644 --- a/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java +++ b/src/main/java/com/ghostchu/peerbanhelper/module/impl/rule/ExpressionRule.java @@ -48,10 +48,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -420,7 +417,7 @@ private ExpressionMetadata parseScriptMetadata(File file, String fallbackName, S try (BufferedReader reader = new BufferedReader(new StringReader(scriptContent))) { String name = fallbackName; String author = "Unknown"; - String version = "null"; + String version = "0.0"; boolean cacheable = true; boolean threadSafe = true; while (true) { @@ -445,7 +442,7 @@ private ExpressionMetadata parseScriptMetadata(File file, String fallbackName, S } return new ExpressionMetadata(file, name, author, cacheable, threadSafe, version, scriptContent); } catch (IOException e) { - return new ExpressionMetadata(file, "Failed to parse name", "Unknown", true, true, "null", scriptContent); + return new ExpressionMetadata(file, "Failed to parse name", "Unknown", true, true, "0.0", scriptContent); } } From f163076948120d1acf10739bc852a131ce7bea7d Mon Sep 17 00:00:00 2001 From: Gaojianli Date: Sat, 2 Nov 2024 16:12:07 +0800 Subject: [PATCH 12/86] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webui/src/api/model/script.ts | 26 +++ webui/src/service/script.ts | 69 +++++++ .../script/components/detailDrawer.vue | 108 ++++++++++ .../aviatorscript/grammar/GrammarParser.ts | 1 - .../script/components/editor/index.vue | 11 +- .../script/components/scriptList.vue | 187 ++++++++++++++++++ .../settings/components/script/index.vue | 27 ++- .../components/script/locale/en-US.ts | 21 ++ .../components/script/locale/zh-CN.ts | 21 ++ webui/src/views/settings/locale/en-US.ts | 5 +- webui/src/views/settings/locale/zh-CN.ts | 6 +- 11 files changed, 472 insertions(+), 10 deletions(-) create mode 100644 webui/src/api/model/script.ts create mode 100644 webui/src/service/script.ts create mode 100644 webui/src/views/settings/components/script/components/detailDrawer.vue create mode 100644 webui/src/views/settings/components/script/components/scriptList.vue create mode 100644 webui/src/views/settings/components/script/locale/en-US.ts create mode 100644 webui/src/views/settings/components/script/locale/zh-CN.ts diff --git a/webui/src/api/model/script.ts b/webui/src/api/model/script.ts new file mode 100644 index 000000000..d69e1aea6 --- /dev/null +++ b/webui/src/api/model/script.ts @@ -0,0 +1,26 @@ +export interface Script { + /** + * 脚本作者 + */ + author?: string + /** + * 运行结果是否可缓存 + */ + cacheable?: boolean + /** + * 脚本ID + */ + id: string + /** + * 脚本名称 + */ + name?: string + /** + * 是否线程安全 + */ + threadSafe?: boolean + /** + * 脚本版本号 + */ + version: string +} diff --git a/webui/src/service/script.ts b/webui/src/service/script.ts new file mode 100644 index 000000000..3ff9156ce --- /dev/null +++ b/webui/src/service/script.ts @@ -0,0 +1,69 @@ +import type { + CommonResponse, + CommonResponseWithoutData, + CommonResponseWithPage +} from '@/api/model/common' +import type { Script } from '@/api/model/script' +import { useEndpointStore } from '@/stores/endpoint' +import urlJoin from 'url-join' +import { getCommonHeader } from './utils' + +export class InsecureNetworkError extends Error { + static name = 'InsecureNetworkError' as const + name = InsecureNetworkError.name + + static is(err: unknown): err is InsecureNetworkError { + return (err as Error)?.name === InsecureNetworkError.name + } +} + +export async function GetScriptList(params: { + page: number + pageSize?: number +}): Promise> { + const endpointStore = useEndpointStore() + await endpointStore.serverAvailable + + const url = new URL( + urlJoin(endpointStore.endpoint, 'api/expression-engine/scripts'), + location.href + ) + url.searchParams.set('page', String(params.page)) + if (params.pageSize) { + url.searchParams.set('pageSize', String(params.pageSize)) + } + return fetch(url, { headers: getCommonHeader() }).then((res) => { + return res.json() + }) +} + +export async function GetScriptContent(id: string): Promise> { + const endpointStore = useEndpointStore() + await endpointStore.serverAvailable + + const url = new URL(urlJoin(endpointStore.endpoint, `api/expression-engine/${id}`), location.href) + return fetch(url, { headers: getCommonHeader() }).then((res) => { + return res.json() + }) +} + +export async function DeleteScript(id: string): Promise { + const endpointStore = useEndpointStore() + await endpointStore.serverAvailable + + const url = new URL(urlJoin(endpointStore.endpoint, `api/expression-engine/${id}`), location.href) + return fetch(url, { headers: getCommonHeader(), method: 'DELETE' }).then((res) => { + return res.json() + }) +} + +export async function UpsertScript( + name: string, + content: string +): Promise { + console.log('name:', name) + console.log('content', content) + return new Promise((resolve) => { + resolve({ success: true, message: 'success' }) + }) +} diff --git a/webui/src/views/settings/components/script/components/detailDrawer.vue b/webui/src/views/settings/components/script/components/detailDrawer.vue new file mode 100644 index 000000000..c110573f6 --- /dev/null +++ b/webui/src/views/settings/components/script/components/detailDrawer.vue @@ -0,0 +1,108 @@ + + diff --git a/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/GrammarParser.ts b/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/GrammarParser.ts index 3b43d094e..c5d5d71fb 100644 --- a/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/GrammarParser.ts +++ b/webui/src/views/settings/components/script/components/editor/aviatorscript/grammar/GrammarParser.ts @@ -34,7 +34,6 @@ export default class GrammarParser { parser.buildParseTrees = true const tree = parser.root() - // console.info(tree); class Visitor { visitChildren(ctx: ParserRuleContext) { diff --git a/webui/src/views/settings/components/script/components/editor/index.vue b/webui/src/views/settings/components/script/components/editor/index.vue index e15c96843..d89fb0405 100644 --- a/webui/src/views/settings/components/script/components/editor/index.vue +++ b/webui/src/views/settings/components/script/components/editor/index.vue @@ -1,6 +1,7 @@ diff --git a/webui/src/service/settings.ts b/webui/src/service/settings.ts index 1070717a6..617f92ad3 100644 --- a/webui/src/service/settings.ts +++ b/webui/src/service/settings.ts @@ -94,3 +94,14 @@ export async function GetBtnStatus(): Promise> { return res.json() }) } + +export async function GetHeapDumpFile() { + const endpointStore = useEndpointStore() + await endpointStore.serverAvailable + + const url = new URL(urlJoin(endpointStore.endpoint, 'api/general/heapdump'), location.href) + return fetch(url, { headers: getCommonHeader(), method: 'POST' }).then((res) => { + endpointStore.assertResponseLogin(res) + return res.blob() + }) +} diff --git a/webui/src/views/settings/components/info/index.vue b/webui/src/views/settings/components/info/index.vue index b2c52db5b..2d559d94a 100644 --- a/webui/src/views/settings/components/info/index.vue +++ b/webui/src/views/settings/components/info/index.vue @@ -335,23 +335,25 @@ {{ data?.data.jvm.runtime }} - - - - - {{ formatFileSize(data?.data.jvm.memory.heap.free ?? 0) }}   - {{ t('page.settings.tab.info.system.memory.available') }} - + + + + + + {{ formatFileSize(data?.data.jvm.memory.heap.free ?? 0) }}   + {{ t('page.settings.tab.info.system.memory.available') }} + + @@ -427,7 +429,12 @@