-
-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
-;;
-