summaryrefslogtreecommitdiff
path: root/lex/parser.mly
diff options
context:
space:
mode:
authorLuc Maranget <luc.maranget@inria.fr>2002-10-29 16:23:37 +0000
committerLuc Maranget <luc.maranget@inria.fr>2002-10-29 16:23:37 +0000
commitebf4e7d266c4736102b05135f84deea6cb9d6d0a (patch)
treecc9905eaca9b5122d04fbb79a7ae0f0322ebefb5 /lex/parser.mly
parenteb27311dd65fb4e18784ff528cb09a01a2779725 (diff)
downloadocaml-ebf4e7d266c4736102b05135f84deea6cb9d6d0a.tar.gz
better expansion of +
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5199 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'lex/parser.mly')
-rw-r--r--lex/parser.mly9
1 files changed, 8 insertions, 1 deletions
diff --git a/lex/parser.mly b/lex/parser.mly
index 924f6658a4..fe3062ff38 100644
--- a/lex/parser.mly
+++ b/lex/parser.mly
@@ -35,6 +35,13 @@ let regexp_for_string s =
let char_class c1 c2 = Cset.interval c1 c2
+let rec remove_as = function
+ | Bind (e,_) -> remove_as e
+ | Epsilon|Eof|Characters _ as e -> e
+ | Sequence (e1, e2) -> Sequence (remove_as e1, remove_as e2)
+ | Alternative (e1, e2) -> Alternative (remove_as e1, remove_as e2)
+ | Repetition e -> Repetition (remove_as e)
+
%}
%token <string> Tident
@@ -126,7 +133,7 @@ regexp:
| regexp Tmaybe
{ Alternative(Epsilon, $1) }
| regexp Tplus
- { Sequence(Repetition ($1), $1) }
+ { Sequence(Repetition (remove_as $1), $1) }
| regexp Tor regexp
{ Alternative($1,$3) }
| regexp regexp %prec CONCAT