progs/lexer/lexer.sc
changeset 792 1f9a45fb5429
parent 757 b0ff6121cb9a
child 793 b5a2d033679f
equal deleted inserted replaced
791:d27d35a0164a 792:1f9a45fb5429
   302 
   302 
   303 
   303 
   304 @doc("All tests.")
   304 @doc("All tests.")
   305 @main
   305 @main
   306 def all() = { small(); fib() ; loops() } 
   306 def all() = { small(); fib() ; loops() } 
       
   307 
       
   308 
       
   309 val SYM1 = RANGE("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz_.-")
       
   310 val NAME = RECD("name", PLUS(SYM1))
       
   311 
       
   312 val SYM2 = RANGE("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz-")
       
   313 val DOMAIN = RECD("domain", PLUS(SYM2))
       
   314 
       
   315 val RE = RANGE("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz.")
       
   316 val TOPLEVEL = RECD("tl", (RE ~ RE) |
       
   317                           (RE ~ RE ~ RE) | 
       
   318                           (RE ~ RE ~ RE ~ RE) | 
       
   319                           (RE ~ RE ~ RE ~ RE ~ RE) |
       
   320                           (RE ~ RE ~ RE ~ RE ~ RE ~ RE))
       
   321 
       
   322 val EMAIL = NAME ~ "@" ~ DOMAIN ~ "." ~ TOPLEVEL
       
   323 
       
   324 println(lexing_simp(EMAIL, "christian.urban@kcl.ac.uk"))