progs/lexer/lexer.sc
changeset 960 c7009356ddd8
parent 955 47acfd7f9096
child 969 0dfa2923a7c6
equal deleted inserted replaced
959:64ec1884d860 960:c7009356ddd8
    57 def nullable(r: Rexp) : Boolean = r match {
    57 def nullable(r: Rexp) : Boolean = r match {
    58   case ZERO => false
    58   case ZERO => false
    59   case ONE => true
    59   case ONE => true
    60   case CHAR(_) => false
    60   case CHAR(_) => false
    61   case ALT(r1, r2) => nullable(r1) || nullable(r2)
    61   case ALT(r1, r2) => nullable(r1) || nullable(r2)
    62   case SEQ(r1, r2) => nullable(r1) $$ nullable(r2)
    62   case SEQ(r1, r2) => nullable(r1) && nullable(r2)
    63   case STAR(_) => true
    63   case STAR(_) => true
    64   case RECD(_, r1) => nullable(r1)
    64   case RECD(_, r1) => nullable(r1)
    65 }
    65 }
    66 
    66 
    67 def der(c: Char, r: Rexp) : Rexp = r match {
    67 def der(c: Char, r: Rexp) : Rexp = r match {