c语言文法定义

12 篇文章 2 订阅

<程序>→<外部声明>|<程序><外部声明>
<外部声明>→<函数定义>|<声明>
<函数定义>→<类型说明><声明><复合语句>
<类型说明>→void|char|int|float
<声明>→<指针直接说明符>|<直接说明符>
<指针>→’‘|’‘指针
<直接说明符>→<标识符>|<直接说明符‘[’‘]’>|<直接说明符‘[’常数表达式‘]’>|<标识符‘(’参数列表‘)’>|<标识符><‘(’‘)’>>|<直接说明符><’,’><标识符列表>
<标识符列表>→<:标识符>|<标识符列表><’,’><标识符>
<常数表达式>→<条件表达式>
<参数列表>→<参数声明>|<参数列表><’,’><参数声明>
<参数声明>→<声明说明符><标识符>
<复合语句>→<‘{’><‘}’>|<’{’><语句列表><’}’>|<’{’><声明列表><语句列表><’}’>
<声明列表>→<声明>|<声明列表><声明>
<声明>→<初始化声明>|<初始化声明列表><‘,’><初始化声明>
<初始化声明>→<声明>|<声明><‘=’><初始化程序>
<初始化程序>→<赋值表达式>|<‘{’><初始化程序列表><‘}’>|<’{’><初始化程序列表><’,’><’}’>
<初始化程序列表>→<初始化程序>|<初始化程序列表><‘,’><初始化程序>
<语句列表>→<语句>|<语句列表><语句>
<语句>→<复合语句>|<表达式语句>|<选择语句>|<循环语句>|<跳跃语句>
<表达式语句>→<’;’>|<表达式><’;’>
<选择语句>→<:><’(’><表达式><’)’><语句>|<’(’><表达式><’)’><语句><语句>
<循环语句>→<’(’><表达式><’)’><语句>|<’(’><表达式语句><表达式语句><’)’><语句>|<’(’><表达式语句><表达式语句><表达式><’)’><语句>
<跳跃语句>→CONTINUE<’;’>|BREAK<’;’>|RETURN<’;’>|RETURN<表达式><’;’>
<表达式>→<:><赋值表达式>|<表达式><’,’><赋值表达式>
<赋值表达式>→<条件表达式>|<一元表达式><赋值操作符><赋值表达式>
<条件表达式>→<逻辑或表达>|<逻辑或表达><‘?‘><表达式><‘:‘><条件表达式>
<逻辑或表达>→<逻辑与表达>|<逻辑或表达或运算><逻辑表达式>
<逻辑与表达>:<或表达式>|<逻辑表达式>和<运算或表达式>
<或运算表达式>→<异或表达式>|<或运算表达式><‘>|<‘><异或表达式>
<异或表达式>:<与表达式>|<异或表达式><‘^‘><与表达式>
<与表达式>:<相等表达式>|<与表达式><‘&‘><相等表达式>
<相等表达式>:<关系表达式>|<相等表达式等于运算关系表达式>|<相等表达式不等于运算关系表达式>
<关系表达式>:<移位表达式>|<关系表达式><‘<‘><移位表达式>|<关系表达式><‘>‘><移位表达式>|<关系表达式小于等于运算移位表达式>|<关系表达式大于等于运算移位表达式>
<移位表达式>:<加法表达式>|<移位表达式左运算加法表达式>|<移位表达式右运算加法表达式>
<加法表达式:<乘法表达式>|<加法表达式><‘+‘><乘法表达式>|<加法表达式><‘-‘><乘法表达式>
<乘法表达式>:<强制转换表达式>|<乘法表达式><‘‘><强制转换表达式>|<乘法表达式><‘/‘><强制转换表达式>|<乘法表达式><‘%‘><强制转换表达式>
<强制转换表达式>:<一元表达式>|<‘(‘><类型名称><‘)‘><强制转换表达式>
<一元表达式>:<后缀表达式>|<INC运算一元表达式>|<DEC运算一元表达式>|<一元运算符将表达式>|<结构体变量的一元表达式>|<结构体变量的><‘(‘><类型名称><‘)‘>
<后缀表达式>:<基本表达式>|<后缀表达式><‘[‘><表达式><‘]‘>|<后缀表达式><‘(‘><‘)’>|<后缀表达式><‘(‘><参数表达式列表><‘)‘>|<后缀表达式><‘.‘><标识符>|<后缀表达式指针运算标识符>|<后缀表达式INC运算>|<后缀表达式DEC运算>
<基本表达式>→<标识符>|<常量>|<字符串常量>|<‘(‘><表达式><‘)‘>
<参数表达式列表>:<赋值表达式>|<参数表达式列表><‘,‘><赋值表达式>
<一元运算符>:<‘&‘>|<‘
‘>|<‘+‘>|<‘-‘>|<‘~‘>|<‘!‘>
<赋值运算符>→<‘=‘>|<乘法分配>|<DIV分配>|<MOD分配>|<加法分配>|<SUB分配>|<左分配>|<右分配与分配>|<异或分配>|<或分配>
<存储类说明符>→<定义类型>|<外部变量>|<静态>|<自动>|<寄存器>
<结构或联合说明符>:<结构或联合标识符><‘{‘><结构体声明列表><‘}‘>|<结构或联合><‘{’><结构体声明列表><‘}‘>|<结构或联合标识符>
<结构或联合>:<结构体>|<联合>
<结构体声明列表>:<结构体声明>|<结构体列表声明结构体声明>
<结构体声明>:<说明符限定符列表结构说明符><‘;‘>
<说明符说明符限定符列表>→<类型说明符说明符限定符列表>|<类型说明符>|<类型限定符说明符限定符列表>|<类型限定符>
<结构说明符列表>→<结构体声明>|<结构说明符列表><‘,‘><结构体声明>
<结构体声明>→<:><声明>|<‘:‘><常量表达式>|<声明><‘:‘><常量表达式>
<枚举声明>→<枚举><‘{‘><枚举器列表><‘}‘>|<枚举标识符><‘{‘><枚举器列表><‘}‘>|<枚举标识符>
<枚举器列表>→<枚举器>|<枚举器列表><‘,‘>
<枚举器枚举器>→<标识符>|<标识符><‘=‘><常量表达式>
<类型限定符>→<常量>|<易失的>
<类型限定符列表>→<类型限定符>|<类型限定符列表><类型限定符>
<参数类型列表>→<参数列表>|<参数列表><‘,‘><省略符号>
<参数列表>→<:><声明参数>|<参数列表><‘,‘><声明参数>
<抽象说明符>→<指针>|<直接抽象说明符>|<指针直接抽象说明符>
<直接抽象说明符>→<‘(‘><抽象说明符><‘)‘>|<‘[‘><‘]‘>|<‘[‘><常量表达式><‘]‘>|<直接抽象说明符><‘[‘><‘]‘>|<直接抽象说明符><‘[‘><常量表达式><‘]‘>|<‘(‘><‘)‘>|<‘(‘><参数类型列表><‘)‘>|<直接抽象说明符><‘(‘><‘)‘>|<直接抽象说明符><‘(‘><参数类型列表><‘)‘>
<有标号语句>→<标识符><‘:><‘语句>|<CASE常量表达式><‘:‘><语句>|<‘:‘><语句>

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言文法可以用BNF范式表示如下: ``` <程序> ::= <外部声明> <外部声明> ::= <函数定义> | <声明> <函数定义> ::= <类型指示符> <函数名> "(" <参数列表> ")" "{" <语句> "}" <声明> ::= <类型指示符> <声明符列> ";" <声明符列> ::= <声明符> | <声明符> "," <声明符列> <声明符> ::= <变量名> | <变量名> "[" <常量表达式> "]" <类型指示符> ::= "void" | "char" | "short" | "int" | "long" | "float" | "double" <参数列表> ::= <参数> | <参数> "," <参数列表> <参数> ::= <类型指示符> <变量名> <语句> ::= <表达式语句> | <复合语句> | <选择语句> | <迭代语句> | <跳转语句> <表达式语句> ::= <表达式> ";" <复合语句> ::= "{" <语句列> "}" <语句列> ::= <语句> | <语句> <语句列> <选择语句> ::= "if" "(" <表达式> ")" <语句> | "if" "(" <表达式> ")" <语句> "else" <语句> <迭代语句> ::= "while" "(" <表达式> ")" <语句> | "for" "(" <表达式> ";" <表达式> ";" <表达式> ")" <语句> <跳转语句> ::= "return" <表达式> ";" <表达式> ::= <赋值表达式> <赋值表达式> ::= <条件表达式> | <条件表达式> "=" <赋值表达式> <条件表达式> ::= <逻辑或表达式> | <逻辑或表达式> "?" <表达式> ":" <条件表达式> <逻辑或表达式> ::= <逻辑与表达式> | <逻辑或表达式> "||" <逻辑与表达式> <逻辑与表达式> ::= <相等性表达式> | <逻辑与表达式> "&&" <相等性表达式> <相等性表达式> ::= <关系表达式> | <相等性表达式> "==" <关系表达式> | <相等性表达式> "!=" <关系表达式> <关系表达式> ::= <加法表达式> | <关系表达式> <关系运算符> <加法表达式> <关系运算符> ::= "<" | ">" | "<=" | ">=" <加法表达式> ::= <乘法表达式> | <加法表达式> "+" <乘法表达式> | <加法表达式> "-" <乘法表达式> <乘法表达式> ::= <一元表达式> | <乘法表达式> "*" <一元表达式> | <乘法表达式> "/" <一元表达式> <一元表达式> ::= <后缀表达式> | <一元运算符> <一元表达式> <后缀表达式> ::= <基本表达式> | <后缀表达式> "[" <表达式> "]" | <后缀表达式> "(" <参数列表> ")" | <后缀表达式> "." <成员名> | <后缀表达式> "->" <成员名> | <后缀表达式> "++" | <后缀表达式> "--" <基本表达式> ::= <常量> | <变量名> | "(" <表达式> ")" <常量> ::= <整型常量> | <字符常量> | <浮点常量> <变量名> ::= <标识符> <标识符> ::= <字母> | <标识符> <字母> | <标识符> <数字> <字母> ::= "a" | "b" | ... | "z" | "A" | "B" | ... | "Z" | "_" <数字> ::= "0" | "1" | ... | "9" ``` 其中,`<程序>`是C语言程序的最高层级结构,包含一个或多个`<外部声明>`。`<外部声明>`可以是一个函数定义或一个声明。`<函数定义>`由类型指示符、函数名、参数列表、代码块组成,表示定义一个函数。`<声明>`由类型指示符和一个或多个声明符组成,表示定义一个或多个变量。`<声明符>`可以是一个普通变量名或一个数组名。`<类型指示符>`表示变量或函数的数据类型,可以是`void`、`char`、`short`、`int`、`long`、`float`或`double`。`<语句>`表示C语言中的各种语句,包括表达式语句、复合语句、选择语句、迭代语句和跳转语句。`<表达式>`表示C语言中的各种表达式,包括赋值表达式、条件表达式、逻辑或表达式、逻辑与表达式、相等性表达式、关系表达式、加法表达式、乘法表达式、一元表达式和后缀表达式。`<常量>`表示C语言中的各种常量,包括整型常量、字符常量和浮点常量。`<变量名>`表示变量的名称,由一个或多个字母和数字组成。`<标识符>`表示C语言中的各种标识符,由一个字母或下划线开头,后面可以跟任意数量的字母、数字和下划线。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值