@@ -22,11 +22,11 @@ namespace microcode {
2222 return tok
2323 }
2424 return (
25- "When " +
25+ "when " +
2626 toToken ( rule . sensor ) +
2727 " " +
2828 rule . filters . map ( tileToString ) . join ( " " ) +
29- " Do " +
29+ " do " +
3030 ( rule . actuators . length
3131 ? toToken ( rule . actuators [ 0 ] ) +
3232 " " +
@@ -40,7 +40,7 @@ namespace microcode {
4040 return res . join ( "\n" )
4141 }
4242 const res = prog . pages . map ( pageToString )
43- progToStringRet = res . map ( ( ps , i ) => `Page ${ i + 1 } \n${ ps } ` ) . join ( "\n" )
43+ progToStringRet = res . map ( ( ps , i ) => `page- ${ i } \n${ ps } ` ) . join ( "\n" )
4444 }
4545
4646 enum Phase {
@@ -107,6 +107,7 @@ namespace microcode {
107107 const prog = new ProgramDefn ( )
108108 prog . pages = [ ]
109109
110+ let nextPageNum = 1
110111 let currPage : PageDefn = undefined
111112 let currRule : RuleDefn = undefined
112113 let currTile : Tile = undefined
@@ -134,23 +135,34 @@ namespace microcode {
134135 continue
135136 }
136137 currTile = undefined
137- if ( tok == "Page" ) {
138+ if ( tok . indexOf ( "page-" ) == 0 ) {
139+ control . assert (
140+ tok . length == 6 ,
141+ `expected page-[1-5], got page-`
142+ )
143+ const pageNum = parseInt ( tok [ 5 ] )
144+ control . assert (
145+ pageNum == nextPageNum ,
146+ `expected page-${ nextPageNum } , got page-${ pageNum } `
147+ )
138148 if ( currPage ) {
139149 if ( currRule ) currPage . rules . push ( currRule )
140150 prog . pages . push ( currPage )
141151 currRule = undefined
142152 }
143153 currPage = new PageDefn ( )
144- getToken ( ) // consume page #
145- } else if ( tok == "When " ) {
146- control . assert ( currPage != undefined , `No Page defined` )
154+ nextPageNum ++
155+ } else if ( tok == "when " ) {
156+ control . assert ( currPage != undefined , `No page defined` )
147157 if ( currRule ) currPage . rules . push ( currRule )
148158 currRule = new RuleDefn ( )
149159 phase = Phase . Sensor
150- } else if ( tok == "Do " ) {
151- control . assert ( currRule != undefined , `No When defined` )
160+ } else if ( tok == "do " ) {
161+ control . assert ( currRule != undefined , `No when defined` )
152162 phase = Phase . Actuator
153163 } else {
164+ control . assert ( currPage != undefined , `No page defined` )
165+ control . assert ( currRule != undefined , `No when defined` )
154166 currTile = token2tile ( tok )
155167 addTile ( currRule , currTile )
156168 }
0 commit comments