spaces replaced by tabs
This commit is contained in:
parent
7f6d1911e2
commit
e35b40b793
1 changed files with 70 additions and 70 deletions
|
@ -38,15 +38,15 @@ static p_order order,
|
||||||
maxorder;
|
maxorder;
|
||||||
static p_term t_list;
|
static p_term t_list;
|
||||||
static int t_cnt;
|
static int t_cnt;
|
||||||
static p_gram alt_table;
|
static p_gram alt_table;
|
||||||
static int n_alts;
|
static int n_alts;
|
||||||
static int max_alts;
|
static int max_alts;
|
||||||
#define ALTINCR 32
|
#define ALTINCR 32
|
||||||
|
|
||||||
static p_gram rule_table;
|
static p_gram rule_table;
|
||||||
static int n_rules;
|
static int n_rules;
|
||||||
static int max_rules;
|
static int max_rules;
|
||||||
#define RULEINCR 32
|
#define RULEINCR 32
|
||||||
|
|
||||||
/* Here are defined : */
|
/* Here are defined : */
|
||||||
STATIC p_order neworder();
|
STATIC p_order neworder();
|
||||||
|
@ -73,15 +73,15 @@ neworder(index) {
|
||||||
else sorder = po;
|
else sorder = po;
|
||||||
return po;
|
return po;
|
||||||
}
|
}
|
||||||
|
|
||||||
p_init()
|
p_init()
|
||||||
{
|
{
|
||||||
alt_table = (p_gram )alloc(ALTINCR*sizeof(t_gram));
|
alt_table = (p_gram )alloc(ALTINCR*sizeof(t_gram));
|
||||||
n_alts = 0;
|
n_alts = 0;
|
||||||
max_alts = ALTINCR;
|
max_alts = ALTINCR;
|
||||||
rule_table = (p_gram )alloc(RULEINCR*sizeof(t_gram));
|
rule_table = (p_gram )alloc(RULEINCR*sizeof(t_gram));
|
||||||
n_rules = 0;
|
n_rules = 0;
|
||||||
max_rules = RULEINCR;
|
max_rules = RULEINCR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ spec : { acount = 0; p_init(); }
|
||||||
;
|
;
|
||||||
|
|
||||||
def { register string p; }
|
def { register string p; }
|
||||||
: rule
|
: rule
|
||||||
/*
|
/*
|
||||||
* A grammar rule
|
* A grammar rule
|
||||||
*/
|
*/
|
||||||
|
@ -110,7 +110,7 @@ def { register string p; }
|
||||||
* A token declaration
|
* A token declaration
|
||||||
*/
|
*/
|
||||||
| C_START C_IDENT
|
| C_START C_IDENT
|
||||||
{ p = store(lextoken.t_string); }
|
{ p = store(lextoken.t_string); }
|
||||||
',' C_IDENT ';'
|
',' C_IDENT ';'
|
||||||
/*
|
/*
|
||||||
* A start symbol declaration
|
* A start symbol declaration
|
||||||
|
@ -168,7 +168,7 @@ rule { register p_nont p;
|
||||||
* grammar for a production rule
|
* grammar for a production rule
|
||||||
*/
|
*/
|
||||||
C_IDENT { temp = search(NONTERM,lextoken.t_string,BOTH);
|
C_IDENT { temp = search(NONTERM,lextoken.t_string,BOTH);
|
||||||
p = &nonterms[g_getcont(temp)];
|
p = &nonterms[g_getcont(temp)];
|
||||||
if (p->n_rule) {
|
if (p->n_rule) {
|
||||||
error(linecount,
|
error(linecount,
|
||||||
"Nonterminal %s already defined", lextoken.t_string);
|
"Nonterminal %s already defined", lextoken.t_string);
|
||||||
|
@ -183,7 +183,7 @@ rule { register p_nont p;
|
||||||
p->n_count = acount;
|
p->n_count = acount;
|
||||||
acount = 0;
|
acount = 0;
|
||||||
p->n_lineno = linecount;
|
p->n_lineno = linecount;
|
||||||
}
|
}
|
||||||
[ params(2) { p->n_flags |= PARAMS;
|
[ params(2) { p->n_flags |= PARAMS;
|
||||||
if (nparams > 15) {
|
if (nparams > 15) {
|
||||||
error(linecount,"Too many parameters");
|
error(linecount,"Too many parameters");
|
||||||
|
@ -198,7 +198,7 @@ rule { register p_nont p;
|
||||||
* Do not use p->n_rule now! The nonterms array
|
* Do not use p->n_rule now! The nonterms array
|
||||||
* might have been re-allocated.
|
* might have been re-allocated.
|
||||||
*/
|
*/
|
||||||
{ nonterms[g_getcont(temp)].n_rule = rr;}
|
{ nonterms[g_getcont(temp)].n_rule = rr;}
|
||||||
;
|
;
|
||||||
|
|
||||||
action(int n;)
|
action(int n;)
|
||||||
|
@ -218,20 +218,20 @@ productions(p_gram *p;)
|
||||||
int conflres = 0;
|
int conflres = 0;
|
||||||
int t = 0;
|
int t = 0;
|
||||||
int haddefault = 0;
|
int haddefault = 0;
|
||||||
int altcnt = 0;
|
int altcnt = 0;
|
||||||
int o_lc, n_lc;
|
int o_lc, n_lc;
|
||||||
} :
|
} :
|
||||||
{ o_lc = linecount; }
|
{ o_lc = linecount; }
|
||||||
simpleproduction(p,&conflres)
|
simpleproduction(p,&conflres)
|
||||||
{ if (conflres & DEF) haddefault = 1; }
|
{ if (conflres & DEF) haddefault = 1; }
|
||||||
[
|
[
|
||||||
[ '|' { n_lc = linecount; }
|
[ '|' { n_lc = linecount; }
|
||||||
simpleproduction(&prod,&t)
|
simpleproduction(&prod,&t)
|
||||||
{ if (n_alts >= max_alts-2) {
|
{ if (n_alts >= max_alts-2) {
|
||||||
alt_table = (p_gram ) ralloc(
|
alt_table = (p_gram ) ralloc(
|
||||||
(p_mem) alt_table,
|
(p_mem) alt_table,
|
||||||
(max_alts+=ALTINCR)*sizeof(t_gram));
|
(max_alts+=ALTINCR)*sizeof(t_gram));
|
||||||
}
|
}
|
||||||
if (t & DEF) {
|
if (t & DEF) {
|
||||||
if (haddefault) {
|
if (haddefault) {
|
||||||
error(n_lc,
|
error(n_lc,
|
||||||
|
@ -240,7 +240,7 @@ productions(p_gram *p;)
|
||||||
haddefault = 1;
|
haddefault = 1;
|
||||||
}
|
}
|
||||||
mkalt(*p,conflres,o_lc,&alt_table[n_alts++]);
|
mkalt(*p,conflres,o_lc,&alt_table[n_alts++]);
|
||||||
altcnt++;
|
altcnt++;
|
||||||
o_lc = n_lc;
|
o_lc = n_lc;
|
||||||
conflres = t;
|
conflres = t;
|
||||||
t = 0;
|
t = 0;
|
||||||
|
@ -250,11 +250,11 @@ productions(p_gram *p;)
|
||||||
error(n_lc,
|
error(n_lc,
|
||||||
"Resolver on last alternative not allowed");
|
"Resolver on last alternative not allowed");
|
||||||
}
|
}
|
||||||
mkalt(*p,conflres,n_lc,&alt_table[n_alts++]);
|
mkalt(*p,conflres,n_lc,&alt_table[n_alts++]);
|
||||||
altcnt++;
|
altcnt++;
|
||||||
g_settype((&alt_table[n_alts]),EORULE);
|
g_settype((&alt_table[n_alts]),EORULE);
|
||||||
*p = copyrule(&alt_table[n_alts-altcnt],altcnt+1);
|
*p = copyrule(&alt_table[n_alts-altcnt],altcnt+1);
|
||||||
}
|
}
|
||||||
|
|
|
|
||||||
{ if (conflres & ~DEF) {
|
{ if (conflres & ~DEF) {
|
||||||
error(o_lc,
|
error(o_lc,
|
||||||
|
@ -308,15 +308,15 @@ simpleproduction(p_gram *p; register int *conflres;)
|
||||||
/*
|
/*
|
||||||
* Optional conflict reslover
|
* Optional conflict reslover
|
||||||
*/
|
*/
|
||||||
C_IF expr { *conflres |= COND; }
|
C_IF expr { *conflres |= COND; }
|
||||||
| C_PREFER { *conflres |= PREFERING; }
|
| C_PREFER { *conflres |= PREFERING; }
|
||||||
| C_AVOID { *conflres |= AVOIDING; }
|
| C_AVOID { *conflres |= AVOIDING; }
|
||||||
]?
|
]?
|
||||||
[ %persistent elem(&elem)
|
[ %persistent elem(&elem)
|
||||||
{ if (n_rules >= max_rules-2) {
|
{ if (n_rules >= max_rules-2) {
|
||||||
rule_table = (p_gram) ralloc(
|
rule_table = (p_gram) ralloc(
|
||||||
(p_mem) rule_table,
|
(p_mem) rule_table,
|
||||||
(max_rules+=RULEINCR)*sizeof(t_gram));
|
(max_rules+=RULEINCR)*sizeof(t_gram));
|
||||||
}
|
}
|
||||||
kind = FIXED;
|
kind = FIXED;
|
||||||
cnt = 0;
|
cnt = 0;
|
||||||
|
@ -324,8 +324,8 @@ simpleproduction(p_gram *p; register int *conflres;)
|
||||||
[ repeats(&kind, &cnt)
|
[ repeats(&kind, &cnt)
|
||||||
{ if (g_gettype(&elem) != TERM) {
|
{ if (g_gettype(&elem) != TERM) {
|
||||||
rule_table[n_rules] = elem;
|
rule_table[n_rules] = elem;
|
||||||
g_settype((&rule_table[n_rules+1]),EORULE);
|
g_settype((&rule_table[n_rules+1]),EORULE);
|
||||||
mkterm(copyrule(&rule_table[n_rules],2),
|
mkterm(copyrule(&rule_table[n_rules],2),
|
||||||
0,
|
0,
|
||||||
elem.g_lineno,
|
elem.g_lineno,
|
||||||
&elem);
|
&elem);
|
||||||
|
@ -340,19 +340,19 @@ simpleproduction(p_gram *p; register int *conflres;)
|
||||||
g_gettype(q->t_rule) != EORULE) {
|
g_gettype(q->t_rule) != EORULE) {
|
||||||
while (g_gettype(q->t_rule) != EORULE) {
|
while (g_gettype(q->t_rule) != EORULE) {
|
||||||
rule_table[n_rules++] = *q->t_rule++;
|
rule_table[n_rules++] = *q->t_rule++;
|
||||||
elmcnt++;
|
elmcnt++;
|
||||||
if (n_rules >= max_rules-2) {
|
if (n_rules >= max_rules-2) {
|
||||||
rule_table = (p_gram) ralloc(
|
rule_table = (p_gram) ralloc(
|
||||||
(p_mem) rule_table,
|
(p_mem) rule_table,
|
||||||
(max_rules+=RULEINCR)*sizeof(t_gram));
|
(max_rules+=RULEINCR)*sizeof(t_gram));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
elem = *--(q->t_rule);
|
elem = *--(q->t_rule);
|
||||||
n_rules--;
|
n_rules--;
|
||||||
elmcnt--;
|
elmcnt--;
|
||||||
if (q == t_list - 1) {
|
if (q == t_list - 1) {
|
||||||
t_list--;
|
t_list--;
|
||||||
nterms--;
|
nterms--;
|
||||||
t_cnt++;
|
t_cnt++;
|
||||||
}
|
}
|
||||||
termdeleted = 1;
|
termdeleted = 1;
|
||||||
|
@ -383,24 +383,24 @@ simpleproduction(p_gram *p; register int *conflres;)
|
||||||
}
|
}
|
||||||
termdeleted = 0;
|
termdeleted = 0;
|
||||||
elmcnt++;
|
elmcnt++;
|
||||||
rule_table[n_rules++] = elem;
|
rule_table[n_rules++] = elem;
|
||||||
}
|
}
|
||||||
]* { register p_term q;
|
]* { register p_term q;
|
||||||
|
|
||||||
g_settype((&rule_table[n_rules]),EORULE);
|
g_settype((&rule_table[n_rules]),EORULE);
|
||||||
*p = 0;
|
*p = 0;
|
||||||
n_rules -= elmcnt;
|
n_rules -= elmcnt;
|
||||||
if (g_gettype(&rule_table[n_rules]) == TERM &&
|
if (g_gettype(&rule_table[n_rules]) == TERM &&
|
||||||
elmcnt == 1) {
|
elmcnt == 1) {
|
||||||
q = g_getterm(&rule_table[n_rules]);
|
q = g_getterm(&rule_table[n_rules]);
|
||||||
if (r_getkind(q) == FIXED &&
|
if (r_getkind(q) == FIXED &&
|
||||||
r_getnum(q) == 0) {
|
r_getnum(q) == 0) {
|
||||||
*p = q->t_rule;
|
*p = q->t_rule;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!*p) *p = copyrule(&rule_table[n_rules],
|
if (!*p) *p = copyrule(&rule_table[n_rules],
|
||||||
elmcnt+1);
|
elmcnt+1);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -411,7 +411,7 @@ mkterm(prod,flags,lc,result) p_gram prod; register p_gram result; {
|
||||||
* a grammar element containing it
|
* a grammar element containing it
|
||||||
*/
|
*/
|
||||||
register p_term q;
|
register p_term q;
|
||||||
|
|
||||||
if (! t_cnt) {
|
if (! t_cnt) {
|
||||||
t_cnt = 50;
|
t_cnt = 50;
|
||||||
t_list = (p_term) alloc(50 * sizeof(t_term));
|
t_list = (p_term) alloc(50 * sizeof(t_term));
|
||||||
|
@ -441,12 +441,12 @@ elem (register p_gram pres;)
|
||||||
]?
|
]?
|
||||||
productions(&p1)
|
productions(&p1)
|
||||||
']' {
|
']' {
|
||||||
mkterm(p1,t,ln,pres);
|
mkterm(p1,t,ln,pres);
|
||||||
}
|
}
|
||||||
|
|
|
|
||||||
C_IDENT { pe = search(UNKNOWN,lextoken.t_string,BOTH);
|
C_IDENT { pe = search(UNKNOWN,lextoken.t_string,BOTH);
|
||||||
*pres = *pe;
|
*pres = *pe;
|
||||||
}
|
}
|
||||||
[ params(0) { if (nparams > 14) {
|
[ params(0) { if (nparams > 14) {
|
||||||
error(linecount,"Too many parameters");
|
error(linecount,"Too many parameters");
|
||||||
} else g_setnpar(pres,nparams+1);
|
} else g_setnpar(pres,nparams+1);
|
||||||
|
@ -497,12 +497,12 @@ number(int *t;)
|
||||||
if (*t <= 0 || *t >= 8192) {
|
if (*t <= 0 || *t >= 8192) {
|
||||||
error(linecount,"Illegal number");
|
error(linecount,"Illegal number");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
firsts { register string p; }
|
firsts { register string p; }
|
||||||
: C_FIRST C_IDENT
|
: C_FIRST C_IDENT
|
||||||
{ p = store(lextoken.t_string); }
|
{ p = store(lextoken.t_string); }
|
||||||
',' C_IDENT ';'
|
',' C_IDENT ';'
|
||||||
{ /*
|
{ /*
|
||||||
* Store this %first in the list belonging
|
* Store this %first in the list belonging
|
||||||
|
@ -527,7 +527,7 @@ copyact(ch1,ch2,flag,level) char ch1,ch2; {
|
||||||
* Copy an action to file f. Opening bracket is ch1, closing bracket
|
* Copy an action to file f. Opening bracket is ch1, closing bracket
|
||||||
* is ch2.
|
* is ch2.
|
||||||
* If flag = 1, copy opening and closing parameters too.
|
* If flag = 1, copy opening and closing parameters too.
|
||||||
* If flag = 2, the copy is a parameter declaration copy.
|
* If flag = 2, the copy is a parameter declaration copy.
|
||||||
* Give an error message if not ending on a ';'
|
* Give an error message if not ending on a ';'
|
||||||
*/
|
*/
|
||||||
register FILE *f;
|
register FILE *f;
|
||||||
|
@ -592,8 +592,8 @@ copyact(ch1,ch2,flag,level) char ch1,ch2; {
|
||||||
break;
|
break;
|
||||||
case '\'':
|
case '\'':
|
||||||
case '"' :
|
case '"' :
|
||||||
/*
|
/*
|
||||||
* watch out for brackets in strings, they do not
|
* watch out for brackets in strings, they do not
|
||||||
* count !
|
* count !
|
||||||
*/
|
*/
|
||||||
match = ch;
|
match = ch;
|
||||||
|
|
Loading…
Reference in a new issue