文法分析2


pro

gram à

       external_declaration

      | program external_declaration

程序-> <外部聲明><程序><外部聲明>

 

 

external_declaration à

      function_definition

      | declaration

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

 

function_definition à type_specifier declarator compound_statement

函數定義-> <函數類型><說明符><復合語句>

 

type_specifier à

      VOID

      | CHAR

      | INT

      | FLOAT

函數類型-> 無返回值|字符型|整型|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(<表達式>)<陳述語句>ELSE<陳述語句>

 

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

包括或表達式à<唯一或表達式>|<包括或表達式><唯一或表達式>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM