diff options
author | Damien Doligez <damien.doligez-inria.fr> | 1996-09-05 17:36:14 +0000 |
---|---|---|
committer | Damien Doligez <damien.doligez-inria.fr> | 1996-09-05 17:36:14 +0000 |
commit | 30f1bdfd9e2c9645bca2261974d62154f67621e0 (patch) | |
tree | 096b31aea7096bbcb8de65d73dc78e599cc6f649 /yacc | |
parent | bcd1f0f833202d86975e5dba6a0808216cc0c728 (diff) | |
download | ocaml-30f1bdfd9e2c9645bca2261974d62154f67621e0.tar.gz |
"|" optionnel devant la première production
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@960 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'yacc')
-rw-r--r-- | yacc/reader.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/yacc/reader.c b/yacc/reader.c index 63688e354e..668fd55654 100644 --- a/yacc/reader.c +++ b/yacc/reader.c @@ -1092,6 +1092,8 @@ void advance_to_start() } +int at_first; + void start_rule(bp, s_lineno) register bucket *bp; int s_lineno; @@ -1104,6 +1106,7 @@ void start_rule(bp, s_lineno) plhs[nrules] = bp; rprec[nrules] = UNDEFINED; rassoc[nrules] = TOKEN; + at_first = 1; } @@ -1398,6 +1401,11 @@ void read_grammar() for (;;) { c = nextc(); + if (c == '|' && at_first){ + ++cptr; + c = nextc(); + } + at_first = 0; if (c == EOF) break; if (isalpha(c) || c == '_' || c == '.' || c == '$' || c == '\'' || c == '"') @@ -1723,7 +1731,7 @@ void pack_grammar() void print_grammar() { register int i, j, k; - int spacing; + int spacing = 0; register FILE *f = verbose_file; if (!vflag) return; |