Attempting to reduce the absurdity of ent.field[idx]=foo in fteqcc.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3524 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
e220534bc1
commit
d0d380a19a
1 changed files with 10 additions and 10 deletions
|
@ -4052,7 +4052,7 @@ PR_ParseValue
|
||||||
Returns the global ofs for the current token
|
Returns the global ofs for the current token
|
||||||
============
|
============
|
||||||
*/
|
*/
|
||||||
QCC_def_t *QCC_PR_ParseValue (QCC_type_t *assumeclass)
|
QCC_def_t *QCC_PR_ParseValue (QCC_type_t *assumeclass, pbool allowarrayassign)
|
||||||
{
|
{
|
||||||
QCC_def_t *ao=NULL; //arrayoffset
|
QCC_def_t *ao=NULL; //arrayoffset
|
||||||
QCC_def_t *d, *nd, *od;
|
QCC_def_t *d, *nd, *od;
|
||||||
|
@ -4352,7 +4352,7 @@ reloop:
|
||||||
if (d->scope)
|
if (d->scope)
|
||||||
QCC_PR_ParseError(0, "Scoped array without specific engine support");
|
QCC_PR_ParseError(0, "Scoped array without specific engine support");
|
||||||
|
|
||||||
if (QCC_PR_CheckToken("="))
|
if (allowarrayassign && QCC_PR_CheckToken("="))
|
||||||
{
|
{
|
||||||
QCC_def_t *args[2];
|
QCC_def_t *args[2];
|
||||||
|
|
||||||
|
@ -4645,7 +4645,7 @@ reloop:
|
||||||
QCC_PR_Expect(")");
|
QCC_PR_Expect(")");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
field = QCC_PR_ParseValue(d->type);
|
field = QCC_PR_ParseValue(d->type, false);
|
||||||
if (field->type->type == ev_field)
|
if (field->type->type == ev_field)
|
||||||
{
|
{
|
||||||
if (!field->type->aux_type)
|
if (!field->type->aux_type)
|
||||||
|
@ -4980,7 +4980,7 @@ QCC_def_t *QCC_PR_Term (void)
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return QCC_PR_ParseValue (pr_classtype);
|
return QCC_PR_ParseValue (pr_classtype, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6529,7 +6529,7 @@ void QCC_PR_ParseAsm(void)
|
||||||
{
|
{
|
||||||
patch1 = &statements[numstatements];
|
patch1 = &statements[numstatements];
|
||||||
|
|
||||||
a = QCC_PR_ParseValue(pr_classtype);
|
a = QCC_PR_ParseValue(pr_classtype, false);
|
||||||
QCC_PR_Statement3(&pr_opcodes[op], a, NULL, NULL, true);
|
QCC_PR_Statement3(&pr_opcodes[op], a, NULL, NULL, true);
|
||||||
|
|
||||||
if (pr_token_type == tt_name)
|
if (pr_token_type == tt_name)
|
||||||
|
@ -6548,8 +6548,8 @@ void QCC_PR_ParseAsm(void)
|
||||||
{
|
{
|
||||||
patch1 = &statements[numstatements];
|
patch1 = &statements[numstatements];
|
||||||
|
|
||||||
a = QCC_PR_ParseValue(pr_classtype);
|
a = QCC_PR_ParseValue(pr_classtype, false);
|
||||||
b = QCC_PR_ParseValue(pr_classtype);
|
b = QCC_PR_ParseValue(pr_classtype, false);
|
||||||
QCC_PR_Statement3(&pr_opcodes[op], a, b, NULL, true);
|
QCC_PR_Statement3(&pr_opcodes[op], a, b, NULL, true);
|
||||||
|
|
||||||
if (pr_token_type == tt_name)
|
if (pr_token_type == tt_name)
|
||||||
|
@ -6568,15 +6568,15 @@ void QCC_PR_ParseAsm(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (pr_opcodes[op].type_a != &type_void)
|
if (pr_opcodes[op].type_a != &type_void)
|
||||||
a = QCC_PR_ParseValue(pr_classtype);
|
a = QCC_PR_ParseValue(pr_classtype, false);
|
||||||
else
|
else
|
||||||
a=NULL;
|
a=NULL;
|
||||||
if (pr_opcodes[op].type_b != &type_void)
|
if (pr_opcodes[op].type_b != &type_void)
|
||||||
b = QCC_PR_ParseValue(pr_classtype);
|
b = QCC_PR_ParseValue(pr_classtype, false);
|
||||||
else
|
else
|
||||||
b=NULL;
|
b=NULL;
|
||||||
if (pr_opcodes[op].associative==ASSOC_LEFT && pr_opcodes[op].type_c != &type_void)
|
if (pr_opcodes[op].associative==ASSOC_LEFT && pr_opcodes[op].type_c != &type_void)
|
||||||
c = QCC_PR_ParseValue(pr_classtype);
|
c = QCC_PR_ParseValue(pr_classtype, false);
|
||||||
else
|
else
|
||||||
c=NULL;
|
c=NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue