aboutsummaryrefslogtreecommitdiff
path: root/toplevel/metasyntax.ml
diff options
context:
space:
mode:
Diffstat (limited to 'toplevel/metasyntax.ml')
-rw-r--r--toplevel/metasyntax.ml7
1 files changed, 3 insertions, 4 deletions
diff --git a/toplevel/metasyntax.ml b/toplevel/metasyntax.ml
index d41ce28036..fbbae0a1b6 100644
--- a/toplevel/metasyntax.ml
+++ b/toplevel/metasyntax.ml
@@ -391,15 +391,13 @@ let quote x =
else
x
-let is_symbol = function String s -> not (is_letter s.[0]) | _ -> false
-
let rec find_symbols c_current c_next c_last vars = function
| [] -> (vars, [])
- | String x :: sl when is_letter x.[0] ->
+ | String x :: sl when Lexer.is_normal_token x ->
+ Lexer.check_ident x;
let id = Names.id_of_string x in
if List.mem_assoc id vars then
error ("Variable "^x^" occurs more than once");
-(* let prec = if List.exists is_symbol sl then c_current else c_last in*)
let prec = if sl <> [] then c_current else c_last in
let (vars,l) = find_symbols c_next c_next c_last vars sl in
((id,prec)::vars, NonTerminal id :: l)
@@ -413,6 +411,7 @@ let rec find_symbols c_current c_next c_last vars = function
(vars, NonTerminal (prec, meta) :: l)
*)
| String s :: sl ->
+ Lexer.check_special_token s;
let (vars,l) = find_symbols c_next c_next c_last vars sl in
(vars, Terminal (strip s) :: l)
| WhiteSpace n :: sl ->