aboutsummaryrefslogtreecommitdiff
path: root/coqpp
diff options
context:
space:
mode:
authorEnrico Tassi2019-03-05 11:42:17 +0100
committerEnrico Tassi2019-03-31 14:36:28 +0200
commit912eaf40d4efd29b7e3489d51c55b8b79206df79 (patch)
treeb4793da97a5513d460c3d08721cb40692eeddd71 /coqpp
parented996432fd079583afbb1797c92ad23f654b94eb (diff)
[parsing] Split Tok.t into Tok.t and Tok.pattern
Tokens were having a double role: - the output of the lexer - the items of grammar entries, especially terminals Now tokens are the output of the lexer, and this paves the way for using a richer data type, eg including Loc.t Patterns, as in Plexing.pattern, only represent patterns (for tokens) and now have a bit more structure (eg the wildcard is represented as None, not as "", while a regular pattern for "x" as Some "x")
Diffstat (limited to 'coqpp')
-rw-r--r--coqpp/coqpp_main.ml15
1 files changed, 3 insertions, 12 deletions
diff --git a/coqpp/coqpp_main.ml b/coqpp/coqpp_main.ml
index 90158c3aa3..c8a87e6cb6 100644
--- a/coqpp/coqpp_main.ml
+++ b/coqpp/coqpp_main.ml
@@ -212,17 +212,9 @@ let print_fun fmt (vars, body) =
(** Meta-program instead of calling Tok.of_pattern here because otherwise
violates value restriction *)
-let print_tok fmt = function
-| "", s -> fprintf fmt "Tok.KEYWORD %a" print_string s
-| "IDENT", s -> fprintf fmt "Tok.IDENT %a" print_string s
-| "PATTERNIDENT", s -> fprintf fmt "Tok.PATTERNIDENT %a" print_string s
-| "FIELD", s -> fprintf fmt "Tok.FIELD %a" print_string s
-| "INT", s -> fprintf fmt "Tok.INT %a" print_string s
-| "STRING", s -> fprintf fmt "Tok.STRING %a" print_string s
-| "LEFTQMARK", _ -> fprintf fmt "Tok.LEFTQMARK"
-| "BULLET", s -> fprintf fmt "Tok.BULLET %a" print_string s
-| "EOI", _ -> fprintf fmt "Tok.EOI"
-| _ -> failwith "Tok.of_pattern: not a constructor"
+let print_tok fmt (k,o) =
+ let print_pat fmt = print_opt fmt print_string in
+ fprintf fmt "(%a,%a)" print_string k print_pat o
let rec print_prod fmt p =
let (vars, tkns) = List.split p.gprod_symbs in
@@ -240,7 +232,6 @@ and print_symbols fmt = function
and print_symbol fmt tkn = match tkn with
| SymbToken (t, s) ->
- let s = match s with None -> "" | Some s -> s in
fprintf fmt "(Extend.Atoken (%a))" print_tok (t, s)
| SymbEntry (e, None) ->
fprintf fmt "(Extend.Aentry %s)" e