Skip to content

Commit 2bee7b5

Browse files
committed
fix up phases (don't rely on isFilter, ...)
1 parent 886e745 commit 2bee7b5

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

mcparser.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ namespace microcode {
4343
progToStringRet = res.map((ps, i) => `Page ${i + 1}\n${ps}`).join("\n")
4444
}
4545

46+
enum Phase {
47+
Sensor,
48+
Filter,
49+
Actuator,
50+
Modifier,
51+
}
52+
4653
export let parseProgRet: ProgramDefn = undefined
4754
//% shim=TD_NOOP
4855
export function parseProg(str: string): void {
@@ -57,13 +64,19 @@ namespace microcode {
5764
return tid
5865
}
5966
}
60-
const addTile = (rule: RuleDefn, tile: Tile) => {
67+
let phase: Phase = Phase.Sensor
68+
const addTile = (rule: RuleDefn, tile: Tile, phase: Phase) => {
6169
control.assert(rule != undefined, `No Rule definition`)
62-
const tid = getTid(tile)
63-
if (isSensor(tid)) rule.push(tile, "sensors", false)
64-
else if (isFilter(tid)) rule.push(tile, "filters", false)
65-
else if (isModifier(tid)) rule.push(tile, "modifiers", false)
66-
else rule.push(tile, "actuators", false)
70+
if (phase == Phase.Sensor) {
71+
rule.push(tile, "sensors", false)
72+
phase = Phase.Filter
73+
} else if (phase == Phase.Filter) rule.push(tile, "filters", false)
74+
else if (phase == Phase.Modifier)
75+
rule.push(tile, "modifiers", false)
76+
else {
77+
rule.push(tile, "actuators", false)
78+
phase = Phase.Modifier
79+
}
6780
}
6881
// tokenizer
6982
let cursor = 0
@@ -132,11 +145,13 @@ namespace microcode {
132145
control.assert(currPage != undefined, `No Page defined`)
133146
if (currRule) currPage.rules.push(currRule)
134147
currRule = new RuleDefn()
148+
phase = Phase.Sensor
135149
} else if (tok == "Do") {
136150
control.assert(currRule != undefined, `No When defined`)
151+
phase = Phase.Actuator
137152
} else {
138153
currTile = token2tile(tok)
139-
addTile(currRule, currTile)
154+
addTile(currRule, currTile, phase)
140155
}
141156
}
142157
if (currRule) currPage.rules.push(currRule)

0 commit comments

Comments
 (0)