nitcc: add open-class regexp for tokens.
authorJean Privat <jean@pryen.org>
Wed, 9 Mar 2016 04:59:36 +0000 (23:59 -0500)
committerJean Privat <jean@pryen.org>
Thu, 10 Mar 2016 04:48:26 +0000 (23:48 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

contrib/nitcc/src/nitcc.sablecc
contrib/nitcc/src/nitcc_parser_gen.nit
contrib/nitcc/src/re2nfa.nit

index c3208ae..fb535a0 100644 (file)
@@ -67,6 +67,7 @@ re3 {-> re} =
        {id:} id |
        {par:} '(' re ')' |
        {class:} text '.' '.' text |
+       {openclass:} text '.' '.' '.' |
        {any:} 'Any' |
        {end:} 'End' |
        {text:} text ;
index c15238b..bf3d57b 100644 (file)
@@ -141,6 +141,7 @@ p_re3.new_alt("re_shortest", t_shortest, t_opar, p_re, t_cpar)
 p_re3.new_alt("re_longest", t_longest, t_opar, p_re, t_cpar)
 p_re3.new_alt("re_par", t_opar, p_re, t_cpar)
 p_re3.new_alt("re_class", p_text, t_dot, t_dot, p_text)
+p_re3.new_alt("re_openclass", p_text, t_dot, t_dot, t_dot)
 p_re3.new_alt("re_any", t_any)
 p_re3.new_alt("re_end", t_end)
 p_re3.new_alt("re_id", t_id)
index 886eaea..d523e51 100644 (file)
@@ -223,7 +223,7 @@ redef class Nre_class
                var c1 = children[0].children[0].value
                var c2 = children[3].children[0].value
                if c1.length != 1 or c2.length != 1 then
-                       print "Classes only works on single char"
+                       print "Classes expect a single char"
                        exit(1)
                        abort
                end
@@ -232,6 +232,20 @@ redef class Nre_class
        end
 end
 
+redef class Nre_openclass
+       redef fun make_rfa: Automaton
+       do
+               var c1 = children[0].children[0].value
+               if c1.length != 1 then
+                       print "Classes expect a single char"
+                       exit(1)
+                       abort
+               end
+               var a = new Automaton.cla(c1.chars.first.code_point, null)
+               return a
+       end
+end
+
 redef class Nre_any
        redef fun make_rfa: Automaton
        do