some fixes, f.i. process # in actual parameter list
This commit is contained in:
parent
b9bb251d60
commit
7255b1aa61
|
@ -81,6 +81,7 @@ preprocess(fn)
|
|||
for (;;) {
|
||||
if (c & 0200) {
|
||||
if (c == EOI) {
|
||||
newline();
|
||||
flush(op-_obuf);
|
||||
return;
|
||||
}
|
||||
|
@ -102,6 +103,7 @@ preprocess(fn)
|
|||
echo(c);
|
||||
}
|
||||
else if (c == EOI) {
|
||||
newline();
|
||||
flush(op - _obuf);
|
||||
return;
|
||||
}
|
||||
|
@ -149,6 +151,7 @@ preprocess(fn)
|
|||
break;
|
||||
}
|
||||
else if (c == EOI) {
|
||||
newline();
|
||||
flush(op-_obuf);
|
||||
return;
|
||||
}
|
||||
|
@ -161,8 +164,7 @@ preprocess(fn)
|
|||
}
|
||||
else if (c == '\'') escaped = 1;
|
||||
}
|
||||
}
|
||||
while (escaped || c != stopc);
|
||||
} while (escaped || c != stopc);
|
||||
echo(c);
|
||||
if (c == '\n')
|
||||
break; /* Don't eat # */
|
||||
|
|
|
@ -67,7 +67,7 @@ replace(idef)
|
|||
LoadChar(c);
|
||||
c = skipspaces(c,1);
|
||||
if (c != '(') { /* no replacement if no () */
|
||||
error("macro %s needs arguments",
|
||||
warning("macro %s needs arguments",
|
||||
idef->id_text);
|
||||
PushBack();
|
||||
return 0;
|
||||
|
|
|
@ -16,12 +16,17 @@ skipspaces(ch, skipnl)
|
|||
/* skipspaces() skips any white space and returns the first
|
||||
non-space character.
|
||||
*/
|
||||
register int nlseen = 0;
|
||||
|
||||
for (;;) {
|
||||
while (class(ch) == STSKIP)
|
||||
while (class(ch) == STSKIP) {
|
||||
nlseen = 0;
|
||||
LoadChar(ch);
|
||||
}
|
||||
if (skipnl && class(ch) == STNL) {
|
||||
LoadChar(ch);
|
||||
++LineNumber;
|
||||
nlseen++;
|
||||
continue;
|
||||
}
|
||||
/* How about "\\\n"????????? */
|
||||
|
@ -36,7 +41,13 @@ skipspaces(ch, skipnl)
|
|||
return '/';
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (nlseen && ch == '#') {
|
||||
domacro();
|
||||
LoadChar(ch);
|
||||
/* ch is the first character of a line. This means
|
||||
* that nlseen will still be true.
|
||||
*/
|
||||
} else
|
||||
return ch;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue