Commit 2538cf74 authored by Rob Pike's avatar Rob Pike

Complain about control characters that are not white space.

Bitten by invisible chars too many times.

R=ken
OCL=24024
CL=24024
parent 6fdb18f9
......@@ -299,6 +299,21 @@ cannedimports(char *file, char *cp)
inimportsys = 1;
}
int
isfrog(int c) {
// complain about possibly invisible control characters
if(c < 0)
return 1;
if(c < ' ') {
if(c == ' ' || c == '\n' || c== '\r' || c == '\t') // good white space
return 0;
return 1;
}
if(0x80 <= c && c <=0xa0) // unicode block including unbreakable space.
return 1;
return 0;
}
int32
yylex(void)
{
......@@ -645,6 +660,10 @@ lx:
DBG("%L lex: TOKEN %s\n", lineno, lexname(c));
else
DBG("%L lex: TOKEN '%c'\n", lineno, c);
if(isfrog(c)) {
yyerror("illegal character 0x%ux", c);
goto l0;
}
return c;
asop:
......@@ -661,8 +680,14 @@ talph:
if(c >= Runeself) {
for(c1=0;;) {
cp[c1++] = c;
if(fullrune(cp, c1))
if(fullrune(cp, c1)) {
chartorune(&rune, cp);
if(isfrog(rune)) {
yyerror("illegal character 0x%ux", rune);
goto l0;
}
break;
}
c = getc();
}
cp += c1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment