X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FDEVEL%2Fpxp%2Fpxp%2Fm2parsergen%2Fx.m2y;fp=helm%2FDEVEL%2Fpxp%2Fpxp%2Fm2parsergen%2Fx.m2y;h=3fa80b070d2a8276ae84ea547b1fb267cdde5a95;hb=c03d2c1fdab8d228cb88aaba5ca0f556318bebc5;hp=0000000000000000000000000000000000000000;hpb=758057e85325f94cd88583feb1fdf6b038e35055;p=helm.git diff --git a/helm/DEVEL/pxp/pxp/m2parsergen/x.m2y b/helm/DEVEL/pxp/pxp/m2parsergen/x.m2y new file mode 100644 index 000000000..3fa80b070 --- /dev/null +++ b/helm/DEVEL/pxp/pxp/m2parsergen/x.m2y @@ -0,0 +1,45 @@ + +type token = + A | B | C of int | EOF +;; + +%% + +%token A +%token B +%token <> C +%token EOF + +%% + +r(): + one:s() + {{ }} + b:B + two:B? + three:s() + {{ prerr_endline ("Result: " ^ string_of_int three) }} +? {{ prerr_endline ("ERROR: " ^ !yy_position) }} + +s(): + A + {{ }} + {{ prerr_endline "A"; 0 }} +| B + {{ }} + {{ prerr_endline "B"; 0 }} +| n:C + {{ }} + {{ prerr_endline ("C: " ^ string_of_int n); n }} +%% + +let input = ref [ A; B; B; B; C 5; EOF ] in +let current() = List.hd !input in +let next_token () = + prerr_endline "get_next"; + input := List.tl !input; + List.hd !input +in +parse_r current next_token +;; +