Skip to content

Commit a8dbd84

Browse files
committed
execute -- DefineTransition -- call evaluate and define
- Mod -- has env
1 parent 9d567dc commit a8dbd84

File tree

6 files changed

+49
-12
lines changed

6 files changed

+49
-12
lines changed

TODO.md

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
execute -- DefineTransition -- call evaluate and define
21
execute -- Begin -- `createEnv` and run
32

4-
- [maybe] Mod -- has no env -- top level `evaluate`
5-
6-
7-
83
[connect] connectTransitionToInputs(net: Net, transition: Transition, places: Array<Place>)
94
[connect] connectTransitionToOutputs(net: Net, transition: Transition, places: Array<Place>)
105

src/lang/env/createEnv.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Env } from "../env"
2+
import { Mod } from "../mod"
3+
import { Net } from "../net"
4+
import { createNet } from "../net/createNet"
5+
6+
export function createEnv(
7+
mod: Mod,
8+
options?: {
9+
net?: Net
10+
},
11+
): Env {
12+
return {
13+
mod,
14+
net: options?.net || createNet(),
15+
locals: new Map(),
16+
}
17+
}

src/lang/env/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from "./Env"
2+
export * from "./createEnv"

src/lang/execute/execute.ts

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,36 @@
11
import { appendReport } from "../errors"
2-
// import { evaluate, evaluateOne, evaluateParameters } from "../evaluate"
3-
import { Mod } from "../mod"
4-
// import { Mod, define } from "../mod"
2+
import { EvaluateOptions, evaluateParameters } from "../evaluate"
3+
import { Mod, define } from "../mod"
54
import { Stmt } from "../stmt"
65

76
export async function execute(mod: Mod, stmt: Stmt): Promise<null> {
87
try {
8+
const options: EvaluateOptions = {}
9+
910
switch (stmt["@kind"]) {
1011
case "DefineTransition": {
11-
console.log("[execute / DefineTransition] TODO")
12+
const inputParameters = evaluateParameters(
13+
mod,
14+
mod.env,
15+
stmt.inputParameters,
16+
options,
17+
)
18+
const outputParameters = evaluateParameters(
19+
mod,
20+
mod.env,
21+
stmt.outputParameters,
22+
options,
23+
)
24+
define(mod, stmt.name, {
25+
"@type": "Definition",
26+
"@kind": "TransitionDefinition",
27+
mod,
28+
name: stmt.name,
29+
inputParameters,
30+
outputParameters,
31+
span: stmt.span,
32+
body: stmt.body,
33+
})
1234
return null
1335
}
1436

src/lang/mod/Mod.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Stmt } from "../stmt"
2+
import { Env } from "../env"
23
import { Definition } from "../definition"
34

45
export type Mod = {
6+
env: Env
57
url: URL
68
text: string
79
stmts: Array<Stmt>

src/lang/mod/createMod.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Loader } from "../../loader"
22
import { Stmt } from "../stmt"
33
// import { defineBuiltins } from "../builtins/defineBuiltins"
44
// import { createChecking } from "../checking/createChecking"
5-
// import { createEnv } from "../env/createEnv"
5+
import { createEnv } from "../env/createEnv"
66
import { Mod } from "./Mod"
77

88
export function createMod(options: {
@@ -19,9 +19,9 @@ export function createMod(options: {
1919
definitions: new Map(),
2020
// builtins: new Map(),
2121
// requiredMods: new Map(),
22-
} as Mod
22+
} as unknown as Mod
2323

24-
// mod.env = createEnv(mod)
24+
mod.env = createEnv(mod)
2525
// mod.checking = createChecking()
2626

2727
// defineBuiltins(mod)

0 commit comments

Comments
 (0)