• 简化版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

    <参数声明> → <说明符声明><标识符>

    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

    <语句列表> → <语句> | <语句列表> <语句>

    statement_listà   statement  | statement_list statement

    <语句> | <复合语句> | <表达式语句> | <选择语句> | <循环语句> |<跳转语句>

    Statement à   | compound_statement   | expression_statement    | selection_statement       | iteration_statement    | jump_statement

    <表达式语句> → <表达式;>

    expression_statement à ';'    | expression ';'

    <选择语句> : < IF(表达式)语句> | < IF(表达式)语句 > < ELSE 语句>

    selection_statement    : IF '(' expression ')' statement       | IF '(' expression ')' statement ELSE statement

    <循环语句> → < WHILE(表达式)语句> | < FOR(表达式语句表达式语句)语句> | < FOR(表达式语句表达式语句表达式)语句>

    iteration_statementà      WHILE '(' expression ')' statement

           | FOR '(' expression_statement expression_statement ')' statement

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

    <跳转语句> | <continue;> |<breack;> | <return;> | <return 表达式; >

    jump_statement   | CONTINUE ';'       | BREAK ';' | RETURN ';'     |RETURN expression ';'

    <表达式> : <赋值表达式> | <表达式, 赋值表达式>

    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

    <基本表达式> → <标识符> | <常量> | <字符串> | <(表达式)>

    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

    <结构体或共用体> : <结构体> | <共同体>

    struct_or_union    : STRUCT    | UNION

    <结构体声明列表> : <结构体声明> | <结构体声明列表> <结构体声明>      

    struct_declaration_list      : struct_declaration     | struct_declaration_list struct_declaration

    <结构体声明> : <说明符限定符列表> <结构体声明列表;>

    struct_declaration       : specifier_qualifier_list struct_declarator_list ';'

     

  • 相关阅读:
    阿里云服务器ECS centos_7 安装jdk环境
    Spring Data Jpa 投影(Projection)的用法
    win10 docker 部署微服务
    centos 安装docker
    VMware 启动 虚拟机后一直黑屏
    VMware 新建虚拟机选择操作系统的时候提示,此主机不支持64位客户机操作系统,此系统无法运行
    mysql 表名全变小写的解决(windows)
    docker: Error response from daemon: driver failed programming external connectivity on endpoint jovial_morse (71d0315110605c3812f7255c7072f5d38512118a4635feaf84cdc170d3bee8d1): Error starting userland
    win10 docker部署springboot项目
    nginx failed (1113: No mapping for the Unicode character exists in the target multi-byte code page)
  • 原文地址:https://www.cnblogs.com/cs007/p/6008711.html
Copyright © 2020-2023  润新知