亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? support.c

?? nVidia開發的圖形語言 Cg
?? C
?? 第 1 頁 / 共 5 頁
字號:
                    case TYPE_CATEGORY_NONE:
                        SemanticError(loc, ERROR___INVALID_INITIALIZATION);
                        break;
                    case TYPE_CATEGORY_SCALAR:
                        assert(fExpr->common.kind == BINARY_N && fExpr->bin.op == EXPR_LIST_OP);
                        if (DontAssign) {
                            lSymb->details.var.init = fExpr;
                        } else {
                            lExpr = (expr *) NewSymbNode(VARIABLE_OP, lSymb);
                            lStmt = NewSimpleAssignmentStmt(loc, lExpr, fExpr->bin.left, 1);
                        }
                        break;
                    case TYPE_CATEGORY_ARRAY:
                        if (IsVector(lType, &len) || IsMatrix(lType, &len, &len2)) {
                            assert(fExpr->common.kind == BINARY_N && fExpr->bin.op == EXPR_LIST_OP);
                            if (DontAssign) {
                                lSymb->details.var.init = fExpr;
                            } else {
                                lExpr = (expr *) NewSymbNode(VARIABLE_OP, lSymb);
                                lStmt = NewSimpleAssignmentStmt(loc, lExpr, fExpr->bin.left, 1);
                            }
                        } else {
                            SemanticError(loc, ERROR___ARRAY2_INIT_NOT_DONE);
                        }
                        break;
                    }
                }
            }
        }
        if (lSymb->kind == FUNCTION_S) {
            lSymb = lSymb->details.fun.params;
            while (lSymb) {
                if (lSymb->kind == VARIABLE_S) {
                    if (lSymb->details.var.semantics)
                        SemanticWarning(loc, WARNING_S_FORWARD_SEMANTICS_IGNORED,
                                        GetAtomString(atable, lSymb->name));
                }
                lSymb = lSymb->next;
            }
        }
    }
    return lStmt;
} // Init_Declarator

/*
 * Declarator() - Process a declarator.
 *
 */

decl *Declarator(SourceLoc *loc, decl *fDecl, int semantics)
{
    Symbol *lSymb, *params;
    Scope *lScope;
    Type *lType;

    if (CurrentScope->InFormalParameters) {
        /*
         * Don't add formal parameters to the symbol table until we're
         * sure that we're in a function declaration.
         *
         */
        if (fDecl->type.storageClass != SC_UNKNOWN)
            SemanticError(&fDecl->loc, ERROR_S_STORAGE_NOT_ALLOWED,
                          GetAtomString(atable, fDecl->name));
        fDecl->semantics = semantics;
    } else {
        lSymb = LookUpLocalSymbol(CurrentScope, fDecl->name);
        if (!lSymb) {
            lType = GetTypePointer(&fDecl->loc, &fDecl->type);
            if (IsVoid(lType)) {
                SemanticError(&fDecl->loc, ERROR_S_VOID_TYPE_INVALID,
                              GetAtomString(atable, fDecl->name));
            }
            if (fDecl->type.type.properties & TYPE_MISC_TYPEDEF) {
                lSymb = DefineTypedef(loc, CurrentScope, fDecl->name, lType);
                if (semantics)
                    SemanticError(loc, ERROR_S_SEMANTICS_NON_VARIABLE,
                                GetAtomString(atable, fDecl->name));
                if (fDecl->type.storageClass != SC_UNKNOWN)
                    SemanticError(&fDecl->loc, ERROR_S_STORAGE_NOT_ALLOWED_TYPEDEF,
                         GetAtomString(atable, fDecl->name));
            } else {
                if (GetQualifiers(&fDecl->type.type) & TYPE_QUALIFIER_INOUT) {
                    SemanticError(&fDecl->loc, ERROR_S_IN_OUT_PARAMS_ONLY,
                                  GetAtomString(atable, fDecl->name));
                }
                if (GetCategory(&fDecl->type.type) == TYPE_CATEGORY_FUNCTION) {
                    lScope = NewScope();
                    params = AddFormalParamDecls(lScope, fDecl->params);
                    lSymb = DeclareFunc(&fDecl->loc, CurrentScope, NULL, fDecl->name, lType, lScope, params);
                    if (semantics)
                        SemanticError(loc, ERROR_S_SEMANTICS_NON_VARIABLE,
                                    GetAtomString(atable, fDecl->name));
                } else {
                    if (fDecl->type.type.properties & TYPE_MISC_INTERNAL) {
                        SemanticError(&fDecl->loc, ERROR_S_INTERNAL_FOR_FUN,
                                      GetAtomString(atable, fDecl->name));
                    }
                    if (fDecl->type.type.properties & TYPE_MISC_INLINE) {
                        SemanticError(&fDecl->loc, ERROR_S_INLINE_FOR_FUN,
                                      GetAtomString(atable, fDecl->name));
                    }
                    if (IsUnsizedArray(lType)) {
                        SemanticError(&fDecl->loc, ERROR_S_UNSIZED_ARRAY,
                                      GetAtomString(atable, fDecl->name));
                    }
                    if (IsCategory(lType, TYPE_CATEGORY_ARRAY) && !IsPacked(lType)) {
                        if (!Cg->theHAL->GetCapsBit(CAPS_INDEXED_ARRAYS)) {
                            // XYZZY - This test needs to be moved to later to support multiple profiles
                            SemanticError(&fDecl->loc, ERROR_S_UNPACKED_ARRAY,
                                          GetAtomString(atable, fDecl->name));
                        }
                    }
                    lSymb = DefineVar(loc, CurrentScope, fDecl->name, lType);
                    lSymb->storageClass = fDecl->type.storageClass;
                    if (semantics) {
                        if (CurrentScope->IsStructScope) {
                            CurrentScope->HasSemantics = 1;
                        } else {
                            if (CurrentScope->level > 1) {
                                SemanticError(&fDecl->loc, ERROR_S_NO_LOCAL_SEMANTICS,
                                              GetAtomString(atable, fDecl->name));
                            } else if (fDecl->type.storageClass == SC_STATIC) {
                                SemanticError(&fDecl->loc, ERROR_S_STATIC_CANT_HAVE_SEMANTICS,
                                              GetAtomString(atable, fDecl->name));
#if 000 // RSG -- Not sure if this is true.  Do non-static global variables with semantics have to be declared "uniform"?
                            } else if (GetDomain(&fDecl->type.type) != TYPE_DOMAIN_UNIFORM) {
                                SemanticError(&fDecl->loc, ERROR_S_NON_STATIC_SEM_NOT_UNIFORM,
                                              GetAtomString(atable, fDecl->name));
#endif // RSG
                            }
                        }
                        lSymb->details.var.semantics = semantics;
                    }
                    if (CurrentScope->level == 1) {
                        if (fDecl->type.storageClass != SC_STATIC &&
                            GetDomain(&fDecl->type.type) != TYPE_DOMAIN_VARYING)
                        {
                            lSymb->properties |= SYMB_NEEDS_BINDING;
                        }
                    }
                    if (CurrentScope->IsStructScope)
                        AddParameter(CurrentScope, lSymb);
                }
            }
        } else {
            if (GetCategory(&fDecl->type.type) == TYPE_CATEGORY_FUNCTION) {
                lType = GetTypePointer(&fDecl->loc, &fDecl->type);
                lScope = NewScope();
                params = AddFormalParamDecls(lScope, fDecl->params);
                lSymb = DeclareFunc(&fDecl->loc, CurrentScope, lSymb, fDecl->name, lType, lScope, params);
                lSymb->storageClass = fDecl->type.storageClass;
                if (semantics)
                    SemanticError(loc, ERROR_S_SEMANTICS_NON_VARIABLE,
                                GetAtomString(atable, fDecl->name));
            } else {
                if (!IsTypeBase(&fDecl->type.type, TYPE_BASE_UNDEFINED_TYPE)) {
                    SemanticError(&fDecl->loc, ERROR_S_NAME_ALREADY_DEFINED,
                                  GetAtomString(atable, fDecl->name));
                }
            }
        }
        fDecl->symb = lSymb;
    }
    return fDecl;
} // Declarator

