renamed 'exp' in xlat_parser.y to 'expr' because this gets in the way of searching for calls of the exp(x) function.

This commit is contained in:
Christoph Oelckers 2016-03-11 13:43:17 +01:00
parent 9843f16cc0
commit 7edd5e2dac
1 changed files with 30 additions and 30 deletions

View File

@ -30,18 +30,18 @@ external_declaration ::= NOP.
%left MULTIPLY DIVIDE MODULUS. %left MULTIPLY DIVIDE MODULUS.
%left NEG. %left NEG.
%type exp {int} %type expr {int}
exp(A) ::= NUM(B). { A = B.val; } expr(A) ::= NUM(B). { A = B.val; }
exp(A) ::= exp(B) PLUS exp(C). { A = B + C; } expr(A) ::= expr(B) PLUS expr(C). { A = B + C; }
exp(A) ::= exp(B) MINUS exp(C). { A = B - C; } expr(A) ::= expr(B) MINUS expr(C). { A = B - C; }
exp(A) ::= exp(B) MULTIPLY exp(C). { A = B * C; } expr(A) ::= expr(B) MULTIPLY expr(C). { A = B * C; }
exp(A) ::= exp(B) DIVIDE exp(C). { if (C != 0) A = B / C; else context->PrintError("Division by zero"); } expr(A) ::= expr(B) DIVIDE expr(C). { if (C != 0) A = B / C; else context->PrintError("Division by zero"); }
exp(A) ::= exp(B) MODULUS exp(C). { if (C != 0) A = B % C; else context->PrintError("Division by zero"); } expr(A) ::= expr(B) MODULUS expr(C). { if (C != 0) A = B % C; else context->PrintError("Division by zero"); }
exp(A) ::= exp(B) OR exp(C). { A = B | C; } expr(A) ::= expr(B) OR expr(C). { A = B | C; }
exp(A) ::= exp(B) AND exp(C). { A = B & C; } expr(A) ::= expr(B) AND expr(C). { A = B & C; }
exp(A) ::= exp(B) XOR exp(C). { A = B ^ C; } expr(A) ::= expr(B) XOR expr(C). { A = B ^ C; }
exp(A) ::= MINUS exp(B). [NEG] { A = -B; } expr(A) ::= MINUS expr(B). [NEG] { A = -B; }
exp(A) ::= LPAREN exp(B) RPAREN. { A = B; } expr(A) ::= LPAREN expr(B) RPAREN. { A = B; }
//========================================================================== //==========================================================================
@ -50,7 +50,7 @@ exp(A) ::= LPAREN exp(B) RPAREN. { A = B; }
// //
//========================================================================== //==========================================================================
define_statement ::= DEFINE SYM(A) LPAREN exp(B) RPAREN. define_statement ::= DEFINE SYM(A) LPAREN expr(B) RPAREN.
{ {
context->AddSym (A.sym, B); context->AddSym (A.sym, B);
} }
@ -77,7 +77,7 @@ single_enum ::= SYM(A).
context->AddSym (A.sym, context->EnumVal++); context->AddSym (A.sym, context->EnumVal++);
} }
single_enum ::= SYM(A) EQUALS exp(B). single_enum ::= SYM(A) EQUALS expr(B).
{ {
context->AddSym (A.sym, B); context->AddSym (A.sym, B);
context->EnumVal = B+1; context->EnumVal = B+1;
@ -90,19 +90,19 @@ single_enum ::= SYM(A) EQUALS exp(B).
//========================================================================== //==========================================================================
%type linetype_exp {int} %type linetype_exp {int}
linetype_exp(Z) ::= exp(A). linetype_exp(Z) ::= expr(A).
{ {
Z = static_cast<XlatParseContext *>(context)->DefiningLineType = A; Z = static_cast<XlatParseContext *>(context)->DefiningLineType = A;
} }
linetype_declaration ::= linetype_exp(linetype) EQUALS exp(flags) COMMA exp(special) LPAREN special_args(arg) RPAREN. linetype_declaration ::= linetype_exp(linetype) EQUALS expr(flags) COMMA expr(special) LPAREN special_args(arg) RPAREN.
{ {
SimpleLineTranslations.SetVal(linetype, SimpleLineTranslations.SetVal(linetype,
FLineTrans(special&0xffff, flags+arg.addflags, arg.args[0], arg.args[1], arg.args[2], arg.args[3], arg.args[4])); FLineTrans(special&0xffff, flags+arg.addflags, arg.args[0], arg.args[1], arg.args[2], arg.args[3], arg.args[4]));
static_cast<XlatParseContext *>(context)->DefiningLineType = -1; static_cast<XlatParseContext *>(context)->DefiningLineType = -1;
} }
linetype_declaration ::= linetype_exp EQUALS exp COMMA SYM(S) LPAREN special_args RPAREN. linetype_declaration ::= linetype_exp EQUALS expr COMMA SYM(S) LPAREN special_args RPAREN.
{ {
Printf ("%s, line %d: %s is undefined\n", context->SourceFile, context->SourceLine, S.sym); Printf ("%s, line %d: %s is undefined\n", context->SourceFile, context->SourceLine, S.sym);
static_cast<XlatParseContext *>(context)->DefiningLineType = -1; static_cast<XlatParseContext *>(context)->DefiningLineType = -1;
@ -222,7 +222,7 @@ special_args(Z) ::= multi_special_arg(A).
%type boom_body {MoreLines *} %type boom_body {MoreLines *}
boom_declaration ::= LBRACKET exp(special) RBRACKET LPAREN exp(firsttype) COMMA exp(lasttype) RPAREN LBRACE boom_body(stores) RBRACE. boom_declaration ::= LBRACKET expr(special) RBRACKET LPAREN expr(firsttype) COMMA expr(lasttype) RPAREN LBRACE boom_body(stores) RBRACE.
{ {
int i; int i;
MoreLines *probe; MoreLines *probe;
@ -308,12 +308,12 @@ boom_selector(A) ::= ARG5. { A = 3; }
boom_op(A) ::= EQUALS. { A = '='; } boom_op(A) ::= EQUALS. { A = '='; }
boom_op(A) ::= OR_EQUAL. { A = OR_EQUAL; } boom_op(A) ::= OR_EQUAL. { A = OR_EQUAL; }
boom_args(A) ::= exp(B). boom_args(A) ::= expr(B).
{ {
A.constant = B; A.constant = B;
A.filters = NULL; A.filters = NULL;
} }
boom_args(A) ::= exp(B) LBRACKET arg_list(C) RBRACKET. boom_args(A) ::= expr(B) LBRACKET arg_list(C) RBRACKET.
{ {
A.mask = B; A.mask = B;
A.filters = C; A.filters = C;
@ -332,7 +332,7 @@ arg_list(A) ::= list_val(B) COMMA arg_list(C).
A->filter = B; A->filter = B;
} }
list_val(A) ::= exp(B) COLON exp(C). list_val(A) ::= expr(B) COLON expr(C).
{ {
A.filter = B; A.filter = B;
A.value = C; A.value = C;
@ -344,7 +344,7 @@ list_val(A) ::= exp(B) COLON exp(C).
// //
//========================================================================== //==========================================================================
maxlinespecial_def ::= MAXLINESPECIAL EQUALS exp(mx) SEMICOLON. maxlinespecial_def ::= MAXLINESPECIAL EQUALS expr(mx) SEMICOLON.
{ {
// Just kill all specials higher than the max. // Just kill all specials higher than the max.
// If the translator wants to redefine some later, just let it. // If the translator wants to redefine some later, just let it.
@ -359,36 +359,36 @@ maxlinespecial_def ::= MAXLINESPECIAL EQUALS exp(mx) SEMICOLON.
%type sector_op {int} %type sector_op {int}
sector_declaration ::= SECTOR exp(from) EQUALS exp(to) SEMICOLON. sector_declaration ::= SECTOR expr(from) EQUALS expr(to) SEMICOLON.
{ {
FSectorTrans tr(to, true); FSectorTrans tr(to, true);
SectorTranslations.SetVal(from, tr); SectorTranslations.SetVal(from, tr);
} }
sector_declaration ::= SECTOR exp EQUALS SYM(sy) SEMICOLON. sector_declaration ::= SECTOR expr EQUALS SYM(sy) SEMICOLON.
{ {
Printf("Unknown constant '%s'\n", sy.sym); Printf("Unknown constant '%s'\n", sy.sym);
} }
sector_declaration ::= SECTOR exp(from) EQUALS exp(to) NOBITMASK SEMICOLON. sector_declaration ::= SECTOR expr(from) EQUALS expr(to) NOBITMASK SEMICOLON.
{ {
FSectorTrans tr(to, false); FSectorTrans tr(to, false);
SectorTranslations.SetVal(from, tr); SectorTranslations.SetVal(from, tr);
} }
sector_bitmask ::= SECTOR BITMASK exp(mask) sector_op(op) exp(shift) SEMICOLON. sector_bitmask ::= SECTOR BITMASK expr(mask) sector_op(op) expr(shift) SEMICOLON.
{ {
FSectorMask sm = { mask, op, shift}; FSectorMask sm = { mask, op, shift};
SectorMasks.Push(sm); SectorMasks.Push(sm);
} }
sector_bitmask ::= SECTOR BITMASK exp(mask) SEMICOLON. sector_bitmask ::= SECTOR BITMASK expr(mask) SEMICOLON.
{ {
FSectorMask sm = { mask, 0, 0}; FSectorMask sm = { mask, 0, 0};
SectorMasks.Push(sm); SectorMasks.Push(sm);
} }
sector_bitmask ::= SECTOR BITMASK exp(mask) CLEAR SEMICOLON. sector_bitmask ::= SECTOR BITMASK expr(mask) CLEAR SEMICOLON.
{ {
FSectorMask sm = { mask, 0, 1}; FSectorMask sm = { mask, 0, 1};
SectorMasks.Push(sm); SectorMasks.Push(sm);
@ -399,7 +399,7 @@ sector_op(A) ::= RSHASSIGN. { A = -1; }
%type lineflag_op {int} %type lineflag_op {int}
lineflag_declaration ::= LINEFLAG exp(from) EQUALS exp(to) SEMICOLON. lineflag_declaration ::= LINEFLAG expr(from) EQUALS expr(to) SEMICOLON.
{ {
if (from >= 0 && from < 16) if (from >= 0 && from < 16)
{ {
@ -408,7 +408,7 @@ lineflag_declaration ::= LINEFLAG exp(from) EQUALS exp(to) SEMICOLON.
} }
} }
lineflag_declaration ::= LINEFLAG exp(from) AND exp(mask) SEMICOLON. lineflag_declaration ::= LINEFLAG expr(from) AND expr(mask) SEMICOLON.
{ {
if (from >= 0 && from < 16) if (from >= 0 && from < 16)
{ {