Allow conditional directives within .STRUCT7:UNION and .ENUM

git-svn-id: svn://svn.cc65.org/cc65/trunk@2672 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2003-11-17 18:49:50 +00:00
parent 57cc152ad6
commit 5ef1f65c9b
4 changed files with 61 additions and 10 deletions

View File

@@ -321,7 +321,7 @@ void DoConditionals (void)
SetIfCond (D, 1);
SkipUntilSep ();
}
}
}
IfCond = GetCurrentIfCond ();
break;
@@ -367,7 +367,7 @@ void DoConditionals (void)
case TOK_IFP816:
D = AllocIf (".IFP816", 1);
NextTok ();
NextTok ();
if (IfCond) {
SetIfCond (D, GetCPU() == CPU_65816);
}
@@ -413,6 +413,39 @@ void DoConditionals (void)
int CheckConditionals (void)
/* Check if the current token is one that starts a conditional directive, and
* call DoConditionals if so. Return true if a conditional directive was found,
* return false otherwise.
*/
{
switch (Tok) {
case TOK_ELSE:
case TOK_ELSEIF:
case TOK_ENDIF:
case TOK_IF:
case TOK_IFBLANK:
case TOK_IFCONST:
case TOK_IFDEF:
case TOK_IFNBLANK:
case TOK_IFNCONST:
case TOK_IFNDEF:
case TOK_IFNREF:
case TOK_IFP02:
case TOK_IFP816:
case TOK_IFPC02:
case TOK_IFPSC02:
case TOK_IFREF:
DoConditionals ();
return 1;
default:
return 0;
}
}
void CheckOpenIfs (void)
/* Called from the scanner before closing an input file. Will check for any
* open .ifs in this file.