zoukankan      html  css  js  c++  java
  • 语言文法2

    程序à

           外部_声明

          | 程序外部_声明

    外部_声明 à

          功能_定义

          | 声明

         

    功能_定义 à 类型_说明声明符 复合_声明

    类型_说明à

          VOID

          | CHAR

          | INT

          | FLOAT

    声明符

          指针 直接_声明符

          | 直接_声明符

    指针à

          '*'

          | '*' 指针

    直接_声明符

          标识符

       |直接_声明符’[‘ ‘]’

          |直接_声明符 ’[’ 常数_表达 ’]’

          | 标识符 '(' 参数_目录')'

    | 标识符 '('  ')'

          |直接_声明符  ‘,’  标识符_目录

    标识符_目录

          : 标识符

          | 标识符_目录',' 标识符

    常数_表达à

          条件_表达

    参数_目录à

           参数_声明

          | 参数_目录',' 参数_声明


    参数_声明 à

          声明_符  标识符

    复合_声明 à

           '{' '}'

          | '{' 声明_目录'}'

          | '{' 声明_目录声明_目录'}'

    声明_目录à

           声明

          | 声明_目录声明

    声明à

           初始化_声明符

          | 初始化_声明符_目录',' 初始化_声明符

    初始化_声明符 à

           声明符

          | 声明符 '=' 初始化

    初始化 à

           分配_表达

          | '{' 初始化_目录'}'

          | '{' 初始化_目录',' '}'

    初始化_目录à

           初始化

          | 初始化_目录',' 初始化

    声明_目录à

          声明

          | 声明_目录声明

    声明 à

          | 复合_声明

          | 表达_声明

          | 选择_声明

          | 迭代_声明

          | 跳转_声明

    表达_声明 à

          ';'

          | 表达 ';'

    选择_声明

          : 假设 '(' 表达 ')' 声明

          | 假设 '(' 表达 ')' 声明 否则 声明

    迭代_声明à

           当 '(' 表达 ')' 声明

          | F或 '(' 表达_声明 表达_声明 ')' 声明

          | F或 '(' 表达_声明 表达_声明 表达 ')' 声明

    跳转_声明

          | CONTINUE ';'

          | BREAK ';'

          | RETURN ';'

          | RETURN 表达 ';'

    表达

          : 分配_表达

          | 表达 ',' 分配_表达

    分配_表达 à

          条件_表达

          | 一元_表达 分配_操作分配_表达

    条件_表达 à

           逻辑_或_表达

          | 逻辑_或_表达 '?' 表达 ':' 条件_表达

    逻辑_或_表达 à

          逻辑_和_表达

          | 逻辑_或_表达 或_OP 逻辑_和_表达

    逻辑_和_表达

          : 含_或_表达

          | 逻辑_和_表达 和_OP 含_或_表达

    含_或_表达à

          异_或_表达

          | 含_或_表达 '|' 异_或_表达

    异_或_表达

          : 和_表达

          | 异_或_表达 '^' 和_表达

    和_表达

          : 平等_表达

          | 和_表达 '&' 平等_表达

    平等_表达

          : 关系_表达

          | 平等_表达 EQ_OP 关系_表达

          | 平等_表达 NE_OP 关系_表达

    关系_表达

          : sh假设t_表达

          | 关系_表达 '<' sh假设t_表达

          | 关系_表达 '>' sh假设t_表达

          | 关系_表达 LE_OP sh假设t_表达

          | 关系_表达 GE_OP sh假设t_表达

    sh假设t_表达

          : 添加_表达

          | sh假设t_表达 LEFT_OP 添加_表达

          | sh假设t_表达 RIGHT_OP 添加_表达

    添加_表达

          : 乘法_表达

          | 添加_表达 '+' 乘法_表达

          | 添加_表达 '-' 乘法_表达

    乘法_表达

          : 投_表达

          | 乘法_表达 '*' 投_表达

          | 乘法_表达 '/' 投_表达

          | 乘法_表达 '%' 投_表达

    投_表达

          : 一元_表达

          | '(' 类型_名')' 投_表达

    一元_表达

          : 后缀_表达

          | INC_OP 一元_表达

          | DEC_OP 一元_表达

          | 一元_操作投_表达

          | SIZEOF 一元_表达

          | SIZEOF '(' 类型_名')'

    后缀_表达 à

          : 基本_表达

          | 后缀_表达 '[' 表达 ']'

          | 后缀_表达 '(' ')'

          | 后缀_表达 '(' 赋值_表达_目录')'

          | 后缀_表达 '.' 标识符

          | 后缀_表达 PTR_OP 标识符

          | 后缀_表达 INC_OP

          | 后缀_表达 DEC_OP

    基本_表达 à

          标识符

          | 常数

          | 字符串

          | '(' 表达 ')'

    赋值_表达_目录

          : 分配_表达

          | 赋值_表达_目录',' 分配_表达

    一元_operat或

          : '&'

          | '*'

          | '+'

          | '-'

          | '~'

          | '!'

    分配_操作à

           '='

          | MUL_ASSIGN

          | DIV_ASSIGN

          | MOD_ASSIGN

          | ADD_ASSIGN

          | SUB_ASSIGN

          | LEFT_ASSIGN

          | RIGHT_ASSIGN

          | 和_ASSIGN

          | X或_ASSIGN

          | 或_ASSIGN

    st或age_class_说明à

           类型DEF

          | EXTERN

          | STATIC

          | AUTO

          | REGISTER

    struct_或_union_spec假设ier

          : struct_或_union 标识符 '{' struct_声明_目录'}'

          | struct_或_union '{' struct_声明_目录'}'

          | struct_或_union 标识符

    struct_或_union

          : STRUCT

          | UNION

    struct_声明_目录

          : struct_声明

          | struct_声明_目录struct_声明

    struct_声明

          : spec假设ier_qual假设ier_目录struct_声明符_目录';'

    spec假设ier_qual假设ier_目录à

           类型_说明spec假设ier_qual假设ier_目录

          | 类型_spec假设ier

          | 类型_qual假设ier spec假设ier_qual假设ier_目录

          | 类型_qual假设ier

         

    struct_声明符_目录à

           struct_声明符

          | struct_声明符_目录',' struct_声明符

         

    struct_声明符 à

          : 声明符

          | ':' 常数_表达

          | 声明符 ':' 常数_表达

         

    enum_说明à

           ENUM '{' enumerat或_目录'}'

          | ENUM 标识符 '{' enumerat或_目录'}'

          | ENUM 标识符

         

    enumerat或_目录à

           enumerat或

          | enumerat或_目录',' enumerat或

         

    Enumerat或 à

           标识符

          | 标识符 '=' 常数_表达

         

    类型_qual假设ier à

           CONST

          | VOLATILE

         

    类型_qual假设ier_目录à

           类型_qual假设ier

          | 类型_qual假设ier_目录类型_qual假设ier

         

    参数_类型_目录à

           参数_目录

          | 参数_目录',' ELLIPSIS

         

    参数_目录à

          : 参数_声明

          | 参数_目录',' 参数_声明

         

    类型_名à

           spec假设ier_qual假设ier_目录

          | spec假设ier_qual假设ier_目录抽象_声明符

         

    抽象_声明符 à

           指针

          | 直接_抽象_声明符

          | 指针 直接_抽象_声明符

         

    直接_抽象_声明符 à

           '(' 抽象_声明符 ')'

          | '[' ']'

          | '[' 常数_表达 ']'

          | 直接_抽象_声明符 '[' ']'

          | 直接_抽象_声明符 '[' 常数_表达 ']'

          | '(' ')'

          | '(' 参数_类型_目录')'

          | 直接_抽象_声明符 '(' ')'

          | 直接_抽象_声明符 '(' 参数_类型_目录')'

         

    标识_声明 à

           标识符 ':' 声明

          | 案例 常数_表达 ':' 声明

          | 默认 ':' 声明

          

  • 相关阅读:
    php 计算两点地理坐标的距离
    objective-c中#import和@class的差别
    我与小娜(07):量子通信的奥
    OpenStack部署到Hadoop的四种方案
    iOS UI13_数据解析XML_,JSON
    Redis集群
    《AndroidStudio有用指南》反馈问题和建议
    numpy函数库中一些经常使用函数的记录
    1015 history grep |mysql
    php 生成压缩文件
  • 原文地址:https://www.cnblogs.com/gzh13692021053/p/4921258.html
Copyright © 2011-2022 走看看