コード例 #1
0
ファイル: Grammar.cs プロジェクト: JiepengTan/ECL
 public void AddFunction(SymFunction val)
 {
     if (CheckSymbol(val))
     {
         _curDomain.AddFunction(val);
     }
 }
コード例 #2
0
ファイル: PathElement`1.cs プロジェクト: pmq20/mono_forked
 public PathElement(T element, string description, SymFunction c) : base(c)
 {
     this.Element            = element;
     this.Description        = description;
     this.isStatic           = false;
     this.isUnmanagedPointer = false;
     this.isManagedPointer   = false;
 }
コード例 #3
0
 public MethodCallPathElement(Method method,
                              bool isGetter, bool isBooleanTyped,
                              bool isStatic, string description,
                              SymFunction func, bool isCompressed)
     : base(method, description, func)
 {
     this.is_boolean_typed = isBooleanTyped;
     this.is_getter        = isGetter;
     this.is_compressed    = isCompressed;
     this.isStatic         = isStatic;
 }
コード例 #4
0
        public ParameterPathElement(Parameter p, string description,
                                    SymFunction c, IMetaDataProvider metaDataProvider)
            : base(p, description, c)
        {
            TypeNode type = metaDataProvider.ParameterType(p);

            ResultType = metaDataProvider.ManagedPointer(type);

            if (metaDataProvider.IsManagedPointer(type))
            {
                this.isManagedPointer = true;
            }
        }
コード例 #5
0
ファイル: Grammar.cs プロジェクト: JiepengTan/ECL
        void funcbody(SymFunction sym)
        {
            _ind = data_offset;
            gen_prolog(sym.typeId);
            _rsym = 0;
            var bsym = -1;
            var csym = -1;

            compound_statement(ref bsym, ref csym, sym);
            gen_back_patch(_rsym, _ind);
            gen_epilog();
            data_offset = _ind;
        }
コード例 #6
0
ファイル: SymDomain.cs プロジェクト: JiepengTan/ECL
 public void AddFunction(SymFunction val)
 {
     RegisterSymbol(val.tokenId, val);
     Functions.Add(val);
     Domains.Add(val);
 }
コード例 #7
0
 public SpecialPathElement(SpecialPathElementKind element, SymFunction c) : base(element, element.ToString(), c)
 {
     this.castTo = "";
 }
コード例 #8
0
ファイル: PathElementBase.cs プロジェクト: REALTOBIZ/mono
		protected PathElementBase (SymFunction c)
		{
			this.Func = c;
		}
コード例 #9
0
ファイル: Grammar.cs プロジェクト: JiepengTan/ECL
        SymFunction parameter_type_list(int func_call, int tokenId)
        {
            int n = 0;

            GetToken();
            Symbol first = null;
            Symbol plast = first;

            var  symFunc    = FindFunction(tokenId, false);
            bool hasDefined = symFunc != null;

            if (symFunc == null)
            {
                //add function
                symFunc         = new SymFunction();
                symFunc.tokenId = tokenId;
                symFunc.__name  = GetTokenName(tokenId);
            }

            while (CurTokenId != TK_CLOSEPA)
            {
                var rawTokenId = CurTokenId;
                if (!type_specifier())
                {
                    Error(ETipsType.UnknowTypeIdentifier, CurTokenId);
                }

                int isForceAlign = -1;
                var s            = declarator(ref n, ref isForceAlign);
                s.Type    = FindStruct(rawTokenId);
                CurSymbol = s;
                if (!hasDefined)
                {
                    symFunc.AddParam(s as SymVar);
                }

                if (CurTokenId == TK_CLOSEPA)
                {
                    break;
                }
                SkipToken(TK_COMMA);
                if (CurTokenId == TK_ELLIPSIS)
                {
                    func_call = KW_CDECL;
                    GetToken();
                    break;
                }
            }

            SyntaxState = SNTX_DELAY;
            SkipToken(TK_CLOSEPA);
            if (CurTokenId == TK_BEGIN) // 函数定义
            {
                SyntaxState = SNTX_LF_HT;
            }
            else // 函数声明
            {
                SyntaxState = SNTX_NUL;
            }
            SyntaxIndent();
            CurBuildInTypeId = T_FUNC;
            CurSymbol        = symFunc;
            return(symFunc);
        }
コード例 #10
0
ファイル: PathElementBase.cs プロジェクト: pmq20/mono_forked
 protected PathElementBase(SymFunction c)
 {
     this.Func = c;
 }