/*
 * lInsertDimension() - Insert a dimension below dims levels.
 *
 */

 static int lInsertDimension(SourceLoc *loc, dtype *fDtype, int dims, int fnumels, int Packed)
 {
    int lnumels, lproperties;
    Type *lType, *elType;

    if (dims == 0) {
        fDtype->IsDerived = 0;
        lnumels = fnumels;
    } else {
        lType = &fDtype->type;
        if (IsArray(lType)) {
            lnumels = lType->arr.numels;
            lproperties = fDtype->type.arr.properties & TYPE_MISC_MASK;
            //lsize = lType->arr.size;
            elType = lType->arr.eltype;
            fDtype->type = *elType;
            if (!lInsertDimension(loc, fDtype, dims - 1, fnumels, Packed))
                return 0;  // error encountered below
            fDtype->type.arr.properties |= lproperties;
        } else {
            return 0;
        }
    }
    lType = GetTypePointer(loc, fDtype);
    SetTypeCategory(loc, 0, fDtype, TYPE_CATEGORY_ARRAY, 1);
    fDtype->type.arr.eltype = lType;
    fDtype->type.arr.numels = lnumels;
    fDtype->numNewDims = dims + 1;
	if (Packed) {
		fDtype->type.properties |= TYPE_MISC_PACKED;
	} else {
		fDtype->type.properties &= ~TYPE_MISC_PACKED;
	}
    fDtype->IsDerived = 1;
    return 1;
 } // lInsertDimension

/*
 * Array_Declarator() - Declare an array of this type.
 *
 */

decl *Array_Declarator(SourceLoc *loc, decl *fDecl, int size, int Empty)
{
    dtype *lDtype;
    Type *lType;
    int dims;

    lDtype = &fDecl->type;
    if (size <= 0 && !Empty) {
        SemanticError(loc, ERROR___DIMENSION_LT_1);
        size = 1;
    }
    if (IsVoid(&lDtype->type))
        SemanticError(loc, ERROR___ARRAY_OF_VOID);
    switch (GetCategory(&lDtype->type)) {
    case TYPE_CATEGORY_SCALAR:
        lType = lDtype->basetype;
        SetTypeCategory(loc, 0, lDtype, TYPE_CATEGORY_ARRAY, 1);
        lDtype->type.arr.eltype = lType;
        lDtype->type.arr.numels = size;
        lDtype->numNewDims = 1;
        break;
    case TYPE_CATEGORY_ARRAY:
        dims = lDtype->numNewDims;
        lInsertDimension(loc, lDtype, dims, size, lDtype->type.properties & TYPE_MISC_PACKED_KW);
        // if (TotalNumberDimensions > MAX_ARRAY_DIMENSIONS)
        //    SemanticError(loc, ERROR_D_EXCEEDS_MAX_DIMS, MAX_ARRAY_DIMENSIONS);
        break;
    case TYPE_CATEGORY_FUNCTION:
        SemanticError(loc, ERROR___ARRAY_OF_FUNS);
        break;
    case TYPE_CATEGORY_STRUCT:
        lType = GetTypePointer(loc, lDtype);
        NewDType(lDtype, lType, TYPE_CATEGORY_ARRAY);
        lDtype->type.co.properties |= lType->co.properties & (TYPE_DOMAIN_MASK | TYPE_QUALIFIER_MASK);
        lDtype->type.arr.eltype = lType;
        lDtype->type.arr.numels = size;
        lDtype->numNewDims = 1;
        break;
    default:
        InternalError(loc, 999, "ArrayDeclarator(): unknown category");
        break;
    }
    lDtype->IsDerived = 1;
    return fDecl;
} // Array_Declarator

/*
 * AddFormalParamDecls() - Add a list of formal parameter declarations to a function
 *         definition's scope.
 */

