Compare commits

...

2 Commits

2 changed files with 36 additions and 40 deletions

View File

@ -20,10 +20,6 @@ export type EnvironmentChain<V extends VM<V>> = null | { rib: Environment<V>, ne
export type Environment<V extends VM<V>> = { [key: string]: Value<V> };
export type Frame<V extends VM<V>> = Closure<V> & { ip: number };
export class FuelCell {
fuel = 10000;
}
export class RuntimeError extends Error {}
export class FuelExhausted extends RuntimeError {}
export class StackUnderflow extends RuntimeError {}
@ -54,7 +50,7 @@ export function asToken(x: PreservesValue<unknown>): Token {
export class VM<Self extends VM<Self>> {
stack: Value<Self>[] = [];
rstack: Frame<Self>[] = [];
fuel = new FuelCell();
fuel = 10000;
debug = false;
static parse(program: string): Token[] {
@ -132,8 +128,8 @@ export class VM<Self extends VM<Self>> {
step(): boolean {
if (!this.popToPending()) return false;
if (this.fuel.fuel <= 0) throw new FuelExhausted("Fuel exhausted");
this.fuel.fuel--;
if (this.fuel <= 0) throw new FuelExhausted("Fuel exhausted");
this.fuel--;
const op = this.frame.code[this.frame.ip++];

View File

@ -56,59 +56,59 @@
estree-walker "^2.0.2"
picomatch "^2.3.1"
"@syndicate-lang/compiler@^0.13.1":
version "0.13.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.13.1.tgz#68dccbe1ae7cfddac4a6905d7c8edefaac12deac"
integrity sha512-XGA5OlszRWC3esDxkUq1gPW6qvcTH5F9aZy3//tVAYwS+Qy7M9O1MVkBKJCXhws7fJIcIRKWv1G5s6iT/LbLAA==
"@syndicate-lang/compiler@^0.13.2":
version "0.13.2"
resolved "https://registry.yarnpkg.com/@syndicate-lang/compiler/-/compiler-0.13.2.tgz#e66de9f5828efb88ebe62266d014e13620961996"
integrity sha512-GQa7GVkerWxoVqY3NtRZXS8aLqIsVfdA8KvgNSDb8fTNV8TKGLDxQRurtcCiuEKG9mtfnDTpk8i28HbijKw6fA==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.14.1":
version "0.14.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.14.1.tgz#58277a9f8cb441622fec2506c0a1f2011c1070f1"
integrity sha512-Nu6JH82ylaXNOMQZSv5QnNaegOnEraiZjfrl44STnxGtjELZbvbfjqf8YvyCM0Nz6Q65Ow/mfjM+yhxGrgzfmg==
"@syndicate-lang/core@*", "@syndicate-lang/core@^0.14.2":
version "0.14.2"
resolved "https://registry.yarnpkg.com/@syndicate-lang/core/-/core-0.14.2.tgz#ef43e73989b2e7e91c0e6f15def62825f212b9cf"
integrity sha512-9yk/2+oq2Rd23YWaxZdgmxoazzeoFKTSj25EDbN7/dqtNdZ2z5MU06XNHCzBiymtXMlFsn4qeF4TFqyuNE2Ddg==
dependencies:
"@preserves/core" ">=0.20.2"
"@preserves/schema" ">=0.21.10"
salty-crypto "0.3.1"
"@syndicate-lang/html@*":
version "0.14.4"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.14.4.tgz#6006d5a2af003951651162405466c4940a1ece7b"
integrity sha512-vnq+VxnVqyBKF6QuqSMCR6Eqr+PPBrAzdhoy1zqrBQmnTtLnZsrShHf5ZcFHOu8hXTbmb3mqILLT4EbpOxuKSw==
version "0.14.5"
resolved "https://registry.yarnpkg.com/@syndicate-lang/html/-/html-0.14.5.tgz#1059397e49eee90b69e03d5198c03bf14d4bb835"
integrity sha512-6NwVEOY53uHXMVIcJF5tIfzr11MYdDVf7+cUDsa83kI+RbtJ3UqwSSMV8Ri3jz16brVAQVb/nfBUW0c8fuh3mQ==
dependencies:
"@syndicate-lang/core" "^0.14.1"
"@syndicate-lang/core" "^0.14.2"
"@syndicate-lang/timer@*":
version "0.14.4"
resolved "https://registry.yarnpkg.com/@syndicate-lang/timer/-/timer-0.14.4.tgz#fd97c7bebac9d735639528b342ec67fa0bf0a257"
integrity sha512-FaPwfk6Dlikf24c4arVFBnN6AfM/aZde64wfB/LaCJwfFijWqFVsw3rdusm5FFVKti2+Dbdf8lshINCszQBy5Q==
version "0.14.5"
resolved "https://registry.yarnpkg.com/@syndicate-lang/timer/-/timer-0.14.5.tgz#b7fbcc817347c684a78b5d47cdc80aa5d214f3be"
integrity sha512-D6vng9qKEpDdKWZ1HBmHv5s+JytBZlYGBahmlYRdaGgy/Gx6Y/dVW9dKvQEJuZNM4RE9iVnrank+pREfnLD/Aw==
dependencies:
"@syndicate-lang/core" "^0.14.1"
"@syndicate-lang/core" "^0.14.2"
"@syndicate-lang/ts-plugin@*":
version "0.15.0"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.15.0.tgz#b7ad58e6427f97b07709f5c15514e14093ce44a8"
integrity sha512-xVztn9NaZLXYFwxBFfzkmOyN8Uhw2qR8D8bR/n5mxUweJGGLELo6SXmYOM/VEAJvawA3Zk3xLBYqB5VtQOyYDQ==
version "0.15.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ts-plugin/-/ts-plugin-0.15.1.tgz#850823165b0330fe5ddce8d028d6d597b6f2e1e8"
integrity sha512-P2ucYgjYLpvwXO3YlAzUKwW94pU5yGP1bRY2tuXVJcr9aoT/twNn20R3bBFgLJARH51oS9nW9fK6VzzzOEX4Sg==
dependencies:
"@syndicate-lang/compiler" "^0.13.1"
"@syndicate-lang/core" "^0.14.1"
"@syndicate-lang/compiler" "^0.13.2"
"@syndicate-lang/core" "^0.14.2"
"@syndicate-lang/tsc@*":
version "0.15.1"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.15.1.tgz#184c6d3a2db91607522fa87d9e33d8028450b38a"
integrity sha512-qvgXCYSgMdjkrCIZezwJsO0yLI5LHJ+srWEWQGBP/RuC/wnGPPFu6kY8Jen3G9eKFTLr2A5NWVEPyWFeqLe8YA==
version "0.15.2"
resolved "https://registry.yarnpkg.com/@syndicate-lang/tsc/-/tsc-0.15.2.tgz#a967f8d76a1450d674f12eb745c17d6742ad22ad"
integrity sha512-LCiiNpk+W6gdTnpV0RMtYn83IyfxTSaiwEzkKWIlec//+TnNt958Tn5uBnGty385MidfLRT+5AACNeTnAVxf0Q==
dependencies:
"@syndicate-lang/compiler" "^0.13.1"
"@syndicate-lang/core" "^0.14.1"
"@syndicate-lang/compiler" "^0.13.2"
"@syndicate-lang/core" "^0.14.2"
glob "^7.1.6"
yargs "^16.2.0"
"@syndicate-lang/ws-relay@*":
version "0.14.4"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ws-relay/-/ws-relay-0.14.4.tgz#4d446cec0a4579fabfe9dfcc40e04ff51ec4123b"
integrity sha512-SITEMOKSVK4Cs964/YnVeltbA9Ospg/k3KJuitUyIQcR6eBUMp5BKXIlTuwv9zmQK7zqsbOjZdBDhKTSNaksRw==
version "0.14.5"
resolved "https://registry.yarnpkg.com/@syndicate-lang/ws-relay/-/ws-relay-0.14.5.tgz#a02b01d2a4a5315ab7cbd38fd140b61c0a4eae62"
integrity sha512-n/zzPGZuI1yLpqg62gmo8FzUjFkQ6RHqC1jbMO7pWXsC/3p19rDpSHMRXCs+vkCV6rMt8WnGNnGkQNgUNbwvYA==
dependencies:
"@preserves/core" ">=0.20.2"
"@syndicate-lang/core" "^0.14.1"
"@syndicate-lang/core" "^0.14.2"
salty-crypto "0.3"
"@types/estree@0.0.39":
@ -140,9 +140,9 @@
integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
"@types/node@*":
version "18.13.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850"
integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==
version "18.15.11"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f"
integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==
"@types/resolve@1.20.2":
version "1.20.2"