public ArrayTypeAST GetArrayType(ArrayAccessAST arrayAccess) { arrayAccess.ArrayVariableName.Accept(this); ArrayTypeAST arrayType = _stateInfo.currentType as ArrayTypeAST; if (arrayType == null) { throw new Exception("Invalid array type " + arrayAccess.ArrayVariableName); } return(arrayType); }
public override void Visit(ArrayAccessAST arrayAccess) { if (_stateInfo.isConst) { throw new Exception("Expression must be constant"); } var arrayType = GetArrayType(arrayAccess); var accessDimensions = arrayAccess.AccessExprList.Count; _stateInfo.currentType = GetArrayContainedType(arrayType, accessDimensions); }
public override void Visit(ArrayAccessAST arrayAccess) { foreach (var expr in arrayAccess.AccessExprList) { var accessExprType = _exprTypeVisitor.GetAstNodeType(_currentFileName, _currentScopeId, _currentNodePosition, expr); if (!Vocabulary.Ints.Contains(accessExprType.ToString())) { throw new Exception(string.Format("Type mismatch : array {0} accessor must be an integer, but '{1}' type found", arrayAccess.ArrayVariableName.ToString(), accessExprType.ToString())); } } }
public override void Visit(ArrayAccessAST arrayAcess) { }
public virtual void Visit(ArrayAccessAST arrayAcess) { }