progs/lexer/lexer.sc
changeset 792 34132a854d03
parent 757 ea0be0662be0
child 793 46cc69622a56
equal deleted inserted replaced
791:d47041b23498 792:34132a854d03
   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"))