From aa0e32197151193d3900baf1de98abce91b9f4ce Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 29 May 1989 11:32:23 +0000 Subject: [PATCH] some fixes --- lang/cem/cemcom/Version.c | 2 +- lang/cem/cemcom/ch7mon.c | 6 +++--- lang/cem/cemcom/domacro.c | 24 +++++++++++++----------- lang/cem/cemcom/options | 4 ++-- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lang/cem/cemcom/Version.c b/lang/cem/cemcom/Version.c index c10d537ea..838ce26e5 100644 --- a/lang/cem/cemcom/Version.c +++ b/lang/cem/cemcom/Version.c @@ -4,5 +4,5 @@ * See the copyright notice in the ACK home directory, in the file "Copyright". */ #ifndef lint -static char Version[] = "ACK CEM compiler Version 3.1"; +static char Version[] = "ACK CEM compiler Version 3.2"; #endif lint diff --git a/lang/cem/cemcom/ch7mon.c b/lang/cem/cemcom/ch7mon.c index bfcec3628..c4cd2e6aa 100644 --- a/lang/cem/cemcom/ch7mon.c +++ b/lang/cem/cemcom/ch7mon.c @@ -53,12 +53,12 @@ ch7mon(oper, expp) break; case '&': if ((*expp)->ex_type->tp_fund == ARRAY) { - warning("& before array ignored"); + expr_warning(*expp, "& before array ignored"); array2pointer(*expp); } else if ((*expp)->ex_type->tp_fund == FUNCTION) { - warning("& before function ignored"); + expr_warning(*expp, "& before function ignored"); function2pointer(*expp); } else @@ -146,7 +146,7 @@ ch7mon(oper, expp) break; case SIZEOF: if (ISNAME(*expp) && (*expp)->VL_IDF->id_def->df_formal_array) - warning("sizeof formal array %s is sizeof pointer!", + expr_warning(*expp, "sizeof formal array %s is sizeof pointer!", (*expp)->VL_IDF->id_text); expr = intexpr((*expp)->ex_class == String ? (arith)((*expp)->SG_LEN) : diff --git a/lang/cem/cemcom/domacro.c b/lang/cem/cemcom/domacro.c index 1b2592d99..4d8ac7d6a 100644 --- a/lang/cem/cemcom/domacro.c +++ b/lang/cem/cemcom/domacro.c @@ -132,7 +132,7 @@ domacro() } PRIVATE -skip_block() +skip_block(to_endif) { /* skip_block() skips the input from 1) a false #if, #ifdef, #ifndef or #elif until the @@ -173,7 +173,7 @@ skip_block() push_if(); break; case K_ELIF: - if (nestlevel == skiplevel) { + if (! to_endif && nestlevel == skiplevel) { nestlevel--; push_if(); if (ifexpr()) { @@ -183,11 +183,13 @@ skip_block() } break; case K_ELSE: - ++(ifstack[nestlevel]); - if (nestlevel == skiplevel) { - SkipRestOfLine(); - NoUnstack--; - return; + if (! to_endif) { + ++(ifstack[nestlevel]); + if (nestlevel == skiplevel) { + SkipRestOfLine(); + NoUnstack--; + return; + } } break; case K_ENDIF: @@ -328,7 +330,7 @@ do_elif() else { /* restart at this level as if a #if is detected. */ nestlevel--; push_if(); - skip_block(); + skip_block(1); } } @@ -340,7 +342,7 @@ do_else() lexerror("#else without corresponding #if"); else { /* mark this level as else-d */ ++(ifstack[nestlevel]); - skip_block(); + skip_block(1); } } @@ -359,7 +361,7 @@ do_if() { push_if(); if (!ifexpr()) /* a false #if/#elif expression */ - skip_block(); + skip_block(0); } PRIVATE @@ -377,7 +379,7 @@ do_ifdef(how) (how && !id->id_macro) || (!how && id->id_macro) */ if (how ^ (id && id->id_macro != 0)) - skip_block(); + skip_block(0); else SkipRestOfLine(); } diff --git a/lang/cem/cemcom/options b/lang/cem/cemcom/options index 0dce7fa7a..646fdf81d 100644 --- a/lang/cem/cemcom/options +++ b/lang/cem/cemcom/options @@ -5,8 +5,8 @@ E run preprocessor only I expand include table with directory name following M set identifier length n don't generate register messages -p generate linenumbers and filename indications - while generating EM code +L don't generate linenumbers and filename indications +p trace P in running the preprocessor do not output '# line' lines R restricted C T take path following as directory for storing temporary file(s) -- 2.34.1