public override dynamic Visit(ArrayDereferenceNode node) { var lValueType = node.LValue.Accept(this); node.Expression.Accept(this); var expressionType = node.Expression.Type.PrimitiveType; if (expressionType != PrimitiveType.Integer) { Context.ErrorService.Add( ErrorType.Unknown, node.Expression.Token, $"type error: array index must be an integer expression" ); lValueType = PrimitiveType.Error; // throw new Exception("type error: array index must be an integer expression"); } /*if (expressionType == null) * { * node.Type = new ArrayTypeNode * { * PrimitiveType = PrimitiveType.Array, * SubType = ((ArrayTypeNode) node.LValue.Type).SubType * }; * return PrimitiveType.Array; * }*/ node.Type = new SimpleTypeNode { PrimitiveType = lValueType // ((ArrayTypeNode) lValueType).SubType }; return(lValueType); }
public override dynamic Visit(ArrayDereferenceNode node) { node.Expression = ReplaceCallNode(node.Expression); node.Expression.Accept(this); return(null); }
public abstract dynamic Visit(ArrayDereferenceNode node);
public override dynamic Visit(ArrayDereferenceNode node) { return(null); }