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

翻译:<参数列表>→<参数声明> | <参数列表>,<参数声明>

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'(' 表达式 ')'语句  条件语句

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

或运算表达式→

异或表达式 | 或运算表达式 '|' 异或表达式

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

乘法表达式:

强制转换表达式

| 乘法表达式'*'强制转换表达式

| 乘法表达式'/'强制转换表达式

| 乘法表达式'%'强制转换表达式

cast_expression

: unary_expression

| '(' type_name ')' cast_expression

强制转换表达式:

一元表达式

|  '(' 类型名称 ')'强制转换表达式

unary_expression

: postfix_expression

| INC_OP unary_expression

| DEC_OP unary_expression

| unary_operator cast_expression

| SIZEOF unary_expression

| SIZEOF '(' type_name ')'

一元表达式:后缀表达式

| INC运算一元表达式

| DEC运算一元表达式

| 一元运算符将表达式

|  结构体变量的一元表达式

|  结构体变量'(' 类型名称 ')'

postfix_expression à

: primary_expression

| postfix_expression '[' expression ']'

| postfix_expression '(' ')'

| postfix_expression '(' argument_expression_list ')'

| postfix_expression '.' IDENTIFIER

| postfix_expression PTR_OP IDENTIFIER

| postfix_expression INC_OP

| postfix_expression DEC_OP

后缀表达式:基本表达式 | 后缀表达式'['表达式']'  | 后缀表达式'(' ') | 后缀表达式 '('参数表达式列表')'   | 后缀表达式'.' 标识符 | 后缀表达式指针运算标识符    | 后缀表达式INC运算  | 后缀表达式DEC运算

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

赋值运算符→'='  | 乘法分配 | DIV分配 | MOD分配 | 加法分配  |  SUB分配  | 左分配 | 右分配 | 与分配 | 异或分配 | 或分配

storage_class_specifier à

TYPEDEF

| EXTERN

| STATIC

| AUTO

| REGISTER

存储类说明符→定义类型 | 外部变量 | 静态 的 | 自动 的 | 寄存器

struct_or_union_specifier

: struct_or_union IDENTIFIER '{' struct_declaration_list '}'

| struct_or_union '{' struct_declaration_list '}'

| struct_or_union IDENTIFIER

结构或联合说明符:结构或联合标识符'{'结构体声明列表'}'  | 结构或联合'{'结构体声明列表'}'  | 结构或联合标识符

struct_or_union

: STRUCT

| UNION

结构或联合:结构体 | 联合

struct_declaration_list

: struct_declaration

| struct_declaration_list struct_declaration

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

struct_declaration

: specifier_qualifier_list struct_declarator_list ';'

specifier_qualifier_list à

type_specifier specifier_qualifier_list

| type_specifier

| type_qualifier specifier_qualifier_list

| type_qualifier

结构体声明:说明符限定符列表结构说明符';'说明符→类型说明符说明符限定符列表 | 类型说明符  | 类型限定符说明符限定符列表 | 类型限定符

struct_declarator_list à

struct_declarator

| struct_declarator_list ',' struct_declarator

结构说明符列表→结构体声明 | 结构说明符列表','结构体声明

struct_declarator à

: declarator

| ':' constant_expression

| declarator ':' constant_expression

结构体声明→:声明 |  ':'常量表达式 | 声明':'常量表达式

enum_specifier à

ENUM '{' enumerator_list '}'

| ENUM IDENTIFIER '{' enumerator_list '}'

| ENUM IDENTIFIER

枚举声明→枚举'{'枚举器列表'}'  | 枚举标识符'{'枚举器列表'}'  | 枚举标识符

enumerator_list à

enumerator

| enumerator_list ',' enumerator

枚举器列表→枚举器 | 枚举器列表','枚举器

Enumerator à

IDENTIFIER

| IDENTIFIER '=' constant_expression

枚举器→标识符 | 标识符'='常量表达式

type_qualifier à

CONST

| VOLATILE

类型限定符→常量 | 容易丢失的

type_qualifier_list à

type_qualifier

| type_qualifier_list type_qualifier

类型限定符列表→类型限定符 | 类型限定符列表  类型限定符

parameter_type_list à

parameter_list

| parameter_list ',' ELLIPSIS

参数类型列表→参数列表 | 参数列表','省略符号

parameter_list à

: parameter_declaration

| parameter_list ',' parameter_declaration

参数列表→:声明参数 | 参数列表','声明参数

type_name à

specifier_qualifier_list

| specifier_qualifier_list abstract_declarator

类型名称→限定说明符列表 | 限定符抽象说明符列表

abstract_declarator à

pointer

| direct_abstract_declarator

| pointer direct_abstract_declarator

抽象说明符→指针 | 直接抽象说明符 | 指针直接抽象说明符

direct_abstract_declarator à

'(' abstract_declarator ')'

| '[' ']'

| '[' constant_expression ']'

| direct_abstract_declarator '[' ']'

| direct_abstract_declarator '[' constant_expression ']'

| '(' ')'

| '(' parameter_type_list ')'

| direct_abstract_declarator '(' ')'

| direct_abstract_declarator '(' parameter_type_list ')'

直接抽象说明符→ '(' 抽象说明符 ')'  |  '[' ']'  |  '[' 常量表达式']'

| 直接抽象说明符'[' ']'  | 直接抽象说明符'[' 常量表达式 ']'  |  '(' ')'  |  '('参数类型列表')'  |  直接抽象说明符'(' ')'  | 直接抽象说明符'('参数类型列表')'

labeled_statement à

IDENTIFIER ':' statement

| CASE constant_expression ':' statement

| DEFAULT ':' statement

有标号语句→标识符':'语句 |  CASE常量表达式':'语句  |  DEFAULT':'语句

1029 C语言文法翻译(2)的更多相关文章

  1. 1029 C语言文法定义与C程序的推导过程

    1 阅读并理解提供给大家的C语言文法文件. 2 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 3 给出一段C程序,写出用上述文法产生这段C程序的推导过程. program → exte ...

  2. 1029 C语言文法

    program    -> external_declaration | program external_declaration <程序> ->  <外部声明> ...

  3. C语言文法翻译

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...

  4. 1029 C语言文法定义

    program à external_declaration | program external_declaration <源程序> ->  <外部声明> |  < ...

  5. C语言文法

    C语言文法 源程序 → 外部声明 | 子程序(外部声明) 外部声明   → 函数定义| 函数声明 函数定义 → 类型标识符(复合句) 标识符类型 → 无类型 | 字符型 | 整型 | 浮点型 整型→ ...

  6. 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)

    阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...

  7. 李洪强漫谈iOS开发[C语言-044]-翻译数字

     李洪强漫谈iOS开发[C语言-044]-翻译数字

  8. 1029对c语言文法的理解

    <程序>→<外部声明>|<程序><外部声明> <外部声明>→<函数定义>|<声明> <函数定义>→< ...

  9. SAP 多语言文本翻译

    SAP自己的东西都是有语言包的,针对很多语言有是有对应文本的翻译,巴特,比较不是专业的翻译,多以很多时候还是有这样那样的文本描述需要调整. 语言包怎么打就不说了,也不知道,知道也没打过... 标准界面 ...

随机推荐

  1. Hadoop(二)CentOS7.5搭建Hadoop2.7.6完全分布式集群

    一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1  准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考 ...

  2. Python3中高阶函数lambda,filter,map,reduce,zip的详细用法

    在Python里有五大高阶函数,他们分别是lambda()匿名函数,filter()筛选函数,map()函数,reduce()函数,zip()函数.下面就让我们来详细的了解一下这五种函数的具体用法吧. ...

  3. 从零开始一个http服务器(五)-模拟cgi

    从零开始一个http服务器-模拟cgi(五) 代码地址 : https://github.com/flamedancer/cserver git checkout step5 运行: make cle ...

  4. hadoop伪分布式组件安装

    一.版本建议 Centos V7.5 Java V1.8 Hadoop V2.7.6 Hive V2.3.3 Mysql V5.7 Spark V2.3 Scala V2.12.6 Flume V1. ...

  5. 20155231 实验四 Android程序设计

    20155231 实验四 Android程序设计 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管理器的使用: 掌握Android中事 ...

  6. 同步备份工具之 rsync

    1.常用同步方法 SCP. NFS. SFTP. http. samba. rsync. drbd(基于文件系统同步,效率高) 2.rsync 介绍 rsync,英文全称是 remote synchr ...

  7. [POJ3041]Asteroids

    Asteroids 好久没打过网络流相关的题了...... 题意:一个矩阵n×n,有m个东西,一次去掉一整行或一整列,问最少次数. 题解:匈牙利. 把每行变成一个点(X集合),每列变成一个点(Y集合) ...

  8. 一步步带你配置IIS(包括错误分析)

    今天趁着工作中的问题一下子来解决IIS配置 发布网站:点击VS发布网站 第一步:新建配置文件(我取名为webSite) : 第二步:选择发布方法并且选择把文件发布到哪里(比喻在D盘创建一个文件夹web ...

  9. mysql学习----支持Emoji表情

    但发现了一个问题,iPhone上有Emoji表情,插入Mysql时失败了,报如下异常: java.sql.SQLException: Incorrect string value: '\xF0\x9F ...

  10. MQ配置安装

    一,MQ安装 ./mqlicense.sh -accept rpm -ivh MQSeries*.rpm --  rpm -qa|grep MQSeries 二,MQ配置 环境变量配置(MQM)实际安 ...