diff --git a/lang/cem/cemcom.ansi/.distr b/lang/cem/cemcom.ansi/.distr index f908b7878..0aa72f0ee 100644 --- a/lang/cem/cemcom.ansi/.distr +++ b/lang/cem/cemcom.ansi/.distr @@ -11,7 +11,6 @@ LintPars align.h arith.c arith.h -asm.c assert.h atw.h blocks.c diff --git a/lang/cem/cemcom.ansi/LLlex.c b/lang/cem/cemcom.ansi/LLlex.c index 87c4d2eb7..a997ddafe 100644 --- a/lang/cem/cemcom.ansi/LLlex.c +++ b/lang/cem/cemcom.ansi/LLlex.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' + 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 */ } diff --git a/lang/cem/cemcom.ansi/LLlex.h b/lang/cem/cemcom.ansi/LLlex.h index 9487199ee..a4539597d 100644 --- a/lang/cem/cemcom.ansi/LLlex.h +++ b/lang/cem/cemcom.ansi/LLlex.h @@ -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 */ diff --git a/lang/cem/cemcom.ansi/ch3.c b/lang/cem/cemcom.ansi/ch3.c index 81b035184..c8ceab339 100644 --- a/lang/cem/cemcom.ansi/ch3.c +++ b/lang/cem/cemcom.ansi/ch3.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) diff --git a/lang/cem/cemcom.ansi/class.h b/lang/cem/cemcom.ansi/class.h index 5c5df084e..e3bdcad8c 100644 --- a/lang/cem/cemcom.ansi/class.h +++ b/lang/cem/cemcom.ansi/class.h @@ -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[]; diff --git a/lang/cem/cemcom.ansi/declar.g b/lang/cem/cemcom.ansi/declar.g index 86ca4b714..8f0f5a728 100644 --- a/lang/cem/cemcom.ansi/declar.g +++ b/lang/cem/cemcom.ansi/declar.g @@ -110,19 +110,22 @@ 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) - error("repeated type qualifier"); - ds->ds_typequal |= TQ_VOLATILE; - } - if (DOT == CONST) { - if (ds->ds_typequal & TQ_CONST) - error("repeated type qualifier"); - ds->ds_typequal |= TQ_CONST; - } + VOLATILE + { if (ds->ds_typequal & TQ_VOLATILE) + error("repeated type qualifier"); + ds->ds_typequal |= TQ_VOLATILE; + } +| + /* 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; } ; @@ -692,28 +695,20 @@ pointer(int *qual;) /* 3.5.4 */ type_qualifier_list(int *qual;) : -[ - [ VOLATILE | CONST ] - { *qual = (DOT == VOLATILE) ? TQ_VOLATILE : TQ_CONST; } - [ - [ VOLATILE | CONST ] - { if (DOT == VOLATILE) { - if (*qual & TQ_VOLATILE) - error("repeated type qualifier"); - *qual |= TQ_VOLATILE; - } - if (DOT == CONST) { - if (*qual & TQ_CONST) - error("repeated type qualifier"); - *qual |= TQ_CONST; - } - } - - ]* -| - empty { *qual = 0; } -] + [ + VOLATILE + { if (*qual & TQ_VOLATILE) + error("repeated type qualifier"); + *qual |= TQ_VOLATILE; + } + | + CONST + { if (*qual & TQ_CONST) + error("repeated type qualifier"); + *qual |= TQ_CONST; + } + ]* ; empty: diff --git a/lang/cem/cemcom.ansi/domacro.c b/lang/cem/cemcom.ansi/domacro.c index cec6df18e..bb38e8f04 100644 --- a/lang/cem/cemcom.ansi/domacro.c +++ b/lang/cem/cemcom.ansi/domacro.c @@ -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: /* # []? */ @@ -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(); } diff --git a/lang/cem/cemcom.ansi/ival.g b/lang/cem/cemcom.ansi/ival.g index a927188a2..cfaff03bc 100644 --- a/lang/cem/cemcom.ansi/ival.g +++ b/lang/cem/cemcom.ansi/ival.g @@ -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) { diff --git a/lang/cem/cemcom.ansi/pragma.c b/lang/cem/cemcom.ansi/pragma.c index 783e51b86..121e86d3e 100644 --- a/lang/cem/cemcom.ansi/pragma.c +++ b/lang/cem/cemcom.ansi/pragma.c @@ -58,6 +58,6 @@ do_pragma() default: break; } - SkipToNewLine(0); + SkipToNewLine(); } } diff --git a/lang/cem/cemcom.ansi/skip.c b/lang/cem/cemcom.ansi/skip.c index 599313e86..e4cac9ba8 100644 --- a/lang/cem/cemcom.ansi/skip.c +++ b/lang/cem/cemcom.ansi/skip.c @@ -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; }