Cleanup
Minor code cleanup
This commit is contained in:
+34
-35
@@ -79,8 +79,7 @@ symbol() {
|
|||||||
} else {
|
} else {
|
||||||
if (eof)
|
if (eof)
|
||||||
return(0);
|
return(0);
|
||||||
else
|
c = read();
|
||||||
c = read();
|
|
||||||
}
|
}
|
||||||
loop:
|
loop:
|
||||||
ct = ctab[c];
|
ct = ctab[c];
|
||||||
@@ -97,18 +96,18 @@ loop:
|
|||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c=='=') {
|
if (c=='=')
|
||||||
return(subseq('=',80,60));
|
return(subseq('=',80,60));
|
||||||
}
|
|
||||||
if (c=='<') {
|
if (c=='<')
|
||||||
return(subseq('=',63,62));
|
return(subseq('=',63,62));
|
||||||
}
|
|
||||||
if (c=='>') {
|
if (c=='>')
|
||||||
return(subseq('=',65,64));
|
return(subseq('=',65,64));
|
||||||
}
|
|
||||||
if (c=='!') {
|
if (c=='!')
|
||||||
return(subseq('=',34,61));
|
return(subseq('=',34,61));
|
||||||
}
|
|
||||||
if (c=='$') {
|
if (c=='$') {
|
||||||
if (subseq('(',0,1))
|
if (subseq('(',0,1))
|
||||||
return(2);
|
return(2);
|
||||||
@@ -155,9 +154,12 @@ com1:
|
|||||||
}
|
}
|
||||||
if (ct==123) { /* letter */
|
if (ct==123) { /* letter */
|
||||||
sp = symbuf;
|
sp = symbuf;
|
||||||
while(ctab[c]==123 | ctab[c]==124) {
|
while(ct==123 | ct==124) {
|
||||||
if (sp<symbuf+9) { *sp = c; sp = sp+1; }
|
if (sp<symbuf+9) {
|
||||||
c = read();
|
*sp = c;
|
||||||
|
sp = sp+1;
|
||||||
|
}
|
||||||
|
ct = ctab[c = read()];
|
||||||
}
|
}
|
||||||
*sp = 0;
|
*sp = 0;
|
||||||
peekc = c;
|
peekc = c;
|
||||||
@@ -192,19 +194,21 @@ getcc() {
|
|||||||
auto c;
|
auto c;
|
||||||
|
|
||||||
cval = 0;
|
cval = 0;
|
||||||
if ((c = mapch('*'')) < 0) return;
|
if ((c = mapch('*'')) < 0)
|
||||||
|
return;
|
||||||
cval = c;
|
cval = c;
|
||||||
if ((c = mapch('*'')) < 0) return;
|
if ((c = mapch('*'')) < 0)
|
||||||
|
return;
|
||||||
cval = cval * 512 + c;
|
cval = cval * 512 + c;
|
||||||
if ((c = mapch('*'')) >= 0)
|
if (mapch('*'') >= 0)
|
||||||
error('cc');
|
error('cc');
|
||||||
}
|
}
|
||||||
|
|
||||||
mapch(c) {
|
mapch(c) {
|
||||||
extrn peekc;
|
extrn peekc;
|
||||||
auto a;
|
auto a;
|
||||||
|
|
||||||
if((a=read())==c)
|
if ((a=read())==c)
|
||||||
return(-1);
|
return(-1);
|
||||||
|
|
||||||
if (a=='*n' | a==0 | a==4) {
|
if (a=='*n' | a==0 | a==4) {
|
||||||
@@ -260,7 +264,7 @@ case21:
|
|||||||
|
|
||||||
if (o==20) { /* name */
|
if (o==20) { /* name */
|
||||||
if (*csym==0) { /* not seen */
|
if (*csym==0) { /* not seen */
|
||||||
if((peeksym=symbol())==6) { /* ( */
|
if ((peeksym=symbol())==6) { /* ( */
|
||||||
*csym = 6; /* extrn */
|
*csym = 6; /* extrn */
|
||||||
} else {
|
} else {
|
||||||
*csym = 2; /* internal */
|
*csym = 2; /* internal */
|
||||||
@@ -268,7 +272,7 @@ case21:
|
|||||||
csym[1] = isn;
|
csym[1] = isn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(*csym==5) /* auto */
|
if (*csym==5) /* auto */
|
||||||
gen('a',csym[1]);
|
gen('a',csym[1]);
|
||||||
else {
|
else {
|
||||||
write('x ');
|
write('x ');
|
||||||
@@ -394,13 +398,10 @@ loop:
|
|||||||
peeksym = o;
|
peeksym = o;
|
||||||
}
|
}
|
||||||
|
|
||||||
pexpr()
|
pexpr() {
|
||||||
{
|
if (symbol()==6) { /* ( */
|
||||||
auto o, t;
|
|
||||||
|
|
||||||
if ((o=symbol())==6) { /* ( */
|
|
||||||
expr(15);
|
expr(15);
|
||||||
if ((o=symbol())==7) /* ) */
|
if (symbol()==7) /* ) */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
error('()');
|
error('()');
|
||||||
@@ -429,7 +430,7 @@ declare(kw) {
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
done:
|
done:
|
||||||
if(o==1 & kw!=8 | o==7 & kw==8) /* auto/extrn ; param ')' */
|
if (o==1 & kw!=8 | o==7 & kw==8) /* auto/extrn ; param ')' */
|
||||||
return;
|
return;
|
||||||
syntax:
|
syntax:
|
||||||
error('[]'); /* declaration syntax */
|
error('[]'); /* declaration syntax */
|
||||||
@@ -440,10 +441,10 @@ extdef() {
|
|||||||
auto o, c;
|
auto o, c;
|
||||||
|
|
||||||
o = symbol();
|
o = symbol();
|
||||||
if(o==0 | o==1) /* eof ; */
|
if (o==0 | o==1) /* eof ; */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(o!=20) /* name */
|
if (o!=20) /* name */
|
||||||
goto syntax;
|
goto syntax;
|
||||||
|
|
||||||
csym[0] = 6; /* extrn */
|
csym[0] = 6; /* extrn */
|
||||||
@@ -555,9 +556,8 @@ stmt() {
|
|||||||
|
|
||||||
next:
|
next:
|
||||||
o = symbol();
|
o = symbol();
|
||||||
|
|
||||||
if (o==0) /* eof */
|
if (o==0) { /* eof */
|
||||||
{
|
|
||||||
error('fe'); /* Unexpected eof */
|
error('fe'); /* Unexpected eof */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -579,7 +579,7 @@ next:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cval==11) { /* return */
|
if (cval==11) { /* return */
|
||||||
if((peeksym=symbol())==6) /* ( */
|
if ((peeksym=symbol())==6) /* ( */
|
||||||
pexpr();
|
pexpr();
|
||||||
gen('n',7); /* retrn */
|
gen('n',7); /* retrn */
|
||||||
goto semi;
|
goto semi;
|
||||||
@@ -716,8 +716,7 @@ name(s) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
error(code)
|
error(code) {
|
||||||
{
|
|
||||||
extrn line, eof, csym, nerror, fout;
|
extrn line, eof, csym, nerror, fout;
|
||||||
auto f;
|
auto f;
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ int fout = 1;
|
|||||||
xread() {
|
xread() {
|
||||||
char buf[1];
|
char buf[1];
|
||||||
if (read(fin, buf, 1) <= 0)
|
if (read(fin, buf, 1) <= 0)
|
||||||
return 4;
|
return 4;
|
||||||
return buf[0];
|
return buf[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,8 +126,7 @@ symbol() {
|
|||||||
} else {
|
} else {
|
||||||
if (eof)
|
if (eof)
|
||||||
return(0);
|
return(0);
|
||||||
else
|
c = read();
|
||||||
c = read();
|
|
||||||
}
|
}
|
||||||
loop:
|
loop:
|
||||||
ct = ctab[c];
|
ct = ctab[c];
|
||||||
@@ -144,18 +143,18 @@ loop:
|
|||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c=='=') {
|
if (c=='=')
|
||||||
return(subseq('=',80,60));
|
return(subseq('=',80,60));
|
||||||
}
|
|
||||||
if (c=='<') {
|
if (c=='<')
|
||||||
return(subseq('=',63,62));
|
return(subseq('=',63,62));
|
||||||
}
|
|
||||||
if (c=='>') {
|
if (c=='>')
|
||||||
return(subseq('=',65,64));
|
return(subseq('=',65,64));
|
||||||
}
|
|
||||||
if (c=='!') {
|
if (c=='!')
|
||||||
return(subseq('=',34,61));
|
return(subseq('=',34,61));
|
||||||
}
|
|
||||||
if (c=='$') {
|
if (c=='$') {
|
||||||
if (subseq('(',0,1))
|
if (subseq('(',0,1))
|
||||||
return(2);
|
return(2);
|
||||||
@@ -202,9 +201,12 @@ com1:
|
|||||||
}
|
}
|
||||||
if (ct==123) { /* letter */
|
if (ct==123) { /* letter */
|
||||||
sp = symbuf;
|
sp = symbuf;
|
||||||
while(ctab[c]==123 | ctab[c]==124) {
|
while(ct==123 | ct==124) {
|
||||||
if (sp<symbuf+9) { *sp = c; sp = sp+1; }
|
if (sp<symbuf+9) {
|
||||||
c = read();
|
*sp = c;
|
||||||
|
sp = sp+1;
|
||||||
|
}
|
||||||
|
ct = ctab[c = read()];
|
||||||
}
|
}
|
||||||
*sp = 0;
|
*sp = 0;
|
||||||
peekc = c;
|
peekc = c;
|
||||||
@@ -239,19 +241,21 @@ getcc() {
|
|||||||
auto c;
|
auto c;
|
||||||
|
|
||||||
cval = 0;
|
cval = 0;
|
||||||
if ((c = mapch('\'')) < 0) return;
|
if ((c = mapch('\'')) < 0)
|
||||||
|
return;
|
||||||
cval = c;
|
cval = c;
|
||||||
if ((c = mapch('\'')) < 0) return;
|
if ((c = mapch('\'')) < 0)
|
||||||
|
return;
|
||||||
cval = cval * 512 + c;
|
cval = cval * 512 + c;
|
||||||
if ((c = mapch('\'')) >= 0)
|
if (mapch('\'') >= 0)
|
||||||
error('cc');
|
error('cc');
|
||||||
}
|
}
|
||||||
|
|
||||||
mapch(c) {
|
mapch(c) {
|
||||||
extern peekc;
|
extern peekc;
|
||||||
auto a;
|
auto a;
|
||||||
|
|
||||||
if((a=read())==c)
|
if ((a=read())==c)
|
||||||
return(-1);
|
return(-1);
|
||||||
|
|
||||||
if (a=='\n' | a==0 | a==4) {
|
if (a=='\n' | a==0 | a==4) {
|
||||||
@@ -307,7 +311,7 @@ case21:
|
|||||||
|
|
||||||
if (o==20) { /* name */
|
if (o==20) { /* name */
|
||||||
if (*csym==0) { /* not seen */
|
if (*csym==0) { /* not seen */
|
||||||
if((peeksym=symbol())==6) { /* ( */
|
if ((peeksym=symbol())==6) { /* ( */
|
||||||
*csym = 6; /* extrn */
|
*csym = 6; /* extrn */
|
||||||
} else {
|
} else {
|
||||||
*csym = 2; /* internal */
|
*csym = 2; /* internal */
|
||||||
@@ -315,7 +319,7 @@ case21:
|
|||||||
csym[1] = isn;
|
csym[1] = isn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(*csym==5) /* auto */
|
if (*csym==5) /* auto */
|
||||||
gen('a',csym[1]);
|
gen('a',csym[1]);
|
||||||
else {
|
else {
|
||||||
write('x ');
|
write('x ');
|
||||||
@@ -441,13 +445,10 @@ loop:
|
|||||||
peeksym = o;
|
peeksym = o;
|
||||||
}
|
}
|
||||||
|
|
||||||
pexpr()
|
pexpr() {
|
||||||
{
|
if (symbol()==6) { /* ( */
|
||||||
auto o, t;
|
|
||||||
|
|
||||||
if ((o=symbol())==6) { /* ( */
|
|
||||||
expr(15);
|
expr(15);
|
||||||
if ((o=symbol())==7) /* ) */
|
if (symbol()==7) /* ) */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
error('()');
|
error('()');
|
||||||
@@ -476,7 +477,7 @@ declare(kw) {
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
done:
|
done:
|
||||||
if(o==1 & kw!=8 | o==7 & kw==8) /* auto/extrn ; param ')' */
|
if (o==1 & kw!=8 | o==7 & kw==8) /* auto/extrn ; param ')' */
|
||||||
return;
|
return;
|
||||||
syntax:
|
syntax:
|
||||||
error('[]'); /* declaration syntax */
|
error('[]'); /* declaration syntax */
|
||||||
@@ -487,10 +488,10 @@ extdef() {
|
|||||||
auto o, c;
|
auto o, c;
|
||||||
|
|
||||||
o = symbol();
|
o = symbol();
|
||||||
if(o==0 | o==1) /* eof ; */
|
if (o==0 | o==1) /* eof ; */
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(o!=20) /* name */
|
if (o!=20) /* name */
|
||||||
goto syntax;
|
goto syntax;
|
||||||
|
|
||||||
csym[0] = 6; /* extrn */
|
csym[0] = 6; /* extrn */
|
||||||
@@ -602,9 +603,8 @@ stmt() {
|
|||||||
|
|
||||||
next:
|
next:
|
||||||
o = symbol();
|
o = symbol();
|
||||||
|
|
||||||
if (o==0) /* eof */
|
if (o==0) { /* eof */
|
||||||
{
|
|
||||||
error('fe'); /* Unexpected eof */
|
error('fe'); /* Unexpected eof */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -626,7 +626,7 @@ next:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cval==11) { /* return */
|
if (cval==11) { /* return */
|
||||||
if((peeksym=symbol())==6) /* ( */
|
if ((peeksym=symbol())==6) /* ( */
|
||||||
pexpr();
|
pexpr();
|
||||||
gen('n',7); /* retrn */
|
gen('n',7); /* retrn */
|
||||||
goto semi;
|
goto semi;
|
||||||
@@ -763,11 +763,10 @@ name(int *s) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
error(code)
|
error(code) {
|
||||||
{
|
|
||||||
extern line, eof, *csym, nerror, fout;
|
extern line, eof, *csym, nerror, fout;
|
||||||
auto f;
|
auto f;
|
||||||
|
|
||||||
if (eof | nerror==20) {
|
if (eof | nerror==20) {
|
||||||
eof = 1;
|
eof = 1;
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user