• 文法分析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

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

  • 相关阅读:
    开始使用ACE工作
    I AM NOTHING vs I AM SOMETHING
    After you have run the GIS Server Post Install
    李开复的勇气论
    爱到底是什么?
    办公室交际不能碰触的“地雷”
    近日比较忙顾不上写随笔了
    什么是爱情?什么是婚姻?
    给自己科普一下SOA、AOP、ORM
    成功者需要具备的素质
  • 原文地址:https://www.cnblogs.com/15linzhijie/p/4919996.html
Copyright © 2020-2023  润新知