BinaryExpression *ProgramParser::parse_binary(Expression *left, const Operator *oper)
{
- RefPtr<BinaryExpression> binary = new BinaryExpression;
+ RefPtr<BinaryExpression> binary = (oper->precedence==16 ? new Assignment : new BinaryExpression);
binary->left = left;
binary->oper = parse_token();
if(binary->oper=="[")
}
else
binary->right = parse_expression(oper->precedence+(oper->assoc==RIGHT_TO_LEFT));
- binary->assignment = (oper->precedence==16);
return binary.release();
}
iface->name = expect_identifier();
parse_block(iface->members, true);
- expect(";");
+ if(!check(";"))
+ {
+ iface->instance_name = expect_identifier();
+ if(check("["))
+ {
+ iface->array = true;
+ expect("]");
+ }
+ expect(";");
+ }
return iface.release();
}