mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-24 04:41:25 +00:00
get rid of more duplicate code
This commit is contained in:
parent
de4fe00d2f
commit
9ed9a0c669
1 changed files with 6 additions and 14 deletions
20
parser.c
20
parser.c
|
@ -431,13 +431,9 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case opid1('+'):
|
case opid1('+'):
|
||||||
if (exprs[0]->expression.vtype != exprs[1]->expression.vtype) {
|
if (exprs[0]->expression.vtype != exprs[1]->expression.vtype ||
|
||||||
parseerror(parser, "invalid types used in expression: cannot add type %s and %s",
|
(exprs[0]->expression.vtype != TYPE_VECTOR && exprs[0]->expression.vtype != TYPE_FLOAT) )
|
||||||
type_name[exprs[0]->expression.vtype],
|
{
|
||||||
type_name[exprs[1]->expression.vtype]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (exprs[0]->expression.vtype != TYPE_VECTOR && exprs[0]->expression.vtype != TYPE_FLOAT) {
|
|
||||||
parseerror(parser, "invalid types used in expression: cannot add type %s and %s",
|
parseerror(parser, "invalid types used in expression: cannot add type %s and %s",
|
||||||
type_name[exprs[0]->expression.vtype],
|
type_name[exprs[0]->expression.vtype],
|
||||||
type_name[exprs[1]->expression.vtype]);
|
type_name[exprs[1]->expression.vtype]);
|
||||||
|
@ -458,18 +454,14 @@ static bool parser_sy_pop(parser_t *parser, shunt *sy)
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
case opid1('-'):
|
case opid1('-'):
|
||||||
if (exprs[0]->expression.vtype != exprs[1]->expression.vtype) {
|
if (exprs[0]->expression.vtype != exprs[1]->expression.vtype ||
|
||||||
|
(exprs[0]->expression.vtype != TYPE_VECTOR && exprs[0]->expression.vtype != TYPE_FLOAT) )
|
||||||
|
{
|
||||||
parseerror(parser, "invalid types used in expression: cannot subtract type %s from %s",
|
parseerror(parser, "invalid types used in expression: cannot subtract type %s from %s",
|
||||||
type_name[exprs[1]->expression.vtype],
|
type_name[exprs[1]->expression.vtype],
|
||||||
type_name[exprs[0]->expression.vtype]);
|
type_name[exprs[0]->expression.vtype]);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (exprs[0]->expression.vtype != TYPE_VECTOR && exprs[0]->expression.vtype != TYPE_FLOAT) {
|
|
||||||
parseerror(parser, "invalid types used in expression: cannot subtract type %s from %s",
|
|
||||||
type_name[exprs[0]->expression.vtype],
|
|
||||||
type_name[exprs[1]->expression.vtype]);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
switch (exprs[0]->expression.vtype) {
|
switch (exprs[0]->expression.vtype) {
|
||||||
case TYPE_FLOAT:
|
case TYPE_FLOAT:
|
||||||
out = (ast_expression*)ast_binary_new(ctx, INSTR_SUB_F, exprs[0], exprs[1]);
|
out = (ast_expression*)ast_binary_new(ctx, INSTR_SUB_F, exprs[0], exprs[1]);
|
||||||
|
|
Loading…
Reference in a new issue