]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/pxp/pxp/m2parsergen/x.m2y
mathQL modified, stderr corrected to stdout im mathql_interpreter,
[helm.git] / helm / DEVEL / pxp / pxp / m2parsergen / x.m2y
1
2 type token =
3   A | B | C of int | EOF
4 ;;
5
6 %%
7
8 %token A
9 %token B
10 %token <> C
11 %token EOF
12
13 %%
14
15 r():
16   one:s()
17   {{ }}
18   b:B
19   two:B?
20   three:s()
21   {{ prerr_endline ("Result: " ^ string_of_int three) }}
22 ? {{ prerr_endline ("ERROR: " ^ !yy_position) }}
23
24 s():
25   A 
26   {{ }}
27   {{ prerr_endline "A"; 0 }}
28 | B 
29   {{ }}
30   {{ prerr_endline "B"; 0 }}
31 | n:C
32   {{ }}
33   {{ prerr_endline ("C: " ^ string_of_int n); n }}
34 %%
35
36 let input = ref [ A; B; B; B; C 5; EOF ] in
37 let current() = List.hd !input in
38 let next_token () =
39   prerr_endline "get_next";
40   input := List.tl !input;
41   List.hd !input
42 in
43 parse_r current next_token
44 ;;
45