@@ -41,18 +41,6 @@ object NElement {
4141 @ strictpure override def toST : ST =
4242 st """ NElement.Ref( $isTerminal, " $ruleName", u32" ${conversions.U32 .toZ(num)}") """
4343 }
44- @ datatype class Opt (val ruleName : String , val num : U32 ) extends NElement {
45- @ strictpure override def toST : ST =
46- st """ NElement.Opt(" $ruleName", u32" ${conversions.U32 .toZ(num)}") """
47- }
48- @ datatype class Star (val ruleName : String , val num : U32 ) extends NElement {
49- @ strictpure override def toST : ST =
50- st """ NElement.Star(" $ruleName", u32" ${conversions.U32 .toZ(num)}") """
51- }
52- @ datatype class Plus (val ruleName : String , val num : U32 ) extends NElement {
53- @ strictpure override def toST : ST =
54- st """ NElement.Plus(" $ruleName", u32" ${conversions.U32 .toZ(num)}") """
55- }
5644}
5745@ datatype trait NRule {
5846 @ pure def name : String
@@ -106,18 +94,6 @@ object NGrammar {
10694 w.writeB(e.isTerminal)
10795 w.writeString(e.ruleName)
10896 w.writeU32(e.num)
109- case e : NElement .Opt =>
110- w.writeZ(2 )
111- w.writeString(e.ruleName)
112- w.writeU32(e.num)
113- case e : NElement .Star =>
114- w.writeZ(3 )
115- w.writeString(e.ruleName)
116- w.writeU32(e.num)
117- case e : NElement .Plus =>
118- w.writeZ(4 )
119- w.writeString(e.ruleName)
120- w.writeU32(e.num)
12197 }
12298 }
12399
@@ -133,18 +109,6 @@ object NGrammar {
133109 val ruleName = r.readString()
134110 val num = r.readU32()
135111 return NElement .Ref (isTerminal = isTerminal, ruleName = ruleName, num = num)
136- case 2 =>
137- val ruleName = r.readString()
138- val num = r.readU32()
139- return NElement .Opt (ruleName = ruleName, num = num)
140- case 3 =>
141- val ruleName = r.readString()
142- val num = r.readU32()
143- return NElement .Star (ruleName = ruleName, num = num)
144- case 4 =>
145- val ruleName = r.readString()
146- val num = r.readU32()
147- return NElement .Plus (ruleName = ruleName, num = num)
148112 case _ => halt(s " Invalid NElement tag: $tag" )
149113 }
150114 }
@@ -253,22 +217,6 @@ object NGrammar {
253217 }
254218 return r
255219 }
256- def parseStar (ruleNum : U32 , i : Z ): Option [(Z , ISZ [ParseTree ])] = {
257- var trees = ISZ [ParseTree ]()
258- var j = i
259- while (pt.predict(ruleNum, lookahead(j)).nonEmpty) {
260- parseRule(ruleNum, j) match {
261- case Some ((next, ts)) =>
262- if (next == j) {
263- halt(s " Infeasible: rule did not consume any input " )
264- }
265- j = next
266- trees = trees ++ ts
267- case _ => halt(s " Infeasible " )
268- }
269- }
270- return Some ((j, trees))
271- }
272220 def parseElement (e : NElement , i : Z ): Option [(Z , ISZ [ParseTree ])] = {
273221 e match {
274222 case e : NElement .Str =>
@@ -299,23 +247,6 @@ object NGrammar {
299247 } else {
300248 return parseRule(e.num, i)
301249 }
302- case e : NElement .Opt =>
303- if (pt.predict(e.num, lookahead(i)).nonEmpty) {
304- return parseRule(e.num, i)
305- } else {
306- return Some ((i, ISZ ()))
307- }
308- case e : NElement .Plus =>
309- parseRule(e.num, i) match {
310- case Some ((j, ts)) =>
311- parseStar(e.num, j) match {
312- case Some ((k, ts2)) => return Some ((k, ts ++ ts2))
313- case _ => return Some ((j, ts))
314- }
315- case _ => return None ()
316- }
317- case e : NElement .Star => return parseStar(e.num, i)
318- case e => halt(s " Unsupported: $e" )
319250 }
320251 }
321252 def parseElements (elements : NRule .Elements , i : Z ): Option [(Z , ISZ [ParseTree ])] = {
0 commit comments