diff options
author | Luc Maranget <luc.maranget@inria.fr> | 2002-10-29 16:23:37 +0000 |
---|---|---|
committer | Luc Maranget <luc.maranget@inria.fr> | 2002-10-29 16:23:37 +0000 |
commit | ebf4e7d266c4736102b05135f84deea6cb9d6d0a (patch) | |
tree | cc9905eaca9b5122d04fbb79a7ae0f0322ebefb5 /lex/parser.mly | |
parent | eb27311dd65fb4e18784ff528cb09a01a2779725 (diff) | |
download | ocaml-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.mly | 9 |
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 |