progs/lexer/lexer.sc
changeset 959 787ef75ec006
parent 954 4a7ed272d46e
child 968 79cfee5e170b
equal deleted inserted replaced
958:6caee1c0222e 959:787ef75ec006
    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 {