Use awk program to generate distinct C_xxx routines in separate files.

This commit is contained in:
bruce
1987-02-06 14:13:22 +00:00
parent 2e571491b9
commit b248ec9c8f
3 changed files with 97 additions and 147 deletions

View File

@@ -9,17 +9,16 @@ outputincalls()
struct idf *op;
int opcode;
char *s;
if(!sys_open("incalls.c",OP_WRITE,&ofile)) {
fprint(STDERR,"Fatal Error: cannot open output file incalls.c\n");
if(!sys_open("incalls.r",OP_WRITE,&ofile)) {
fprint(STDERR,"Fatal Error: cannot open output file incalls.r\n");
sys_stop(S_EXIT);
}
fprint(ofile,"#include \"nopt.h\"\n\n");
for(op=ops;op!=(struct idf *)NULL;op=op->id_nextidf) {
opcode = op->id_opcode;
s = op->id_text;
switch(op->id_argfmt) {
case NOARG:
fprint(ofile,"\nC_%s() {\n",s);
fprint(ofile,"%s\t|\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_inop(op_%s);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -28,10 +27,9 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s();\n",s);
}
fprint(ofile,"}\n",s);
break;
case CSTOPT:
fprint(ofile,"\nC_%s_narg() {\n",s);
fprint(ofile,"%s_narg\t|\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_inop(op_%s);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -40,10 +38,9 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s_narg();\n",s);
}
fprint(ofile,"}\n",s);
/* fall thru */
case CST:
fprint(ofile,"\nC_%s(n) int n; {\n",s);
fprint(ofile,"%s\t| int:n\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_incst(op_%s,n);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -52,10 +49,9 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s(n);\n",s);
}
fprint(ofile,"}\n",s);
break;
case DEFILB:
fprint(ofile,"\nC_df_ilb(l) label l; {\n");
fprint(ofile,"df_ilb\t| label:l\t|\n");
if(op->id_used) {
fprint(ofile,"\tOO_indefilb(op_%s,l);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -64,10 +60,9 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_df_ilb(l);\n",s);
}
fprint(ofile,"}\n",s);
break;
case PNAM:
fprint(ofile,"\nC_%s(s) char *s; {\n",s);
fprint(ofile,"%s\t| char *:s\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_inpnam(op_%s,s);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -76,10 +71,9 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s(s);\n",s);
}
fprint(ofile,"}\n",s);
break;
case LAB:
fprint(ofile,"\nC_%s(l) label l; {\n",s);
fprint(ofile,"%s\t| label:l\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_inlab(op_%s,l);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -88,10 +82,9 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s(l);\n",s);
}
fprint(ofile,"}\n",s);
break;
case EXT:
fprint(ofile,"\nC_%s(n) int n; {\n",s);
fprint(ofile,"%s\t| int:n\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_incst(op_%s,n);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -100,8 +93,7 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s(n);\n",s);
}
fprint(ofile,"}\n",s);
fprint(ofile,"\nC_%s_dnam(s,n) char *s; int n; {\n",s);
fprint(ofile,"%s_dnam\t| char *:s int:n\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_indnam(op_%s,s,n);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -110,8 +102,7 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s_dnam(s,n);\n",s);
}
fprint(ofile,"}\n",s);
fprint(ofile,"\nC_%s_dlb(l,n) label l; int n; {\n",s);
fprint(ofile,"%s_dlb\t| label:l int:n\t|\n",s);
if(op->id_used) {
fprint(ofile,"\tOO_indlb(op_%s,l,n);\n",s);
fprint(ofile,"\tOO_dfa(op_%s);\n",s);
@@ -120,7 +111,6 @@ outputincalls()
fprint(ofile,"\tFLUSHDFA();\n");
fprint(ofile,"\tO_%s_dlb(l,n);\n",s);
}
fprint(ofile,"}\n",s);
break;
}
}