toknum = GetToken(&tk);
ReplaceMacros = 1;
if (toknum != IDENTIFIER) {
+ if (toknum != INTEGER) {
+ lexerror("illegal # line");
+ }
SkipToNewLine();
continue;
}
default:
case K_UNKNOWN:
/* invalid word seen after the '#' */
- lexerror("%s: unknown control", tk.tk_idf->id_text);
+ lexwarning("%s: unknown control", tk.tk_idf->id_text);
/* fallthrough */
case K_DEFINE:
case K_ERROR:
#include "static.h"
#include "declar.h"
-/* Some routines (symbol2str, token2str, type2str) which should have
+/* Some routines (symbol2str, type2str, qual2str) which should have
* yielded strings are written to yield a pointer to a transient piece
* of memory, containing the string, since this is the only reasonable
* thing to do in C. `Transient' means that the result may soon
toknum = GetToken(&tk);
ReplaceMacros = 1;
if (toknum != IDENTIFIER) {
+ if (toknum != INTEGER) {
+ error("illegal # line");
+ }
SkipToNewLine();
continue;
}
id = findidf(tk.tk_str);
if (id == (struct idf *)0) {
/* invalid word seen after the '#' */
- error("%s: unknown control", tk.tk_str);
+ warning("%s: unknown control", tk.tk_str);
}
free(tk.tk_str);
if (id == (struct idf *)0) continue;