From 3e80ca51fc07d9df7feea57a3518d35cb86fc41b Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 8 Nov 1989 17:14:52 +0000 Subject: [PATCH] generate #defines for MAXREPLLEN, MAXEMREPLLEN --- util/ncgg/cgg.y | 14 +++++++++----- util/ncgg/extern.h | 6 ++++++ util/ncgg/output.c | 3 +++ util/ncgg/var.c | 6 ++++-- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/util/ncgg/cgg.y b/util/ncgg/cgg.y index 54251c142..0fea969cb 100644 --- a/util/ncgg/cgg.y +++ b/util/ncgg/cgg.y @@ -30,7 +30,6 @@ int emhere=0; /* lexical analyzer flag */ int optexact=0; /* Inside "with exact" rule */ int optstack=0; /* Inside with STACK rule */ int saferulefound=0; -int maxempatlen=0; int maxrule=0; int in_em_repl=0; /* set when in EM replacement part */ struct varinfo *defcost; @@ -727,6 +726,7 @@ stackpattern : WITH optexact { startline = lineno; } setlist optstack + { if (tokpatlen > maxtokpatlen) maxtokpatlen = tokpatlen; } ; optexact : /* empty */ @@ -866,8 +866,8 @@ gen_oplist yields : /* empty */ { $$ = 0; } - | YIELDS yieldlist - { $$ = $2; } + | YIELDS { tokrepllen = 0; } yieldlist + { $$ = $3; if (tokrepllen > maxtokrepllen) maxtokrepllen = tokrepllen; } ; yieldlist : /* empty */ @@ -877,14 +877,17 @@ yieldlist NEW($$,struct varinfo); $$->vi_next = $2; $$->vi_int[0] = $1.in_index; + tokrepllen++; } ; leaving : /* empty */ { $$ = 0; } - | LEAVING {emhere=1; in_em_repl=1; } leavelist - { emhere=0; in_em_repl=0; $$ = $3; } + | LEAVING {emhere=1; in_em_repl=1; emrepllen = 0; } leavelist + { emhere=0; in_em_repl=0; $$ = $3; + if (emrepllen > maxemrepllen) maxemrepllen = emrepllen; + } ; leavelist : leavelist_el @@ -897,6 +900,7 @@ leavelist_el $$->vi_next=0; $$->vi_int[0] = $1; $$->vi_int[1] = $2; + emrepllen++; } ; diff --git a/util/ncgg/extern.h b/util/ncgg/extern.h index 495df3426..9e805515f 100644 --- a/util/ncgg/extern.h +++ b/util/ncgg/extern.h @@ -12,10 +12,16 @@ extern int ntokens; extern int nsets; extern int ninstr; extern int empatlen; +extern int emrepllen; +extern int tokrepllen; extern int emmnem[]; extern int empatexpr; extern int codeindex; extern int tokpatlen; +extern int maxtokpatlen; +extern int maxempatlen; +extern int maxemrepllen; +extern int maxtokrepllen; extern int tokpatro[]; extern int tokpatset[]; extern int nallreg; diff --git a/util/ncgg/output.c b/util/ncgg/output.c index a49e3b535..7fc839637 100644 --- a/util/ncgg/output.c +++ b/util/ncgg/output.c @@ -582,6 +582,9 @@ outdefs() { cdef("TOKENSIZE",maxtokensize); cdef("MAXMEMBERS",maxmembers); cdef("LONGESTPATTERN",maxempatlen); + cdef("MAXPATLEN",maxtokpatlen); + cdef("MAXREPLLEN",maxtokrepllen); + cdef("MAXEMREPLLEN",maxemrepllen); cdef("MAXRULE",maxrule<16 ? 16 : maxrule); if (nsplit>0) { cdef("MAXSPLIT",maxsplit); diff --git a/util/ncgg/var.c b/util/ncgg/var.c index 25114bd39..9a7a630e8 100644 --- a/util/ncgg/var.c +++ b/util/ncgg/var.c @@ -23,9 +23,11 @@ int ntokens=1; int nsets; int ninstr; int codeindex; -int empatlen,emmnem[EMPATMAX]; +int empatlen,emrepllen,emmnem[EMPATMAX]; +int maxempatlen, maxemrepllen; int empatexpr; -int tokpatlen,tokpatset[TOKPATMAX],tokpatro[TOKPATMAX]; +int tokpatlen,tokrepllen,tokpatset[TOKPATMAX],tokpatro[TOKPATMAX]; +int maxtokpatlen, maxtokrepllen; int nallreg,allreg[MAXALLREG]; int cursetno = -1; int allsetno; -- 2.34.1