progs/scala/tests.scala
changeset 169 072a701bb153
parent 168 6b0a1976f89a
child 195 c2d36c3cf8ad
equal deleted inserted replaced
168:6b0a1976f89a 169:072a701bb153
    29   def more() = s.length - i > 0
    29   def more() = s.length - i > 0
    30 
    30 
    31   def Regex() : Rexp = {
    31   def Regex() : Rexp = {
    32     val t = Term();
    32     val t = Term();
    33     if (more() && peek() == '|') {
    33     if (more() && peek() == '|') {
    34       eat ('|') ;
    34       eat ('|') ; 
    35       val r = Regex();
    35       ALT(t, Regex()) 
    36       ALT(t, r) 
       
    37     } 
    36     } 
    38     else t
    37     else t
    39   }
    38   }
    40 
    39 
    41   def Term() : Rexp = {
    40   def Term() : Rexp = {
    42     var f : Rexp = if (more() && peek() != ')' && peek() != '|') Factor() else ZERO;
    41     var f : Rexp = 
       
    42       if (more() && peek() != ')' && peek() != '|') Factor() else ZERO;
    43     while (more() && peek() != ')' && peek() != '|') {
    43     while (more() && peek() != ')' && peek() != '|') {
    44       var nextf = Factor();
    44       f = SEQ(f, Factor()) ;
    45       f = SEQ(f, nextf) ;
       
    46     }
    45     }
    47 
    46 
    48     f
    47     f
    49   }
    48   }
    50 
    49