Symbol *AddFormalParamDecls(Scope *fScope, decl *params)
{
    Symbol *lSymb, *first = NULL, *last;
    Type *lType;

    while (params) {
        lSymb = LookUpLocalSymbol(fScope, params->name);
        if (lSymb) {
            SemanticError(&params->loc, ERROR_S_PARAM_NAME_TWICE,
                          GetAtomString(atable, params->name));
        } else {
            lSymb = AddSymbol(&params->loc, fScope, params->name,
                              GetTypePointer(&params->loc, &params->type), VARIABLE_S);
            lSymb->properties |= SYMB_IS_PARAMETER;
            lSymb->details.var.semantics = params->semantics;
            lSymb->details.var.init = params->initexpr;
            if (first) {
                last->next = lSymb;
            } else {
                first = lSymb;
            }
            last = lSymb;
            lType = lSymb->type;
            if (IsCategory(lType, TYPE_CATEGORY_ARRAY) && !IsPacked(lType)) {
                if (!Cg->theHAL->GetCapsBit(CAPS_INDEXED_ARRAYS)) {
                    SemanticError(&params->loc, ERROR_S_UNPACKED_ARRAY,
                                  GetAtomString(atable, params->name));
                }
            }
        }
        params = params->next;
    }
    return first;
} // AddFormalParamDecls

/*
 * SetFunTypeParams() - Build a list of types and set this function type's abstract parameter types.
 *
 */

decl *SetFunTypeParams(Scope *fScope, decl *func, decl *params, decl *actuals)
{
    TypeList *formals, *prev, *lType;

    fScope->InFormalParameters--;
    formals = prev = NULL;
    while (params) {
        lType = (TypeList *) malloc(sizeof(TypeList));
        lType->next = NULL;
        lType->type = GetTypePointer(&params->loc, &params->type);
        if (formals) {
            prev->next = lType;
        } else {
            formals = lType;
        }
        prev = lType;
        params = params->next;
    }
    if (func && IsCategory(&func->type.type, TYPE_CATEGORY_FUNCTION)) {
        func->type.type.fun.paramtypes = formals;
        func->type.IsDerived = 1;
    }
    if (actuals) {
        func->params = actuals;
    } else {
        if (!CurrentScope->HasVoidParameter)
            func->type.type.properties |= TYPE_MISC_ABSTRACT_PARAMS;
    }
    return func;
} // SetFunTypeParams


/*
 * FunctionDeclHeader()
 *
 */

decl *FunctionDeclHeader(SourceLoc *loc, Scope *fScope, decl *func)
{
    Type *rtnType = GetTypePointer(Cg->tokenLoc, &func->type);

    if (IsUnsizedArray(rtnType))
        SemanticError(loc, ERROR_S_UNSIZED_ARRAY, GetAtomString(atable, func->name));
    NewDType(&func->type, NULL, TYPE_CATEGORY_FUNCTION);
    CurrentScope->InFormalParameters++;
    func->type.type.properties |= rtnType->properties & (TYPE_MISC_INLINE | TYPE_MISC_INTERNAL);
    rtnType->properties &= ~(TYPE_MISC_INLINE | TYPE_MISC_INTERNAL);
    func->type.type.fun.paramtypes = NULL;
    func->type.type.fun.rettype = rtnType;
    func->type.IsDerived = 1;
    return func;
} // FunctionDeclHeader

/*
 * StructHeader() - Process a struct header.
 *
 */

Type *StructHeader(SourceLoc *loc, Scope *fScope, int cType, int tag)
{
    Symbol *lSymb;
    Type *lType;

    if (tag) {
        lSymb = LookUpTag(fScope, tag);
        if (!lSymb) {
            lSymb = AddTag(loc, fScope, tag, TYPE_CATEGORY_STRUCT);
            lSymb->type->str.tag = tag;
            lSymb->type->str.semantics = cType;
            lSymb->type->str.variety = CID_NONE_ID;
        }
        lType = lSymb->type;
        if (!IsCategory(lType, TYPE_CATEGORY_STRUCT)) {
            SemanticError(loc, ERROR_S_TAG_IS_NOT_A_STRUCT, GetAtomString(atable, tag));
            lType = UndefinedType;
        }
    } else {
        lType = NewType(TYPE_CATEGORY_STRUCT, 0);
    }
    return lType;
} // StructOrConnectorHeader

