diff --git a/src/tile/AntlrToExpression.java b/src/tile/AntlrToExpression.java index e71c431..28531ef 100644 --- a/src/tile/AntlrToExpression.java +++ b/src/tile/AntlrToExpression.java @@ -188,6 +188,8 @@ public Expression visitCastExpression(CastExpressionContext ctx) { return visit(ctx.unaryExpression()); } else if (ctx.arrayIndexAccessor() != null) { return visit(ctx.arrayIndexAccessor()); + } else if (ctx.objectAccessor() != null) { + return visit(ctx.objectAccessor()); } } String cast_type = ctx.typeName().getText(); @@ -201,6 +203,8 @@ public Expression visitCastExpression(CastExpressionContext ctx) { expr = visit(ctx.unaryExpression()); } else if (ctx.arrayIndexAccessor() != null) { expr = visit(ctx.arrayIndexAccessor()); + } else if (ctx.objectAccessor() != null) { + expr = visit(ctx.objectAccessor()); } expr_type = expr.getType(); diff --git a/src/tile/ast/stmt/VariableAssignment.java b/src/tile/ast/stmt/VariableAssignment.java index 20969e6..f34c204 100644 --- a/src/tile/ast/stmt/VariableAssignment.java +++ b/src/tile/ast/stmt/VariableAssignment.java @@ -76,7 +76,7 @@ else if (typeInfo.var_type.equals("float") && typeInfo.expr_type.equals("int")) // FIXME: fix here hset created for arrays generatedCode += " push " + offset + "\n"; generatedCode += " push " + type_size + "\n"; - generatedCode += " hset\n"; + generatedCode += " hsetof\n"; } else if (typeInfo.info_array != null) { if (isGlobal) { generatedCode += " gload " + tasmIdx + "\n";