コード例 #1
0
ファイル: MethodBodyResolver.cs プロジェクト: zgf/VBF
        public override AstNode VisitArrayLookup(ArrayLookup ast)
        {
            Visit(ast.Array);

            ArrayType arrayType = ast.Array.ExpressionType as ArrayType;

            if (arrayType == null)
            {
                AddError(c_SE_ExpressionNotArray, ast.IndexSpan);
            }
            else if (arrayType.ElementType != PrimaryType.Int)
            {
                AddError(c_SE_NotSupported, ast.IndexSpan, "Arrays rather than int[] are not operatable");
            }

            Visit(ast.Index);

            if (ast.Index.ExpressionType != PrimaryType.Int)
            {
                AddError(c_SE_InvalidCast, ast.IndexSpan, ast.Index.ExpressionType.Name, PrimaryType.Int.Name);
            }

            ast.ExpressionType = arrayType == null ? PrimaryType.Unknown : arrayType.ElementType;

            return(ast);
        }
コード例 #2
0
ファイル: EmitTranslator.cs プロジェクト: zxs1215/VBF
        public override AstNode VisitArrayLookup(ArrayLookup ast)
        {
            //push array to e-stack
            Visit(ast.Array);

            //push index
            Visit(ast.Index);

            m_ilgen.Emit(OpCodes.Ldelem_I4);

            return(ast);
        }
コード例 #3
0
ファイル: EmitTranslator.cs プロジェクト: destinyclown/VBF
        public override AstNode VisitArrayLookup(ArrayLookup ast)
        {
            //push array to e-stack
            Visit(ast.Array);

            //push index
            Visit(ast.Index);

            m_ilgen.Emit(OpCodes.Ldelem_I4);

            return ast;
        }
コード例 #4
0
ファイル: MethodBodyResolver.cs プロジェクト: jiangzhen/VBF
        public override AstNode VisitArrayLookup(ArrayLookup ast)
        {
            Visit(ast.Array);

            ArrayType arrayType = ast.Array.ExpressionType as ArrayType;
            if (arrayType == null)
            {
                m_errorManager.AddError(c_SE_ExpressionNotArray, ast.IndexSpan);
            }
            else if (arrayType.ElementType != PrimaryType.Int)
            {
                m_errorManager.AddError(c_SE_NotSupported, ast.IndexSpan, "Arrays rather than int[] are not operatable");
            }

            Visit(ast.Index);

            if (ast.Index.ExpressionType != PrimaryType.Int)
            {
                m_errorManager.AddError(c_SE_InvalidCast, ast.IndexSpan, ast.Index.ExpressionType.Name, PrimaryType.Int.Name);
            }

            ast.ExpressionType = arrayType == null ? PrimaryType.Unknown : arrayType.ElementType;

            return ast;
        }
コード例 #5
0
ファイル: AstVisitor.cs プロジェクト: zxs1215/VBF
 public virtual AstNode VisitArrayLookup(ArrayLookup ast)
 {
     return(ast);
 }