zoukankan      html  css  js  c++  java
  • 简化版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 ';'

     

  • 相关阅读:
    CSS之旅——第二站 如何更深入的理解各种选择器
    CSS之旅——第一站 为什么要用CSS
    记录一些在用wcf的过程中走过的泥巴路 【第一篇】
    asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
    asp.net mvc 之旅—— 第一站 从简单的razor入手
    Sql Server之旅——终点站 nolock引发的三级事件的一些思考
    Sql Server之旅——第十四站 深入的探讨锁机制
    Sql Server之旅——第十三站 对锁的初步认识
    Sql Server之旅——第十二站 sqltext的参数化处理
    Sql Server之旅——第十一站 简单说说sqlserver的执行计划
  • 原文地址:https://www.cnblogs.com/cs007/p/6008711.html
Copyright © 2011-2022 走看看