changed some names of field selectors

This commit is contained in:
ceriel 1987-03-18 09:29:56 +00:00
parent 50a71251a1
commit 8e9f1f781c
6 changed files with 120 additions and 120 deletions

View file

@ -111,23 +111,23 @@ void code_val(e) register struct expr *e;
case E_VAR: { case E_VAR: {
register struct symbol *var=e->u.var; register struct symbol *var=e->u.var;
if (var->type&T_BUILTIN) if (var->s_type&T_BUILTIN)
Loe(var->info.vc.st.builtin, var->info.vc.offset); Loe(var->s_info.vc.st.builtin, var->s_info.vc.offset);
else else
if (var->info.vc.st.level==curr_level) if (var->s_info.vc.st.level==curr_level)
if (var->type&T_PARAM && (var->type&T_TYPE)!=T_VALUE) if (var->s_type&T_PARAM && (var->s_type&T_TYPE)!=T_VALUE)
Lil(var->info.vc.offset); Lil(var->s_info.vc.offset);
else else
Lol(var->info.vc.offset); Lol(var->s_info.vc.offset);
else { else {
if (var->info.vc.offset<0) if (var->s_info.vc.offset<0)
lxl(curr_level-var->info.vc.st.level); lxl(curr_level-var->s_info.vc.st.level);
else else
lxa(curr_level-var->info.vc.st.level); lxa(curr_level-var->s_info.vc.st.level);
if (var->type&T_PARAM && (var->type&T_TYPE)!=T_VALUE) if (var->s_type&T_PARAM && (var->s_type&T_TYPE)!=T_VALUE)
Lif(var->info.vc.offset); Lif(var->s_info.vc.offset);
else else
Lof(var->info.vc.offset); Lof(var->s_info.vc.offset);
} }
}break; }break;
case E_CONST: case E_CONST:
@ -233,25 +233,25 @@ void code_addr(e) register struct expr *e;
case E_VAR: { /* variable or channel */ case E_VAR: { /* variable or channel */
register struct symbol *var=e->u.var; register struct symbol *var=e->u.var;
if (var->type&T_BUILTIN) if (var->s_type&T_BUILTIN)
lae(var->info.vc.st.builtin, var->info.vc.offset); lae(var->s_info.vc.st.builtin, var->s_info.vc.offset);
else else
if (var->info.vc.st.level==curr_level) if (var->s_info.vc.st.level==curr_level)
if (var->type&T_PARAM if (var->s_type&T_PARAM
&& (var->type&(T_TYPE|T_ARR))!=T_VALUE) && (var->s_type&(T_TYPE|T_ARR))!=T_VALUE)
Lolp(var->info.vc.offset); Lolp(var->s_info.vc.offset);
else else
lal(var->info.vc.offset); lal(var->s_info.vc.offset);
else { else {
if (var->info.vc.offset<0) if (var->s_info.vc.offset<0)
lxl(curr_level-var->info.vc.st.level); lxl(curr_level-var->s_info.vc.st.level);
else else
lxa(curr_level-var->info.vc.st.level); lxa(curr_level-var->s_info.vc.st.level);
if (var->type&T_PARAM if (var->s_type&T_PARAM
&& (var->type&(T_TYPE|T_ARR))!=T_VALUE) && (var->s_type&(T_TYPE|T_ARR))!=T_VALUE)
Lofp(var->info.vc.offset); Lofp(var->s_info.vc.offset);
else else
adp(var->info.vc.offset); adp(var->s_info.vc.offset);
} }
} break; } break;
case E_TABLE: case E_TABLE:
@ -440,12 +440,12 @@ void code_void(e) register struct expr *e;
break; break;
case E_CALL: { case E_CALL: {
register size=0; register size=0;
register struct expr_list *elp=e->u.call.args; register struct expr_list *elp=e->u.call.c_args;
register struct symbol *proc=e->u.call.proc->u.var; register struct symbol *proc=e->u.call.c_proc->u.var;
register struct par_list *pars=proc->info.proc.pars; register struct par_list *pars=proc->s_info.proc.pars;
while (elp!=nil) { while (elp!=nil) {
if (pars->type==T_VALUE) { if (pars->pr_type==T_VALUE) {
code_val(elp->arg); code_val(elp->arg);
size+=vz; size+=vz;
} else { } else {
@ -453,27 +453,27 @@ void code_void(e) register struct expr *e;
size+=pz; size+=pz;
} }
elp=elp->next; elp=elp->next;
pars=pars->next; pars=pars->pr_next;
} }
if (proc->type&T_BUILTIN) { if (proc->s_type&T_BUILTIN) {
cal(proc->info.proc.st.builtin); cal(proc->s_info.proc.st.builtin);
asp(size); asp(size);
} else { } else {
if (proc->info.proc.st.level>curr_level) { if (proc->s_info.proc.st.level>curr_level) {
/* Call down */ /* Call down */
lor0(); lor0();
} else } else
if (proc->info.proc.st.level==curr_level) { if (proc->s_info.proc.st.level==curr_level) {
/* Call at same level */ /* Call at same level */
Lolp(0); Lolp(0);
} else { } else {
/* Call up */ /* Call up */
lxa(curr_level-proc->info.proc.st.level); lxa(curr_level-proc->s_info.proc.st.level);
loi(pz); loi(pz);
} }
cal(proc_label(proc->info.proc.label, proc->name)); cal(proc_label(proc->s_info.proc.label, proc->s_name));
asp(size+pz); asp(size+pz);
if (proc->info.proc.file!=curr_file) fil(); if (proc->s_info.proc.file!=curr_file) fil();
} }
} break; } break;
} }
@ -486,11 +486,11 @@ void prologue(proc) register struct symbol *proc;
if (err) return; if (err) return;
proc->info.proc.st.level= ++curr_level; proc->s_info.proc.st.level= ++curr_level;
proc->info.proc.file= curr_file; proc->s_info.proc.file= curr_file;
proc->info.proc.label= ++P; proc->s_info.proc.label= ++P;
curr_offset=min_offset=0; curr_offset=min_offset=0;
pro(proc_label(proc->info.proc.label, proc->name)); pro(proc_label(proc->s_info.proc.label, proc->s_name));
if (curr_level==1) fil(); if (curr_level==1) fil();
} }
@ -515,7 +515,7 @@ void rep_init(v, e1, e2, r_info)
r_info->BEGIN=r_info->END=0; r_info->BEGIN=r_info->END=0;
code_val(e1); code_val(e1);
Stl(v->info.vc.offset); Stl(v->s_info.vc.offset);
if (!constant(e1) || !constant(e2)) { if (!constant(e1) || !constant(e2)) {
if (constant(e2) && word_constant(e2->u.const)) { if (constant(e2) && word_constant(e2->u.const)) {
@ -540,10 +540,10 @@ void rep_test(v, e1, e2, r_info)
{ {
if (err) return; if (err) return;
Inl(v->info.vc.offset); Inl(v->s_info.vc.offset);
if (constant(e1) && constant(e2)) { if (constant(e1) && constant(e2)) {
Lol(v->info.vc.offset); Lol(v->s_info.vc.offset);
Loc(e1->u.const+e2->u.const); Loc(e1->u.const+e2->u.const);
if (vz>wz) { if (vz>wz) {
cmi(); cmi();

View file

@ -114,13 +114,13 @@ struct expr *new_var(var)
pe->kind=E_VAR; pe->kind=E_VAR;
if ((var->type&T_TYPE)==T_VAR || var->type&T_NOTDECL) { if ((var->s_type&T_TYPE)==T_VAR || var->s_type&T_NOTDECL) {
pe->type=(var->type&(~T_TYPE)); pe->type=(var->s_type&(~T_TYPE));
pe->type|=T_VALUE|T_LVALUE; pe->type|=T_VALUE|T_LVALUE;
} else } else
pe->type=var->type; pe->type=var->s_type;
pe->arr_siz=var->arr_siz; pe->arr_siz=var->s_arr_siz;
pe->u.var=var; pe->u.var=var;
@ -242,8 +242,8 @@ struct expr *new_call(proc, args)
pe->kind=E_CALL; pe->kind=E_CALL;
pe->type=T_VOID; pe->type=T_VOID;
pe->u.call.proc=proc; pe->u.call.c_proc=proc;
pe->u.call.args=args; pe->u.call.c_args=args;
return pe; return pe;
} }
@ -299,12 +299,12 @@ static void assigned(e) register struct expr *e;
) { ) {
register struct symbol *var; register struct symbol *var;
if ((var=e->u.var)->type&T_REP) { if ((var=e->u.var)->s_type&T_REP) {
warning("replicator index %s may not be assigned", warning("replicator index %s may not be assigned",
var->name); var->s_name);
var->type&= ~T_REP; var->s_type&= ~T_REP;
} }
var->type|=T_ASSIGNED; var->s_type|=T_ASSIGNED;
} }
} }
@ -315,11 +315,11 @@ void used(e) register struct expr *e;
) { ) {
register struct symbol *var; register struct symbol *var;
if ( ! ( (var=e->u.var)->type&(T_ASSIGNED|T_BUILTIN)) if ( ! ( (var=e->u.var)->s_type&(T_ASSIGNED|T_BUILTIN))
&& (var->type&T_TYPE)==T_VAR && (var->s_type&T_TYPE)==T_VAR
&& var->info.vc.st.level==curr_level) && var->s_info.vc.st.level==curr_level)
warning("%s used before assigned", var->name); warning("%s used before assigned", var->s_name);
var->type|=(T_USED|T_ASSIGNED); var->s_type|=(T_USED|T_ASSIGNED);
} }
} }
@ -416,10 +416,10 @@ void check_param(aform, act, err)
return; return;
} }
if ((form->type&T_ARR)!=(act->type&T_ARR) && !(act->type&T_NOTDECL) ) { if ((form->pr_type&T_ARR)!=(act->type&T_ARR) && !(act->type&T_NOTDECL) ) {
report(NONCORR); report(NONCORR);
} else { } else {
switch (form->type&T_TYPE) { switch (form->pr_type&T_TYPE) {
case T_VAR: case T_VAR:
if ( ! ( if ( ! (
(act->type&T_TYPE)==T_VALUE (act->type&T_TYPE)==T_VALUE
@ -442,7 +442,7 @@ void check_param(aform, act, err)
break; break;
} }
} }
*aform= form->next; *aform= form->pr_next;
} }
void destroy(e) register struct expr *e; void destroy(e) register struct expr *e;
@ -456,11 +456,11 @@ void destroy(e) register struct expr *e;
break; break;
case E_IO: case E_IO:
case E_CALL: case E_CALL:
destroy(e->kind==E_IO ? e->u.io.chan : e->u.call.proc); destroy(e->kind==E_IO ? e->u.io.chan : e->u.call.c_proc);
{ {
register struct expr_list *elp, *junk; register struct expr_list *elp, *junk;
elp= e->kind==E_IO ? e->u.io.args : e->u.call.args; elp= e->kind==E_IO ? e->u.io.args : e->u.call.c_args;
while (elp!=nil) { while (elp!=nil) {
destroy(elp->arg); destroy(elp->arg);

View file

@ -13,15 +13,15 @@
#define E_CALL 7 #define E_CALL 7
struct table { struct table {
long val;
struct table *next; struct table *next;
long val;
}; };
struct expr; struct expr;
struct expr_list { struct expr_list {
struct expr *arg;
struct expr_list *next; struct expr_list *next;
struct expr *arg;
}; };
struct expr { struct expr {
@ -47,8 +47,8 @@ struct expr {
} io; } io;
struct { struct {
struct expr *proc; struct expr *c_proc;
struct expr_list *args; struct expr_list *c_args;
} call; } call;
} u; } u;
}; };

View file

@ -407,11 +407,11 @@ proc_declaration { struct par_list *pars=nil;
prologue(proc); prologue(proc);
} }
form_parms(&pars) ? { form_offsets(pars); form_parms(&pars) ? { form_offsets(pars);
proc->info.proc.pars=pars; proc->s_info.proc.pars=pars;
} }
'=' process { epilogue(proc); '=' process { epilogue(proc);
sym_up(); sym_up();
proc->type&= ~T_RECURS; proc->s_type&= ~T_RECURS;
min_offset=old_min_offset; min_offset=old_min_offset;
Label(OVER); Label(OVER);
} }
@ -457,10 +457,10 @@ item(register struct expr **e;)
var=searchall(token.t_sval); var=searchall(token.t_sval);
if (var_constant(var)) if (var_constant(var))
*e=copy_const(var->info.const); *e=copy_const(var->s_info.const);
else { else {
if (var_proc(var)) if (var_proc(var))
pars=var->info.proc.pars; pars=var->s_info.proc.pars;
*e=new_var(var); *e=new_var(var);
} }
} }
@ -468,13 +468,13 @@ item(register struct expr **e;)
[ subscript(&byte, &e1) [ subscript(&byte, &e1)
{ *e=new_node('[', *e, e1, byte); } { *e=new_node('[', *e, e1, byte); }
| '(' { if (!var_declared(var)) { | '(' { if (!var_declared(var)) {
var->type=T_PROC|T_USED|T_NOTDECL; var->s_type=T_PROC|T_USED|T_NOTDECL;
var->info.proc.pars=nil; var->s_info.proc.pars=nil;
err=1; err=1;
} }
if (!var_proc(var)) { if (!var_proc(var)) {
report("%s is not a named process", report("%s is not a named process",
var->name); var->s_name);
err=1; err=1;
} }
} }

View file

@ -23,8 +23,8 @@ static struct symbol **search_sym(tree, name)
register struct symbol **aps=tree, *ps; register struct symbol **aps=tree, *ps;
register cmp; register cmp;
while ((ps= *aps)!=nil && (cmp=strcmp(name, ps->name))!=0) while ((ps= *aps)!=nil && (cmp=strcmp(name, ps->s_name))!=0)
aps= cmp<0 ? &ps->left : &ps->right; aps= cmp<0 ? &ps->s_left : &ps->s_right;
return aps; return aps;
} }
@ -48,14 +48,14 @@ struct symbol *insert(name, type, arr_siz, info)
ps= (struct symbol *) malloc(sizeof *ps); ps= (struct symbol *) malloc(sizeof *ps);
ps->name=name; ps->s_name=name;
if (included && curr_level==0) /* Top_level symbol in include file */ if (included && curr_level==0) /* Top_level symbol in include file */
type|=T_USED; /* are always used */ type|=T_USED; /* are always used */
ps->type=type; ps->s_type=type;
ps->arr_siz=arr_siz; ps->s_arr_siz=arr_siz;
ps->info= *info; ps->s_info= *info;
ps->left=ps->right=nil; ps->s_left=ps->s_right=nil;
*aps=ps; *aps=ps;
return ps; return ps;
@ -81,7 +81,7 @@ struct symbol *searchall(name) char *name;
void check_recursion(proc) void check_recursion(proc)
register struct expr *proc; register struct expr *proc;
{ {
if (proc->kind==E_VAR && proc->u.var->type&T_RECURS) if (proc->kind==E_VAR && proc->u.var->s_type&T_RECURS)
warning("recursion not allowed"); warning("recursion not allowed");
} }
@ -101,28 +101,28 @@ void sym_down()
static void sym_destroy(ps) register struct symbol *ps; static void sym_destroy(ps) register struct symbol *ps;
{ {
if (ps!=nil) { if (ps!=nil) {
sym_destroy(ps->left); sym_destroy(ps->s_left);
sym_destroy(ps->right); sym_destroy(ps->s_right);
if ( !(ps->type&T_NOTDECL) ) { if ( !(ps->s_type&T_NOTDECL) ) {
if ( !(ps->type&T_USED) ) if ( !(ps->s_type&T_USED) )
warning("%s: never used", ps->name); warning("%s: never used", ps->s_name);
else else
if ( !(ps->type&T_ASSIGNED) && (ps->type&T_TYPE)==T_VAR) if ( !(ps->s_type&T_ASSIGNED) && (ps->s_type&T_TYPE)==T_VAR)
warning("%s: never assigned", ps->name); warning("%s: never assigned", ps->s_name);
} }
if ((ps->type&T_TYPE)==T_PROC) { if ((ps->s_type&T_TYPE)==T_PROC) {
register struct par_list *par, *junk; register struct par_list *par, *junk;
par=ps->info.proc.pars; par=ps->s_info.proc.pars;
while (par!=nil) { while (par!=nil) {
junk=par; junk=par;
par=par->next; par=par->pr_next;
free(junk); free(junk);
} }
} else } else
if ((ps->type&T_TYPE)==T_CONST) if ((ps->s_type&T_TYPE)==T_CONST)
destroy(ps->info.const); destroy(ps->s_info.const);
free(ps->name); free(ps->s_name);
free(ps); free(ps);
} }
} }
@ -174,12 +174,12 @@ void pars_add(aapars, type, var)
pl= (struct par_list *) malloc(sizeof *pl); pl= (struct par_list *) malloc(sizeof *pl);
pl->type=type; pl->pr_type=type;
pl->var=var; pl->pr_var=var;
pl->next= **aapars; pl->pr_next= **aapars;
**aapars=pl; **aapars=pl;
*aapars= &pl->next; *aapars= &pl->pr_next;
} }
int form_offsets(pars) register struct par_list *pars; int form_offsets(pars) register struct par_list *pars;
@ -189,19 +189,19 @@ int form_offsets(pars) register struct par_list *pars;
if (pars==nil) return pz; if (pars==nil) return pz;
if ((var=pars->var)!=nil) { if ((var=pars->pr_var)!=nil) {
register offset=form_offsets(pars->next); register offset=form_offsets(pars->pr_next);
switch (var->type&T_TYPE) { switch (var->s_type&T_TYPE) {
case T_VAR: case T_VAR:
case T_CHAN: case T_CHAN:
var->info.vc.st.level=curr_level; var->s_info.vc.st.level=curr_level;
var->info.vc.offset=offset; var->s_info.vc.offset=offset;
return offset+pz; return offset+pz;
case T_VALUE: case T_VALUE:
var->info.vc.st.level=curr_level; var->s_info.vc.st.level=curr_level;
var->info.vc.offset=offset; var->s_info.vc.offset=offset;
return offset+ ((var->type&T_ARR) ? pz : vz); return offset+ ((var->s_type&T_ARR) ? pz : vz);
} }
} }
} }

View file

@ -36,9 +36,9 @@
struct symbol; struct symbol;
struct par_list { /* List of parameter types for a proc object */ struct par_list { /* List of parameter types for a proc object */
struct par_list *next; struct par_list *pr_next;
struct symbol *var; /* The formal parameter while visible */ struct symbol *pr_var; /* The formal parameter while visible */
int type; /* Its type */ int pr_type; /* Its type */
}; };
struct expr; struct expr;
@ -65,11 +65,11 @@ union type_info {
}; };
struct symbol { struct symbol {
char *name; char *s_name;
short type; short s_type;
int arr_siz; int s_arr_siz;
union type_info info; union type_info s_info;
struct symbol *left, *right; struct symbol *s_left, *s_right;
}; };
struct symtab { struct symtab {
@ -89,8 +89,8 @@ void pars_add();
int form_offsets(); int form_offsets();
void check_recursion(); void check_recursion();
#define var_constant(v) (((v)->type&T_TYPE)==T_CONST) #define var_constant(v) (((v)->s_type&T_TYPE)==T_CONST)
#define var_proc(v) (((v)->type&T_TYPE)==T_PROC) #define var_proc(v) (((v)->s_type&T_TYPE)==T_PROC)
#define var_declared(v) (! ((v)->type&T_NOTDECL)) #define var_declared(v) (! ((v)->s_type&T_NOTDECL))
extern union type_info none; extern union type_info none;