/*
 * DefineVar() - Define a new variable in the current scope.
 *
 */

Symbol *DefineVar(SourceLoc *loc, Scope *fScope, int atom, Type *fType)
{
    Symbol *lSymb;

    lSymb = AddSymbol(loc, fScope, atom, fType, VARIABLE_S);
    return lSymb;
} // DefineVar

/*
 * DefineTypedef() - Define a new type name in the current scope.
 *
 */

Symbol *DefineTypedef(SourceLoc *loc, Scope *fScope, int atom, Type *fType)
{
    return AddSymbol(loc, fScope, atom, fType, TYPEDEF_S);
} // DefineTypedef

/*
 * DeclareFunc() - Declare an identifier as a function in the scope fScope.  If it's already
 *         in the symbol table check the overloading rules to make sure that it either
 *         A) matches a previous declaration exactly, or B) is unambiguously resolvable.
 */

Symbol *DeclareFunc(SourceLoc *loc, Scope *fScope, Symbol *fSymb, int atom, Type *fType,
                    Scope *locals, Symbol *params)
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女同女同女同女同女同69| 国产欧美日韩另类一区| 蜜臀av一区二区在线观看| 精品久久国产字幕高潮| 成人爽a毛片一区二区免费| 亚洲免费在线视频| 久久婷婷国产综合国色天香| 色综合天天综合狠狠| 麻豆精品在线观看| 亚洲精品视频一区| 精品久久免费看| 欧美一a一片一级一片| 成人在线综合网站| 日本最新不卡在线| 亚洲在线免费播放| 国产日本一区二区| 欧美不卡一区二区三区四区| 欧洲国内综合视频| 成人免费看片app下载| 精品系列免费在线观看| 亚洲妇女屁股眼交7| 亚洲欧美在线另类| 国产精品色眯眯| 久久久久久**毛片大全| 欧美大胆一级视频| 在线成人高清不卡| 884aa四虎影成人精品一区| 色婷婷综合久色| 成人午夜激情在线| 成人av电影在线网| 懂色av中文一区二区三区 | 日韩一二三区不卡| 欧美调教femdomvk| 911精品产国品一二三产区| 91福利资源站| 精品视频一区 二区 三区| 91黄色在线观看| 91福利社在线观看| 欧美性生交片4| 777久久久精品| 日韩欧美一卡二卡| 国产亚洲一区二区三区四区| 国产喷白浆一区二区三区| 久久综合久久综合亚洲| 国产亚洲女人久久久久毛片| 亚洲国产精品二十页| 亚洲人成精品久久久久| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美久久一区二区| 91精品婷婷国产综合久久性色| 日韩午夜在线影院| 国产视频在线观看一区二区三区 | 九一九一国产精品| 国产成人午夜精品5599| 日本黄色一区二区| 欧美一区在线视频| 欧美国产一区视频在线观看| 亚洲免费观看高清| 青青草成人在线观看| 国产aⅴ综合色| 欧美美女直播网站| 久久精品人人爽人人爽| 视频在线观看91| 国产91高潮流白浆在线麻豆| 欧美日免费三级在线| 久久久久99精品一区| 亚洲自拍偷拍九九九| 国产在线乱码一区二区三区| 91国在线观看| 久久视频一区二区| 亚洲va韩国va欧美va| 国产白丝精品91爽爽久久| 欧美电影影音先锋| 亚洲视频1区2区| 国产在线看一区| 欧美一区二区精品久久911| 欧美激情综合在线| 日韩av一二三| 欧美丝袜丝交足nylons| 国产精品不卡在线观看| 国产剧情一区二区| 欧美一级理论性理论a| 亚洲人亚洲人成电影网站色| 国产999精品久久| 日韩精品一区二区三区在线 | 亚洲图片自拍偷拍| 99久久免费精品| 中文子幕无线码一区tr| 精品亚洲成a人在线观看 | 成人免费毛片a| 国产亚洲欧洲一区高清在线观看| 午夜精品123| 欧美日韩免费在线视频| 一卡二卡三卡日韩欧美| 日本久久精品电影| 亚洲老妇xxxxxx| 日本高清免费不卡视频| 亚洲欧美色图小说| 日本久久一区二区三区| 一区二区国产盗摄色噜噜| 在线观看一区二区视频| 亚洲精品日产精品乱码不卡| 色又黄又爽网站www久久| 亚洲天堂免费看| 在线视频欧美区| 日本在线不卡一区| 日韩一区二区麻豆国产| 欧美bbbbb| 久久精品人人做人人爽人人| 成人a区在线观看| 亚洲色图19p| 欧美二区乱c少妇| 狠狠狠色丁香婷婷综合激情| 久久久久88色偷偷免费| 成人午夜视频网站| 夜夜嗨av一区二区三区四季av| 欧美中文一区二区三区| 久久精品国产亚洲一区二区三区| 欧美激情一区二区| 欧美亚洲一区二区在线| 日韩av一区二区在线影视| 精品国产一区二区亚洲人成毛片| 国产一区二区福利视频| 亚洲欧美一区二区不卡| 欧美精品丝袜中出| 国产成人综合精品三级| 亚洲另类春色国产| 久久久国产精华| 91久久人澡人人添人人爽欧美| 日韩影院免费视频| 国产精品色噜噜| 91麻豆精品国产91久久久更新时间 | 午夜精品免费在线观看| 久久久亚洲午夜电影| 欧美久久久久久蜜桃| 国产69精品久久99不卡| 美女视频一区二区| 自拍偷拍亚洲激情| 精品久久人人做人人爱| 精品视频一区三区九区| gogogo免费视频观看亚洲一| 老司机免费视频一区二区| 亚洲区小说区图片区qvod| 久久日韩粉嫩一区二区三区| 制服丝袜激情欧洲亚洲| 91麻豆产精品久久久久久| 国产成人精品三级麻豆| 免费视频一区二区| 一区二区三区精密机械公司| 欧美sm极限捆绑bd| 视频一区视频二区中文字幕| 欧美在线啊v一区| 亚洲高清在线视频| 91精品中文字幕一区二区三区| 亚洲一区二区三区自拍| 欧美午夜电影在线播放| 亚洲影视在线播放| 欧美日韩一卡二卡| 麻豆久久久久久久| 久久亚洲捆绑美女| 国产91精品一区二区麻豆网站| 国产三级欧美三级日产三级99| 极品少妇xxxx精品少妇偷拍 | 亚洲男人的天堂网| 91九色02白丝porn| 日韩精品亚洲一区| 精品久久国产老人久久综合| 国产99久久久久| 一区二区三区在线影院| 欧美电影一区二区| 国产精品自拍三区| 亚洲综合在线电影| 26uuu国产一区二区三区| 丰满放荡岳乱妇91ww| 亚洲国产日韩精品| 精品久久国产字幕高潮| 色婷婷狠狠综合| 美女网站一区二区| 中文字幕综合网| 日韩久久精品一区| 91欧美激情一区二区三区成人| 午夜精品久久久久久久久久久| 久久一区二区视频| 欧美日韩的一区二区| 成人国产视频在线观看| 日本不卡视频在线| 亚洲男人的天堂一区二区| 精品日韩一区二区三区| 欧美色视频在线| 99re这里只有精品6| 久久国产精品72免费观看| 亚洲私人影院在线观看| 在线播放91灌醉迷j高跟美女| 成人爽a毛片一区二区免费| 免费人成在线不卡| 亚洲影视在线播放| 亚洲免费av在线| 国产精品福利电影一区二区三区四区| 制服.丝袜.亚洲.另类.中文| 色一情一乱一乱一91av|