/* 1 if a corresponding ELSE has been */
/* encountered. */
+int nestlevel = -1;
+
PRIVATE struct idf *
GetIdentifier()
{
}
break;
case K_ENDIF:
- ASSERT(nestlevel >= 0);
+ ASSERT(nestlevel > nestlow);
if (nestlevel == skiplevel) {
SkipRestOfLine();
nestlevel--;
File_Inserted = 1;
FileName = result;
LineNumber = 0;
- nestlevel = -1;
+ nestlow = nestlevel;
}
}
}
PRIVATE
do_elif()
{
- if (nestlevel < 0 || (ifstack[nestlevel])) {
+ if (nestlevel <= nestlow || (ifstack[nestlevel])) {
lexerror("#elif without corresponding #if");
SkipRestOfLine();
}
do_else()
{
SkipRestOfLine();
- if (nestlevel < 0 || (ifstack[nestlevel]))
+ if (nestlevel <= nestlow || (ifstack[nestlevel]))
lexerror("#else without corresponding #if");
else { /* mark this level as else-d */
++(ifstack[nestlevel]);
do_endif()
{
SkipRestOfLine();
- if (nestlevel < 0) {
+ if (nestlevel <= nestlow) {
lexerror("#endif without corresponding #if");
}
else nestlevel--;
struct file_info {
unsigned int fil_lino;
- int fil_nestlevel;
+ int fil_nestlow;
char *fil_name;
char *fil_wdir;
};
-#define nestlevel finfo.fil_nestlevel
+#define nestlow finfo.fil_nestlow
#define LineNumber finfo.fil_lino
#define FileName finfo.fil_name
#define WorkingDir finfo.fil_wdir
#define INP_TYPE struct file_info
#define INP_VAR finfo
struct file_info finfo;
+extern int nestlevel;
#include "nopp.h"
#include <inp_pkg.body>
AtEoIT()
{
#ifndef NOPP
- if (NoUnstack) lexwarning("unexpected EOF");
+ /* if (NoUnstack) lexwarning("unexpected EOF"); ??? */
DoUnstack();
#endif NOPP
return 0;
{
#ifndef NOPP
- if (nestlevel != -1) lexwarning("missing #endif");
+ if (nestlevel != nestlow) lexwarning("missing #endif");
else
#endif NOPP
if (NoUnstack) lexwarning("unexpected EOF");
+ nestlevel = nestlow;
return 0;
}