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

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

?? parser.y

?? cg編譯器
?? Y
?? 第 1 頁 / 共 3 頁
字號:
                              { $$ = LookUpTypeSymbol(NULL, $1); }
                        | error
                              { 
                                SemanticParseError(Cg->tokenLoc, ERROR_S_TYPE_NAME_EXPECTED,
                                                   GetAtomString(atable, Cg->mostRecentToken /* yychar */));
                                $$ = UndefinedType;
                              }
;

/*******************/
/* Type Qualifiers */
/*******************/

type_qualifier:           CONST_SY
                              { $$ = TYPE_QUALIFIER_CONST; }
;

/****************/
/* Type Domains */
/****************/

type_domain:              UNIFORM_SY
                              { $$ = TYPE_DOMAIN_UNIFORM; }
;

/*******************/
/* Storage Classes */
/*******************/

storage_class:            STATIC_SY
                              { $$ = (int) SC_STATIC; }
                        | EXTERN_SY
                              { $$ = (int) SC_EXTERN; }
;

/**********************/
/* Function Specifier */
/**********************/

function_specifier:       INLINE_SY
                              { $$ = TYPE_MISC_INLINE; }
                        | INTERNAL_SY
                              { $$ = TYPE_MISC_INTERNAL; }
;

/**********/
/* In Out */
/**********/

in_out:                   IN_SY
                              { $$ = TYPE_QUALIFIER_IN; }
                        | OUT_SY
                              { $$ = TYPE_QUALIFIER_OUT; }
                        | INOUT_SY
                              { $$ = TYPE_QUALIFIER_INOUT; }
;

/****************/
/* Struct Types */
/****************/

struct_or_connector_specifier:
                          struct_or_connector_header struct_compound_header struct_declaration_list '}'
                              { $$ = SetStructMembers(Cg->tokenLoc, $1, PopScope()); }
                        | untagged_struct_header struct_compound_header struct_declaration_list '}'
                              { $$ = SetStructMembers(Cg->tokenLoc, $1, PopScope()); }
                        | struct_or_connector_header
                              { $$ = $1; }
;

struct_compound_header:   compound_header
                              { CurrentScope->IsStructScope = 1; $$ = $1; }
;

struct_or_connector_header:
                          STRUCT_SY struct_identifier
                              { $$ = StructHeader(Cg->tokenLoc, CurrentScope, 0, $2); }
                        | STRUCT_SY struct_identifier ':' semantics_identifier
                              { $$ = StructHeader(Cg->tokenLoc, CurrentScope, $4, $2); }
;

struct_identifier:        identifier
                        | type_identifier
;

untagged_struct_header:   STRUCT_SY
                              { $$ = StructHeader(Cg->tokenLoc, CurrentScope, 0, 0); }
;

struct_declaration_list:  struct_declaration
                        | struct_declaration_list struct_declaration
;

struct_declaration:       declaration
                            { $$ = $1; }
;

/**************/
/* Type Names */
/**************/

/*** Not used -- Use abstract_declaration" instead ***
type_name:                type_specifier
                        | type_qualifier type_name
                              { $$ = $2; }
;
***/

/***************/
/* Annotations */
/***************/

annotation:               '<' { PushScope(NewScope()); } annotation_decl_list '>'
                              { $$ = $3; PopScope(); }
;

annotation_decl_list:     /* empty */
                              { $$ = 0; }
                        | annotation_decl_list declaration
;

/***************/
/* Declarators */
/***************/

declarator:               semantic_declarator
                              { $$ = $1; }
                        | semantic_declarator annotation
                              { $$ = $1; }
;

semantic_declarator:      basic_declarator
                              { $$ = Declarator(Cg->tokenLoc, $1, 0); }
                        | basic_declarator ':' semantics_identifier
                              { $$ = Declarator(Cg->tokenLoc, $1, $3); }
;

basic_declarator:         identifier
                              { $$ = NewDeclNode(Cg->tokenLoc, $1, &CurrentDeclTypeSpecs); }
                        | basic_declarator '[' INTCONST_SY /* constant_expression */ ']'
                              { $$ = Array_Declarator(Cg->tokenLoc, $1, $3, 0); }
                        | basic_declarator '[' ']'
                              { $$ = Array_Declarator(Cg->tokenLoc, $1, 0 , 1); }
                        | function_decl_header parameter_list ')'
                              { $$ = SetFunTypeParams(CurrentScope, $1, $2, $2); }
                        | function_decl_header abstract_parameter_list ')'
                              { $$ = SetFunTypeParams(CurrentScope, $1, $2, NULL); }
;

function_decl_header:     basic_declarator '('
                              { $$ = FunctionDeclHeader(&$1->loc, CurrentScope, $1); }
;

abstract_declarator:      /* empty */
                              { $$ = NewDeclNode(Cg->tokenLoc, 0, &CurrentDeclTypeSpecs); }
                        | abstract_declarator '[' INTCONST_SY /* constant_expression */  ']'
                              { $$ = Array_Declarator(Cg->tokenLoc, $1, $3, 0); }
                        | abstract_declarator '[' ']'
                              { $$ = Array_Declarator(Cg->tokenLoc, $1, 0 , 1); }
/***
 *** This rule causes a major shift reduce conflict with:
 ***
 ***      primary_expression  :;=  type_specifier '(' expression_list ')'
 ***
 *** Cannot be easily factored.  Would force: "( expr -list )" to be merged with "( abstract-param-list )"
 ***
 *** Matches other shading languages' syntax.
 *** Will disallow abstract literal function parameter declarations should we ever defide to
 ***      support function parameters in the future.
 ***
                        | abstract_declarator '(' abstract_parameter_list ')'
***/
;

parameter_list:           parameter_declaration
                              { $$ = $1; }
                        | parameter_list ',' parameter_declaration
                              { $$ = AddDecl($1, $3); }
;

parameter_declaration:    declaration_specifiers declarator
                              { $$ = Param_Init_Declarator(Cg->tokenLoc, CurrentScope, $2, NULL); }
                        | declaration_specifiers declarator '=' initializer
                              { $$ = Param_Init_Declarator(Cg->tokenLoc, CurrentScope, $2, $4); }
;

abstract_parameter_list:  /* empty */
                              { $$ = NULL; }
                        | non_empty_abstract_parameter_list
;

non_empty_abstract_parameter_list:  abstract_declaration
                              {
                                if (IsVoid(&$1->type.type))
                                    CurrentScope->HasVoidParameter = 1;
                                $$ = $1;
                              }
                        | non_empty_abstract_parameter_list ',' abstract_declaration
                              {
                                if (CurrentScope->HasVoidParameter || IsVoid(&$1->type.type)) {
                                    SemanticError(Cg->tokenLoc, ERROR___VOID_NOT_ONLY_PARAM);
                                }
                                $$ = AddDecl($1, $3);
                              }
;

/******************/
/* Initialization */
/******************/

initializer:              expression
                              { $$ = Initializer(Cg->tokenLoc, $1); }
                        | '{' initializer_list '}'
                              { $$ = Initializer(Cg->tokenLoc, $2); }
                        | '{' initializer_list ',' '}'
                              { $$ = Initializer(Cg->tokenLoc, $2); }
;

initializer_list:         initializer
                              { $$ = InitializerList(Cg->tokenLoc, $1, NULL); }
                        | initializer_list ',' initializer
                              { $$ = InitializerList(Cg->tokenLoc, $1, $3); }
;

/***************/
/* EXPRESSIONS */
/***************/

/************/
/* Variable */
/************/

variable:                 basic_variable
                              { $$ = $1; }
                        | scope_identifier COLONCOLON_SY basic_variable
                              { $$ = $3; }
;

basic_variable:           variable_identifier
                              { $$ = BasicVariable(Cg->tokenLoc, $1); }
;

/**********************/
/* Primary Expression */
/**********************/

primary_expression:       variable
                        | constant
                        | '(' expression ')'
                              { $$ = $2; }
                        | type_specifier '(' expression_list ')'
                              { $$ = NewVectorConstructor(Cg->tokenLoc, $1, $3); }
;

/*********************/
/* Postfix Operators */
/*********************/

postfix_expression:       primary_expression
                        | postfix_expression PLUSPLUS_SY
                              { $$ = (expr *) NewUnopNode(POSTINC_OP, $1); }
                        | postfix_expression MINUSMINUS_SY
                              { $$ = (expr *) NewUnopNode(POSTDEC_OP, $1); }
                        | postfix_expression '.' member_identifier
                              { $$ = NewMemberSelectorOrSwizzleOrWriteMaskOperator(Cg->tokenLoc, $1, $3); }
                        | postfix_expression '[' expression ']'
                              { $$ = NewIndexOperator(Cg->tokenLoc, $1, $3); }
                        | postfix_expression '(' actual_argument_list ')'
                              { $$ = NewFunctionCallOperator(Cg->tokenLoc, $1, $3); }
;

actual_argument_list:     /* empty */
                                { $$ = NULL; }
                        | non_empty_argument_list
;

non_empty_argument_list:  expression
                              { $$ = ArgumentList(Cg->tokenLoc, NULL, $1); }
                        | non_empty_argument_list ',' expression
                              { $$ = ArgumentList(Cg->tokenLoc, $1, $3); }
;

expression_list:          expression
                              { $$ = ExpressionList(Cg->tokenLoc, NULL, $1); }
                        | expression_list ',' expression
                              { $$ = ExpressionList(Cg->tokenLoc, $1, $3); }
;

/*******************/
/* Unary Operators */
/*******************/

unary_expression:         postfix_expression
                        | PLUSPLUS_SY unary_expression
                              { $$ = (expr *) NewUnopNode(PREINC_OP, $2); }
                        | MINUSMINUS_SY unary_expression
                              { $$ = (expr *) NewUnopNode(PREDEC_OP, $2); }
                        | '+' unary_expression
                              { $$ = NewUnaryOperator(Cg->tokenLoc, POS_OP, '+', $2, 0); }
                        | '-' unary_expression
                              { $$ = NewUnaryOperator(Cg->tokenLoc, NEG_OP, '-', $2, 0); }
                        | '!' unary_expression
                              { $$ = NewUnaryOperator(Cg->tokenLoc, BNOT_OP, '!', $2, 0); }
                        | '~' unary_expression
                              { $$ = NewUnaryOperator(Cg->tokenLoc, NOT_OP, '~', $2, 1); }
;

/*****************/
/* Cast Operator */
/*****************/

cast_expression:          unary_expression
/* *** reduce/reduce conflict: (var-ident) (type-ident) ***
                        | '(' type_name ')' cast_expression
*/
                        | '(' abstract_declaration ')' cast_expression
                              { $$ = NewCastOperator(Cg->tokenLoc, $4, GetTypePointer(&$2->loc, &$2->type)); }
;

/****************************/
/* Multiplicative Operators */
/****************************/

multiplicative_expression: cast_expression
                        | multiplicative_expression '*' cast_expression
                              { $$ = NewBinaryOperator(Cg->tokenLoc, MUL_OP, '*', $1, $3, 0); }
                        | multiplicative_expression '/' cast_expression
                              { $$ = NewBinaryOperator(Cg->tokenLoc, DIV_OP, '/', $1, $3, 0); }
                        | multiplicative_expression '%' cast_expression
                              { $$ = NewBinaryOperator(Cg->tokenLoc, MOD_OP, '%', $1, $3, 1); }
;

/**********************/
/* Addative Operators */
/**********************/

additive_expression:      multiplicative_expression
                        | additive_expression '+' multiplicative_expression
                              { $$ = NewBinaryOperator(Cg->tokenLoc, ADD_OP, '+', $1, $3, 0); }
                        | additive_expression '-' multiplicative_expression
                              { $$ = NewBinaryOperator(Cg->tokenLoc, SUB_OP, '-', $1, $3, 0); }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av免费在线| 国产一区福利在线| 欧洲人成人精品| 亚洲激情五月婷婷| 欧美日韩日日摸| 美女视频黄久久| 久久精品视频在线看| 国产91丝袜在线18| 亚洲九九爱视频| 欧美日韩国产a| 久久国产欧美日韩精品| 日本一区二区三区电影| 99精品视频在线免费观看| 亚洲影视在线观看| 日韩欧美激情一区| 97久久精品人人澡人人爽| 亚洲午夜av在线| 欧美精品一区二区三区在线播放| 国产成人精品网址| 亚洲一级二级在线| 久久亚洲影视婷婷| 91麻豆精品秘密| 老司机精品视频线观看86| 国产精品视频线看| 欧美日本在线播放| 国产成人久久精品77777最新版本| 亚洲人亚洲人成电影网站色| 欧美一区二区三区成人| 成人性生交大合| 日韩av电影免费观看高清完整版| 久久综合久色欧美综合狠狠| 欧洲一区在线电影| 国内精品国产成人| 亚洲国产va精品久久久不卡综合| 久久久久久久综合日本| 欧美日韩另类国产亚洲欧美一级| 国产成人免费视频| 青青草91视频| 亚洲专区一二三| 国产精品美女久久久久久久久久久 | 韩国精品一区二区| 亚洲高清免费视频| 亚洲欧洲日韩一区二区三区| 欧美精品一二三四| 91色婷婷久久久久合中文| 久久精品国内一区二区三区| 一区二区三区四区国产精品| 国产亚洲综合在线| 欧美va天堂va视频va在线| 欧美日韩一级二级三级| 97se亚洲国产综合自在线| 国产精品一区二区在线看| 日韩国产精品大片| 亚洲成人免费看| 亚洲欧美日韩国产手机在线| 久久精品夜色噜噜亚洲aⅴ| 91精品婷婷国产综合久久性色| 99久久国产免费看| 成人激情免费视频| 国产成人精品一区二区三区网站观看| 男女男精品视频| 日韩精品一二区| 亚洲成人综合视频| 亚洲一区二区三区四区五区中文| 国产精品久久久久影院| 欧美精品一区二区三区蜜臀| 日韩一区二区不卡| 91麻豆精品国产91久久久资源速度| 日本道精品一区二区三区| 99精品桃花视频在线观看| av亚洲精华国产精华| k8久久久一区二区三区| 成人av影院在线| 成人免费视频app| 99精品黄色片免费大全| 91丨porny丨首页| 色综合视频一区二区三区高清| 成人午夜精品一区二区三区| 成人av在线播放网站| 91在线视频18| 欧美视频一区二区| 91精品国产高清一区二区三区| 日韩一区二区三区四区 | 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 7777精品伊人久久久大香线蕉| 欧美视频第二页| 91麻豆精品国产91久久久久久 | 久久嫩草精品久久久精品一| 久久精品日韩一区二区三区| 国产精品乱人伦| 综合久久久久综合| 亚洲第一在线综合网站| 视频一区视频二区中文| 免费看欧美女人艹b| 国内精品第一页| 不卡影院免费观看| 欧美综合一区二区| 欧美电影在哪看比较好| 精品国产91亚洲一区二区三区婷婷 | 亚洲狠狠爱一区二区三区| 一卡二卡欧美日韩| 美国十次综合导航| 成人午夜视频在线观看| 91成人免费电影| 欧美白人最猛性xxxxx69交| 欧美国产精品中文字幕| 亚洲码国产岛国毛片在线| 亚洲国产精品久久艾草纯爱| 久草中文综合在线| 99国产精品国产精品毛片| 欧美区在线观看| 久久精品一区二区三区四区| 亚洲精品成人天堂一二三| 日本视频一区二区三区| 成人精品在线视频观看| 欧美日韩国产三级| 国产精品久久夜| 美国十次了思思久久精品导航| 9人人澡人人爽人人精品| 欧美高清视频www夜色资源网| 久久婷婷综合激情| 亚洲黄色片在线观看| 韩国av一区二区三区| 91国模大尺度私拍在线视频 | 精品久久久久一区二区国产| 中文字幕日韩一区二区| 看片的网站亚洲| 成人短视频下载| 91精品国产欧美日韩| 国产精品伦一区| 裸体健美xxxx欧美裸体表演| 91视频你懂的| 国产欧美一区二区精品性| 午夜不卡在线视频| av亚洲精华国产精华精华| 亚洲精品在线网站| 亚洲h精品动漫在线观看| 成年人国产精品| 精品久久一区二区三区| 日日骚欧美日韩| 一本大道久久a久久精品综合| 久久这里只有精品视频网| 日韩精品成人一区二区在线| 在线亚洲精品福利网址导航| 欧美国产精品一区| 国产精品自拍三区| 日韩一区二区三区精品视频| 亚洲一区二区三区四区在线观看| 成人18精品视频| 国产日韩欧美一区二区三区综合| 老司机精品视频一区二区三区| 欧美日本不卡视频| 亚洲动漫第一页| 色综合天天视频在线观看| 中文字幕日韩av资源站| 国产不卡一区视频| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品一卡二| 精品成人免费观看| 久久国产麻豆精品| 日韩精品中文字幕一区二区三区| 日日夜夜精品视频免费| 777午夜精品免费视频| 亚洲高清视频中文字幕| 欧美中文字幕一区二区三区亚洲 | 亚洲二区在线观看| 欧美日韩一区二区在线视频| 亚洲亚洲人成综合网络| 欧美综合一区二区三区| 亚洲电影你懂得| 欧美另类videos死尸| 亚洲第一激情av| 欧美一区二区在线看| 日本三级亚洲精品| 日韩欧美在线1卡| 精品一区二区三区不卡| 欧美tk丨vk视频| 国产精品1区二区.| 国产精品少妇自拍| 91污在线观看| 亚洲午夜一二三区视频| 91精品国产综合久久久蜜臀图片 | 欧美日韩色一区| 日韩高清欧美激情| 久久综合精品国产一区二区三区 | 亚洲免费观看在线观看| 日本道免费精品一区二区三区| 亚洲一区二区黄色| 亚洲精品一区二区精华| 成人动漫av在线| 亚洲尤物视频在线| 日韩丝袜情趣美女图片| 国产99精品国产| 一区二区三区在线视频免费| 欧美狂野另类xxxxoooo| 狠狠色丁香久久婷婷综合_中| 国产精品美女久久久久aⅴ| 欧美日韩日本视频| 国产成人精品免费网站| 亚洲一区二区综合|