--- a/progs/lexer/lex.sc Wed Oct 21 14:55:20 2020 +0100
+++ b/progs/lexer/lex.sc Wed Oct 21 16:09:44 2020 +0100
@@ -11,7 +11,7 @@
case class SEQ(r1: Rexp, r2: Rexp) extends Rexp
case class STAR(r: Rexp) extends Rexp
case class RECD(x: String, r: Rexp) extends Rexp
- // records for extracting strings or tokens
+ // records for extracting strings or tokens
// values
abstract class Val
@@ -33,6 +33,8 @@
implicit def string2rexp(s : String) : Rexp =
charlist2rexp(s.toList)
+val HELLO : Rexp = "hello"
+
implicit def RexpOps(r: Rexp) = new {
def | (s: Rexp) = ALT(r, s)
def % = STAR(r)
@@ -48,6 +50,8 @@
def $ (r: Rexp) = RECD(s, r)
}
+val TEST = ("ab" | "ba").%
+
def nullable(r: Rexp) : Boolean = r match {
case ZERO => false
case ONE => true
@@ -149,8 +153,8 @@
val SEMI: Rexp = ";"
val OP: Rexp = ":=" | "=" | "-" | "+" | "*" | "!=" | "<" | ">"
val WHITESPACE = PLUS(" " | "\n" | "\t")
-val RPAREN: Rexp = "{"
-val LPAREN: Rexp = "}"
+val RPAREN: Rexp = "}"
+val LPAREN: Rexp = "{"
val STRING: Rexp = "\"" ~ SYM.% ~ "\""