Compare commits
2 Commits
c0ac9bc39c
...
970db3294f
Author | SHA1 | Date |
---|---|---|
Tony Garnock-Jones | 970db3294f | |
Tony Garnock-Jones | 7f5e4a2c73 |
10
src/cat.ts
10
src/cat.ts
|
@ -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++];
|
||||
|
||||
|
|
66
yarn.lock
66
yarn.lock
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue