日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1029 C语言文法定义

發布時間:2024/4/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1029 C语言文法定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

program à

????? ?external_declaration

????? | program external_declaration

<源程序> -> ?<外部聲明> | ?<源程序> ?<外部聲明>

external_declaration à

????? function_definition

????? | declaration

<外部聲明> ?-> ? <函數定義> ?| ?<聲明>

function_definition à type_specifier declarator compound_statement

<定義函數> ?-> ?<類型標識符> ?<聲明> <復合語句>

type_specifier à

????? VOID

????? | CHAR

????? | INT

????? | FLOAT

?<類型標識符> ?-> ?<空類> | <字符型> | <整型> |?<浮點型>

declarator

????? pointer direct_declarator

????? | direct_declarator

?<聲明> ?<指針> ?<直接說明符> ?| ?<直接聲明符>

Pointerà

????? '*'

????? | '*' pointer

< 指針 > ?-> ?< * > | < * 指針 >

direct_declarator

????? IDENTIFIER

?? |direct_declarator’[‘ ‘]’

????? |direct_declarator ’[’ constant_expression ’]’

????? | IDENTIFIER '(' parameter_list ')'

| IDENTIFIER '(' ?')'

????? |direct_declarator? ‘,’? identifier_list

<直接聲明符> ?<標識符> ?| ?<直接聲明 ?‘[‘ ?‘]‘> ? | ?<直接聲明 ‘[‘ 恒表達式 ‘]‘> ?| ?<標識符‘(‘ 參數名單 ‘)‘> ?| ?<標識符‘(‘ ?‘)‘> ?| ?<直接說明 ‘;‘ 標識符列表>

identifier_list

????? : IDENTIFIER

????? | identifier_list ',' IDENTIFIER

<識別名單> : <標識符> | ?<標識符列表 ‘;‘ 標識符>

constant_expressionà

????? conditional_expression

?<常量表達式> -> <條件表達式>

parameter_list à

????? ?parameter_declaration

????? | parameter_list ',' parameter_declaration

<參數列表> -> <參數聲明> | <參數列表 ‘;‘ 參數聲明>
parameter_declaration à

????? declaration_specifiers ?IDENTIFIER

?<參數聲明> -> <說明符聲明> <標識符>

compound_statement à

????? ?'{' '}'

????? | '{' statement_list '}'

????? | '{' declaration_list statement_list '}'

?<復合語句>-> <‘{‘ ‘}‘> | <‘{‘語句列表‘}‘> | <‘{‘聲明語句列表’}‘>

declaration_list à

????? ?declaration

????? | declaration_list declaration

?<聲明列表> -> <聲明> | <聲明列表 聲明>

Declarationà

????? ?init_declarator

????? | init_declarator_list ',' init_declarator

?<聲明> -> <初始化聲明> |<初始聲明列表 ‘,‘ 初始化聲明>

init_declarator à

????? ?declarator

????? | declarator '=' initializer

<初始化聲明> -> <聲明> | <聲明 ‘=‘ 初始化程序>

Initializer à

????? ?assignment_expression

????? | '{' initializer_list '}'

????? | '{' initializer_list ',' '}'

<初始化程序> -> <賦值表達式> | <‘{‘? 初始化列表 ‘}‘> | <‘{‘ 初始化列表 ‘,‘ ‘}‘>

initializer_list à

????? ?initializer

????? | initializer_list ',' initializer

?<初始化列表> -> <初始化程序>| <初始化列表 ‘,‘ 初始化程序>

statement_listà

????? statement

????? | statement_list statement

?<語句列表> -> <語句> | <語句列表 語句>

Statement à

????? | compound_statement

????? | expression_statement

????? | selection_statement

????? | iteration_statement

????? | jump_statement

?<語句> -> |<復合語句> |<表達式語句>|<選擇語句>|<循環語句>|<跳轉語句>

expression_statement à

????? ';'

????? | expression ';'

<表達式語句>→<‘;‘>?? |? <表達式 ‘;‘>

selection_statement

????? : IF '(' expression ')' statement

????? | IF '(' expression ')' statement ELSE statement

<條件語句>:<IF‘(‘表達式”)語句>?| <?IF‘(‘ 表達式 ‘)‘語句? 條件語句>

iteration_statementà

????? ?WHILE '(' expression ')' statement

????? | FOR '(' expression_statement expression_statement ')' statement

????? | FOR '(' expression_statement expression_statement expression ')' statement

<循環語句>→ <WHILE ‘(‘ 表達式‘)‘ 語句> | <FOR ‘(‘ 表達式語句 表達式語句 ‘)‘ 語句> | <FOR ‘(‘ 表達式語句 ?表達式語句 ?表達式‘)‘語句>

jump_statement

????? | CONTINUE ';'

????? | BREAK ';'

????? | RETURN ';'

????? | RETURN expression ';'

<跳轉語句> | <CONTINUE ‘;‘>? | <?BREAK ‘;‘>? | <?RETURN ‘;‘?> |< RETURN 表達式 ‘;‘>

expression

????? : assignment_expression

????? | expression ',' assignment_expression

<表達式>:<賦值表達式>? | <?表達式 ‘,‘ 賦值表達式>

assignment_expression à

????? conditional_expression

????? | unary_expression assignment_operator assignment_expression

<賦值表達式> -> <條件表達式>? |? <一元表達式賦值運算符 ?賦值表達式>

conditional_expression à

????? ?logical_or_expression

????? | logical_or_expression '?' expression ':' conditional_expression

<條件表達式> -> <邏輯或表達> | <邏輯或表達‘?‘ 表達式 ‘:‘條件表達式>

logical_or_expression à

????? logical_and_expression

????? | logical_or_expression OR_OP logical_and_expression

<邏輯或表達> -> <邏輯與表達> ?| <邏輯或表達? 或運算邏輯表達式>

logical_and_expression

????? : inclusive_or_expression

????? | logical_and_expression AND_OP inclusive_or_expression

<邏輯與表達> :<或表達式> | <邏輯表達式 和運算或表達式>

inclusive_or_expressionà

????? exclusive_or_expression

????? | inclusive_or_expression '|' exclusive_or_expression

<或運算表達式> -> <異或表達式> | <或運算表達式 ‘|‘ 異或表達式>

exclusive_or_expression

????? : and_expression

????? | exclusive_or_expression '^' and_expression

<異或表達式> :<與表達式> | ?<異或表達式‘^‘與表達式>

and_expression

????? : equality_expression

????? | and_expression '&' equality_expression

<與表達式> :<相等表達式> | <與表達式‘&‘相等表達式>

equality_expression

????? : relational_expression

????? | equality_expression EQ_OP relational_expression

????? | equality_expression NE_OP relational_expression

<相等表達式> :<關系表達式> | <相等表達式等于運算關系表達式> | <相等表達式不等于運算關系表達式>

relational_expression

????? : shift_expression

????? | relational_expression '<' shift_expression

????? | relational_expression '>' shift_expression

????? | relational_expression LE_OP shift_expression

????? | relational_expression GE_OP shift_expression

<關系表達式> :<移位表達式> | <關系表達式‘<‘移位表達式> | <關系表達式‘>‘移位表達式>? |? <關系表達式小于等于運算移位表達式> | <關系表達式大于等于運算移位表達式>

shift_expression

????? : additive_expression

????? | shift_expression LEFT_OP additive_expression

????? | shift_expression RIGHT_OP additive_expression

<移位表達式> :<加法表達式> | <移位表達式左運算加法表達式> ?| <移位表達式右運算加法表達式>

additive_expression

????? : multiplicative_expression

????? | additive_expression '+' multiplicative_expression

????? | additive_expression '-' multiplicative_expression

<加法表達式> :<乘法表達式> | <加法表達式‘+‘乘法表達式> | <加法表達式‘-‘乘法表達式>

multiplicative_expression

????? : cast_expression

????? | multiplicative_expression '*' cast_expression

????? | multiplicative_expression '/' cast_expression

????? | multiplicative_expression '%' cast_expression

<乘法表達式> :<強制轉換表達式> | <乘法表達式‘*‘強制轉換表達式> | <乘法表達式‘/‘強制轉換表達式> | <乘法表達式‘%‘強制轉換表達式>

cast_expression

????? : unary_expression

????? | '(' type_name ')' cast_expression

<強制轉換表達式> :<一元表達式>? | <?‘(‘ 類型名稱 ‘)‘強制轉換表達式>

unary_expression

????? : postfix_expression

????? | INC_OP unary_expression

????? | DEC_OP unary_expression

????? | unary_operator cast_expression

????? | SIZEOF unary_expression

????? | SIZEOF '(' type_name ')'

<一元表達式> :<后綴表達式> | INC<運算一元表達式> | DEC<運算一元表達式> | <一元運算符將表達式> | ?<結構體變量的一元表達式> | ?<結構體變量的‘(‘ 類型名稱 ‘)‘>

postfix_expression à

????? : primary_expression

????? | postfix_expression '[' expression ']'

????? | postfix_expression '(' ')'

????? | postfix_expression '(' argument_expression_list ')'

????? | postfix_expression '.' IDENTIFIER

????? | postfix_expression PTR_OP IDENTIFIER

????? | postfix_expression INC_OP

????? | postfix_expression DEC_OP

<后綴表達式> :<基本表達式> | <后綴表達式‘[‘表達式‘]‘>? | <后綴表達式‘(‘ ‘)> | <后綴表達式 ‘(‘參數表達式列表‘)‘>?? | <后綴表達式‘.‘ 標識符> | <后綴表達式指針運算標識符>??? | <后綴表達式INC運算>? | <后綴表達式DEC運算>

primary_expression à

????? IDENTIFIER

????? | CONSTANT

????? | STRING_LITERAL

????? | '(' expression ')'

<基本表達式> -> <標識符>? | <常量> | <字符串常量> | <?‘(‘表達式‘)‘>

argument_expression_list

????? : assignment_expression

????? | argument_expression_list ',' assignment_expression

<參數表達式列表> : <賦值表達式> | <參數表達式列表‘,‘賦值表達式>

unary_operator

????? : '&'

????? | '*'

????? | '+'

????? | '-'

????? | '~'

????? | '!'

<一元運算符> : ?<‘&‘>? | <?‘*‘?> | ?<‘+‘>? | ?<‘-‘>? | <?‘~‘?> | ?<‘!‘>

assignment_operator à

????? ?'='

????? | MUL_ASSIGN

????? | DIV_ASSIGN

????? | MOD_ASSIGN

????? | ADD_ASSIGN

????? | SUB_ASSIGN

????? | LEFT_ASSIGN

????? | RIGHT_ASSIGN

????? | AND_ASSIGN

????? | XOR_ASSIGN

????? | OR_ASSIGN

<賦值運算符> -> <‘=‘>? | <乘法分配> | <DIV分配> | <MOD分配> | <加法分配>? |? <SUB分配>? | <左分配> | <右分配> | <與分配> | <異或分配> | <或分配>

storage_class_specifier à

????? ?TYPEDEF

????? | EXTERN

????? | STATIC

????? | AUTO

????? | REGISTER

<存儲類說明符> -> <定義類型> | <外部變量> | <靜態>? | <自動>? | <寄存器>?

struct_or_union_specifier

????? : struct_or_union IDENTIFIER '{' struct_declaration_list '}'

????? | struct_or_union '{' struct_declaration_list '}'

????? | struct_or_union IDENTIFIER

<結構或聯合說明符> :<結構或聯合標識符‘{‘結構體聲明列表‘}‘>? | <結構或聯合‘{‘結構體聲明列表‘}‘>? | <結構或聯合標識符>

struct_or_union

????? : STRUCT

????? | UNION

<結構或聯合> :<結構體> | <聯合>

struct_declaration_list

????? : struct_declaration

????? | struct_declaration_list struct_declaration

<結構體聲明列表> :<結構體聲明> | <結構體聲明 結構體聲明列表>

struct_declaration

????? : specifier_qualifier_list struct_declarator_list ';'

specifier_qualifier_list à

????? ?type_specifier specifier_qualifier_list

????? | type_specifier

????? | type_qualifier specifier_qualifier_list

????? | type_qualifier

<結構體聲明> :<說明符限定符列表結構說明符‘;‘>? <說明符> -> <類型說明符說明符限定符列表> | <類型說明符>? | <類型限定符說明符限定符列表> | <類型限定符>

struct_declarator_list à

????? ?struct_declarator

????? | struct_declarator_list ',' struct_declarator

<結構說明符列表> -> <結構體聲明> | <結構說明符列表‘,‘結構體聲明>

struct_declarator à

????? : declarator

????? | ':' constant_expression

????? | declarator ':' constant_expression

<結構體聲明> -> : <聲明> | <?‘:‘常量表達式> | <聲明‘:‘常量表達式>

enum_specifier à

????? ?ENUM '{' enumerator_list '}'

????? | ENUM IDENTIFIER '{' enumerator_list '}'

????? | ENUM IDENTIFIER

<枚舉聲明> -> <枚舉‘{‘枚舉器列表‘}‘>? | <枚舉標識符‘{‘枚舉器列表‘}‘>? | <枚舉標識符>

enumerator_list à

????? ?enumerator

????? | enumerator_list ',' enumerator

<枚舉器列表> -> <枚舉器> | <枚舉器列表‘,‘枚舉器>

Enumerator à

????? ?IDENTIFIER

????? | IDENTIFIER '=' constant_expression

<枚舉器> -> <標識符> | <標識符‘=‘常量表達式>

type_qualifier à

????? ?CONST

????? | VOLATILE

<類型限定符> -> <常量> | <易失的>

type_qualifier_list à

????? ?type_qualifier

????? | type_qualifier_list type_qualifier

<類型限定符列表> -> <類型限定符> | <類型限定符列表? 類型限定符>

parameter_type_list à

????? ?parameter_list

????? | parameter_list ',' ELLIPSIS

<參數類型列表> -> <參數列表> | <參數列表‘,‘省略符號>

parameter_list à

????? : parameter_declaration

????? | parameter_list ',' parameter_declaration

<參數列表> -> :<聲明參數> | <參數列表‘,‘聲明參數>

type_name à

????? ?specifier_qualifier_list

????? | specifier_qualifier_list abstract_declarator

<類型名稱> -> <限定說明符列表> | <限定符抽象說明符列表>

abstract_declarator à

????? ?pointer

????? | direct_abstract_declarator

????? | pointer direct_abstract_declarator

<抽象說明符>-><指針> | <直接抽象說明符> | <指針直接抽象說明符>

direct_abstract_declarator à

????? ?'(' abstract_declarator ')'

????? | '[' ']'

????? | '[' constant_expression ']'

????? | direct_abstract_declarator '[' ']'

????? | direct_abstract_declarator '[' constant_expression ']'

????? | '(' ')'

????? | '(' parameter_type_list ')'

????? | direct_abstract_declarator '(' ')'

????? | direct_abstract_declarator '(' parameter_type_list ')'

<直接抽象說明符> -> < ‘(‘ 抽象說明符 ‘)‘>? | <?‘[‘ ‘]‘> ?| <?‘[‘ 常量表達式‘]‘>| <直接抽象說明符‘[‘ ‘]‘ >?| <直接抽象說明符‘[‘ 常量表達式 ‘]‘?> | <?‘(‘ ‘)‘> | ?<‘(‘參數類型列表‘)‘?> |<直接抽象說明符‘(‘ ‘)‘> ?| <直接抽象說明符‘(‘參數類型列表‘)‘>

labeled_statement à

????? ?IDENTIFIER ':' statement

????? | CASE constant_expression ':' statement

????? | DEFAULT ':' statement

轉載于:https://www.cnblogs.com/Leey0917/p/4921546.html

總結

以上是生活随笔為你收集整理的1029 C语言文法定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。