squeezing for MINIX
This commit is contained in:
parent
84297d3460
commit
8ff400fd0f
|
@ -11,7 +11,6 @@ LintPars
|
|||
align.h
|
||||
arith.c
|
||||
arith.h
|
||||
asm.c
|
||||
assert.h
|
||||
atw.h
|
||||
blocks.c
|
||||
|
|
|
@ -581,7 +581,7 @@ quoted(ch)
|
|||
|
||||
for (;;) {
|
||||
ch = GetChar();
|
||||
if (vch = val_in_base(ch, 16), vch == -1)
|
||||
if (vch = hex_val(ch), vch == -1)
|
||||
break;
|
||||
hex = hex * 16 + vch;
|
||||
}
|
||||
|
@ -605,22 +605,12 @@ quoted(ch)
|
|||
|
||||
|
||||
int
|
||||
val_in_base(ch, base)
|
||||
hex_val(ch)
|
||||
register int ch;
|
||||
{
|
||||
switch (base) {
|
||||
case 8:
|
||||
return (is_dig(ch) && ch < '9') ? ch - '0' : -1;
|
||||
case 10:
|
||||
return is_dig(ch) ? ch - '0' : -1;
|
||||
case 16:
|
||||
return is_dig(ch) ? ch - '0'
|
||||
: is_hex(ch) ? (ch - 'a' + 10) & 017
|
||||
: -1;
|
||||
default:
|
||||
fatal("(val_in_base) illegal base value %d", base);
|
||||
/* NOTREACHED */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -763,10 +753,7 @@ struct token *ptok;
|
|||
ubound = max_arith / (base / 2);
|
||||
|
||||
while (is_hex(*cp)) {
|
||||
dig = is_dig(*cp) ? *cp - '0'
|
||||
: (( *cp >= 'A' && *cp <= 'F' ? *cp - 'A'
|
||||
: *cp - 'a')
|
||||
+ 10) ;
|
||||
dig = hex_val(*cp);
|
||||
if (dig >= base) {
|
||||
malformed++; /* ignore */
|
||||
}
|
||||
|
|
|
@ -50,7 +50,6 @@ extern int UnknownIdIsZero; /* "LLlex.c" */
|
|||
#endif NOPP
|
||||
extern int EoiForNewline; /* "LLlex.c" */
|
||||
extern int AccFileSpecifier; /* "LLlex.c" */
|
||||
extern int SkipEscNewline; /* "LLlex.c" */
|
||||
extern int File_Inserted; /* "LLlex.c" */
|
||||
|
||||
extern int NoUnstack; /* buffer.c */
|
||||
|
|
|
@ -342,14 +342,11 @@ equal_type(tp, otp, check_qual)
|
|||
{
|
||||
if (tp == otp)
|
||||
return 1;
|
||||
if (!tp || !otp)
|
||||
return 0;
|
||||
|
||||
if (tp->tp_fund != otp->tp_fund)
|
||||
return 0;
|
||||
if (tp->tp_unsigned != otp->tp_unsigned)
|
||||
return 0;
|
||||
if (tp->tp_align != otp->tp_align)
|
||||
if (!tp
|
||||
|| !otp
|
||||
|| (tp->tp_fund != otp->tp_fund)
|
||||
|| (tp->tp_unsigned != otp->tp_unsigned)
|
||||
|| (tp->tp_align != otp->tp_align))
|
||||
return 0;
|
||||
if (tp->tp_fund != ARRAY /* && tp->tp_fund != STRUCT */ ) { /* UNION ??? */
|
||||
if (tp->tp_size != otp->tp_size)
|
||||
|
|
|
@ -41,8 +41,7 @@
|
|||
#define is_oct(ch) (isoct[ch])
|
||||
#define is_dig(ch) (isdig[ch])
|
||||
#define is_hex(ch) (ishex[ch])
|
||||
#define is_suf(ch) (issuf[ch])
|
||||
#define is_wsp(ch) (iswsp[ch])
|
||||
|
||||
extern char tkclass[];
|
||||
extern char inidf[], isoct[], isdig[], ishex[], issuf[], iswsp[];
|
||||
extern char inidf[], isoct[], isdig[], ishex[], iswsp[];
|
||||
|
|
|
@ -110,20 +110,23 @@ other_specifier(register struct decspecs *ds;)
|
|||
}
|
||||
|
|
||||
/* This qualifier applies to the top type.
|
||||
E.g. const float * is a pointer to const float.
|
||||
E.g. volatile float * is a pointer to volatile float.
|
||||
*/
|
||||
[ VOLATILE | CONST ]
|
||||
{ if (DOT == VOLATILE) {
|
||||
if (ds->ds_typequal & TQ_VOLATILE)
|
||||
VOLATILE
|
||||
{ if (ds->ds_typequal & TQ_VOLATILE)
|
||||
error("repeated type qualifier");
|
||||
ds->ds_typequal |= TQ_VOLATILE;
|
||||
}
|
||||
if (DOT == CONST) {
|
||||
|
|
||||
/* This qualifier applies to the top type.
|
||||
E.g. volatile float * is a pointer to volatile float.
|
||||
*/
|
||||
CONST
|
||||
{
|
||||
if (ds->ds_typequal & TQ_CONST)
|
||||
error("repeated type qualifier");
|
||||
ds->ds_typequal |= TQ_CONST;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
/* 3.5.2 */
|
||||
|
@ -692,28 +695,20 @@ pointer(int *qual;)
|
|||
/* 3.5.4 */
|
||||
type_qualifier_list(int *qual;)
|
||||
:
|
||||
{ *qual = 0; }
|
||||
[
|
||||
[ VOLATILE | CONST ]
|
||||
{ *qual = (DOT == VOLATILE) ? TQ_VOLATILE : TQ_CONST; }
|
||||
[
|
||||
[ VOLATILE | CONST ]
|
||||
{ if (DOT == VOLATILE) {
|
||||
if (*qual & TQ_VOLATILE)
|
||||
VOLATILE
|
||||
{ if (*qual & TQ_VOLATILE)
|
||||
error("repeated type qualifier");
|
||||
*qual |= TQ_VOLATILE;
|
||||
}
|
||||
if (DOT == CONST) {
|
||||
if (*qual & TQ_CONST)
|
||||
|
|
||||
CONST
|
||||
{ if (*qual & TQ_CONST)
|
||||
error("repeated type qualifier");
|
||||
*qual |= TQ_CONST;
|
||||
}
|
||||
}
|
||||
|
||||
]*
|
||||
|
|
||||
empty
|
||||
{ *qual = 0; }
|
||||
]
|
||||
;
|
||||
|
||||
empty:
|
||||
|
|
|
@ -52,7 +52,7 @@ GetIdentifier(skiponerr)
|
|||
ReplaceMacros = 1;
|
||||
UnknownIdIsZero = tmp;
|
||||
if (tok != IDENTIFIER) {
|
||||
if (skiponerr && tok != EOI) SkipToNewLine(0);
|
||||
if (skiponerr && tok != EOI) SkipToNewLine();
|
||||
return (struct idf *)0;
|
||||
}
|
||||
return tk.tk_idf;
|
||||
|
@ -108,7 +108,7 @@ domacro()
|
|||
*/
|
||||
if (GetToken(&tk) != INTEGER) {
|
||||
error("bad #line syntax");
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
else
|
||||
do_line((unsigned int)tk.tk_ival);
|
||||
|
@ -125,7 +125,7 @@ domacro()
|
|||
default:
|
||||
/* invalid word seen after the '#' */
|
||||
lexerror("%s: unknown control", tk.tk_idf->id_text);
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
break;
|
||||
case INTEGER: /* # <integer> [<filespecifier>]? */
|
||||
|
@ -135,7 +135,7 @@ domacro()
|
|||
break;
|
||||
default: /* invalid token following '#' */
|
||||
lexerror("illegal # line");
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
EoiForNewline = 0;
|
||||
}
|
||||
|
@ -167,14 +167,14 @@ int to_endif;
|
|||
return;
|
||||
}
|
||||
UnGetChar();
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
continue;
|
||||
}
|
||||
ReplaceMacros = 0;
|
||||
toknum = GetToken(&tk);
|
||||
ReplaceMacros = 1;
|
||||
if (toknum != IDENTIFIER) {
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
continue;
|
||||
}
|
||||
/* an IDENTIFIER: look for #if, #ifdef and #ifndef
|
||||
|
@ -184,13 +184,13 @@ int to_endif;
|
|||
*/
|
||||
switch(tk.tk_idf->id_resmac) {
|
||||
default:
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
break;
|
||||
case K_IF:
|
||||
case K_IFDEF:
|
||||
case K_IFNDEF:
|
||||
push_if();
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
break;
|
||||
case K_ELIF:
|
||||
if (ifstack[nestlevel])
|
||||
|
@ -203,30 +203,30 @@ int to_endif;
|
|||
return;
|
||||
}
|
||||
}
|
||||
else SkipToNewLine(0); /* otherwise done in ifexpr() */
|
||||
else SkipToNewLine(); /* otherwise done in ifexpr() */
|
||||
break;
|
||||
case K_ELSE:
|
||||
if (ifstack[nestlevel])
|
||||
lexerror("#else after #else");
|
||||
++(ifstack[nestlevel]);
|
||||
if (!to_endif && nestlevel == skiplevel) {
|
||||
if (SkipToNewLine(1))
|
||||
if (SkipToNewLine())
|
||||
strict("garbage following #else");
|
||||
NoUnstack--;
|
||||
return;
|
||||
}
|
||||
else SkipToNewLine(0);
|
||||
else SkipToNewLine();
|
||||
break;
|
||||
case K_ENDIF:
|
||||
ASSERT(nestlevel > nestlow);
|
||||
if (nestlevel == skiplevel) {
|
||||
if (SkipToNewLine(1))
|
||||
if (SkipToNewLine())
|
||||
strict("garbage following #endif");
|
||||
nestlevel--;
|
||||
NoUnstack--;
|
||||
return;
|
||||
}
|
||||
else SkipToNewLine(0);
|
||||
else SkipToNewLine();
|
||||
nestlevel--;
|
||||
break;
|
||||
}
|
||||
|
@ -273,7 +273,7 @@ do_include()
|
|||
filenm = (char *)0;
|
||||
}
|
||||
AccFileSpecifier = 0;
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
inctable[0] = WorkingDir;
|
||||
if (filenm) {
|
||||
if (!InsertFile(filenm, &inctable[tok==FILESPECIFIER],&result)){
|
||||
|
@ -313,7 +313,7 @@ do_define()
|
|||
ch = GetChar();
|
||||
if (ch == '(') {
|
||||
if ((nformals = getparams(formals, parbuf)) == -1) {
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
return; /* an error occurred */
|
||||
}
|
||||
ch = GetChar();
|
||||
|
@ -348,12 +348,12 @@ do_elif()
|
|||
{
|
||||
if (nestlevel <= nestlow) {
|
||||
lexerror("#elif without corresponding #if");
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
else { /* restart at this level as if a #if is detected. */
|
||||
if (ifstack[nestlevel]) {
|
||||
lexerror("#elif after #else");
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
nestlevel--;
|
||||
push_if();
|
||||
|
@ -363,7 +363,7 @@ do_elif()
|
|||
|
||||
do_else()
|
||||
{
|
||||
if (SkipToNewLine(1))
|
||||
if (SkipToNewLine())
|
||||
strict("garbage following #else");
|
||||
if (nestlevel <= nestlow)
|
||||
lexerror("#else without corresponding #if");
|
||||
|
@ -378,7 +378,7 @@ do_else()
|
|||
|
||||
do_endif()
|
||||
{
|
||||
if (SkipToNewLine(1))
|
||||
if (SkipToNewLine())
|
||||
strict("garbage following #endif");
|
||||
if (nestlevel <= nestlow) {
|
||||
lexerror("#endif without corresponding #if");
|
||||
|
@ -409,7 +409,7 @@ do_ifdef(how)
|
|||
if (how ^ (id && id->id_macro != 0))
|
||||
skip_block(0);
|
||||
else if (id)
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
|
||||
do_undef()
|
||||
|
@ -427,7 +427,7 @@ do_undef()
|
|||
id->id_macro = (struct macro *) 0;
|
||||
}
|
||||
} /* else: don't complain */
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
else
|
||||
lexerror("illegal #undef construction");
|
||||
|
@ -707,7 +707,7 @@ GetIdentifier(skiponerr)
|
|||
|
||||
tok = GetToken(&tk);
|
||||
if (tok != IDENTIFIER) {
|
||||
if (skiponerr && tok != EOI) SkipToNewLine(0);
|
||||
if (skiponerr && tok != EOI) SkipToNewLine();
|
||||
return (struct idf *)0;
|
||||
}
|
||||
return tk.tk_idf;
|
||||
|
@ -723,7 +723,7 @@ domacro()
|
|||
if (strcmp(tk.tk_idf->id_text, "line")
|
||||
&& strcmp(tk.tk_idf->id_text, "pragma")) {
|
||||
error("illegal # line");
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
return;
|
||||
}
|
||||
else if ( !strcmp(tk.tk_idf->id_text, "pragma")) {
|
||||
|
@ -735,7 +735,7 @@ domacro()
|
|||
}
|
||||
if (tok != INTEGER) {
|
||||
error("illegal # line");
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
return;
|
||||
}
|
||||
do_line((unsigned int) tk.tk_ival);
|
||||
|
@ -752,5 +752,5 @@ do_line(l)
|
|||
LineNumber = l - 1; /* the number of the next input line */
|
||||
if (GetToken(&tk) == STRING) /* is there a filespecifier? */
|
||||
FileName = tk.tk_bts;
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
|
|
|
@ -577,7 +577,7 @@ ch_array(tpp, ex)
|
|||
}
|
||||
/* throw out the characters of the already prepared string */
|
||||
s = Malloc((unsigned) (length));
|
||||
clear(s, length);
|
||||
clear(s, (unsigned)length);
|
||||
i = length <= ex->SG_LEN ? length : ex->SG_LEN;
|
||||
to = s; from = ex->SG_VALUE;
|
||||
while(--i >= 0) {
|
||||
|
|
|
@ -58,6 +58,6 @@ do_pragma()
|
|||
default:
|
||||
break;
|
||||
}
|
||||
SkipToNewLine(0);
|
||||
SkipToNewLine();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,11 +59,10 @@ skipspaces(ch, skipnl)
|
|||
}
|
||||
#endif NOPP
|
||||
|
||||
SkipToNewLine(garbage)
|
||||
int garbage;
|
||||
SkipToNewLine()
|
||||
{
|
||||
register int ch;
|
||||
register int pstrict = 0;
|
||||
register int garbage = 0;
|
||||
|
||||
while ((ch = GetChar()) != '\n') {
|
||||
if (ch == '/') {
|
||||
|
@ -76,9 +75,9 @@ SkipToNewLine(garbage)
|
|||
continue;
|
||||
}
|
||||
}
|
||||
if (garbage && !is_wsp(ch))
|
||||
pstrict = 1;
|
||||
if (!is_wsp(ch))
|
||||
garbage = 1;
|
||||
}
|
||||
++LineNumber;
|
||||
return pstrict;
|
||||
return garbage;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue