progs/lexer/lex.sc
changeset 1011 31e011ce66e3
parent 981 14e5ae1fb541
--- a/progs/lexer/lex.sc	Fri Oct 17 11:20:49 2025 +0100
+++ b/progs/lexer/lex.sc	Sun Oct 19 09:44:04 2025 +0200
@@ -51,9 +51,6 @@
   def ~ (s: Rexp) = SEQ(r, s)
 }
 
-// to use & for records, instead of $ which had
-// its precedence be changed in Scala 3
-
 val TEST = ("ab" | "ba").%
 
 def nullable(r: Rexp) : Boolean = r match {
@@ -148,18 +145,6 @@
 
 println(lex(STAR(STAR("a")), "aaa".toList))
 
-val re = ("a" | "ab") ~ ("c" | "bc")
-
-println(pders1("abc", re).toList.mkString("\n"))
-pders('a', pder('a', re))))
-draw(simp(der('a', der('a', der('a', re)))))
-
-size(simp(ders(, re)))
-size(simp(der('a', der('a', re))))
-size(simp(der('a', der('a', der('a', re)))))
-
-
-lex(re, "aaaaa".toList)
 
 // The Lexing Rules for the WHILE Language
 
@@ -190,21 +175,22 @@
 }
 import TAGS._
 
+
 extension (t: TAGS) {
-  def & (r: Rexp) = RECD[TAGS](t, r)
+  def $ (r: Rexp) = RECD[TAGS](t, r)
 }
 
 def lexing(r: Rexp, s: String) = 
   env[TAGS](lex(r, s.toList))
 
-val WHILE_REGS = ((Key & KEYWORD) | 
-                  (Id & ID) | 
-                  (Op & OP) | 
-                  (Num & NUM) | 
-                  (Semi & SEMI) | 
-                  (Str & STRING) |
-                  (Paren & (LPAREN | RPAREN)) | 
-                  (Wht & WHITESPACE)).%
+val WHILE_REGS = ((Key $ KEYWORD) | 
+                  (Id $ ID) | 
+                  (Op $ OP) | 
+                  (Num $ NUM) | 
+                  (Semi $ SEMI) | 
+                  (Str $ STRING) |
+                  (Paren $ (LPAREN | RPAREN)) | 
+                  (Wht $ WHITESPACE)).%
 
 
 // Two Simple While Tests