C语言的文法

发布时间 2023-06-07 20:16:34作者: UFOFCZ

 

C语言的文法可以用BNF(Backus-Naur Form,巴克斯-诺尔范式)表示,如下所示:

```
<程序> ::= <函数定义>

<函数定义> ::= <类型说明符> <函数名> "(" <参数列表> ")" "{" <语句列表> "}"

<类型说明符> ::= "int" | "float" | "double" | "char" | "void"

<函数名> ::= <标识符>

<参数列表> ::= <参数> | <参数> "," <参数列表>

<参数> ::= <类型说明符> <标识符>

<语句列表> ::= <语句> | <语句> <语句列表>

<语句> ::= <表达式语句> | <复合语句> | <选择语句> | <迭代语句> | <跳转语句>

<表达式语句> ::= <表达式> ";"

<复合语句> ::= "{" <语句列表> "}"

<选择语句> ::= "if" "(" <表达式> ")" <语句> | "if" "(" <表达式> ")" <语句> "else" <语句>

<迭代语句> ::= "while" "(" <表达式> ")" <语句> | "for" "(" <表达式> ";" <表达式> ";" <表达式> ")" <语句>

<跳转语句> ::= "return" <表达式> ";"

<表达式> ::= <赋值表达式>

<赋值表达式> ::= <条件表达式> | <条件表达式> "=" <赋值表达式>

<条件表达式> ::= <逻辑或表达式> | <逻辑或表达式> "?" <表达式> ":" <条件表达式>

<逻辑或表达式> ::= <逻辑与表达式> | <逻辑或表达式> "||" <逻辑与表达式>

<逻辑与表达式> ::= <相等表达式> | <逻辑与表达式> "&&" <相等表达式>

<相等表达式> ::= <关系表达式> | <相等表达式> "==" <关系表达式> | <相等表达式> "!=" <关系表达式>

<关系表达式> ::= <加法表达式> | <关系表达式> "<" <加法表达式> | <关系表达式> ">" <加法表达式> | <关系表达式> "<=" <加法表达式> | <关系表达式> ">=" <加法表达式>

<加法表达式> ::= <乘法表达式> | <加法表达式> "+" <乘法表达式> | <加法表达式> "-" <乘法表达式>

<乘法表达式> ::= <一元表达式> | <乘法表达式> "*" <一元表达式> | <乘法表达式> "/" <一元表达式>

<一元表达式> ::= <后缀表达式> | "+" <一元表达式> | "-" <一元表达式>

<后缀表达式> ::= <主表达式> | <后缀表达式> "[" <表达式> "]" | <后缀表达式> "(" <参数列表> ")" | <后缀表达式> "." <标识符> | <后缀表达式> "->" <标识符> | "++" <后缀表达式> | "--" <后缀表达式>

<主表达式> ::= <标识符> | <常量> | "(" <表达式> ")"

<标识符> ::= <字母> | <标识符> <字母> | <标识符> <数字>

<常量> ::= <整数常量> | <浮点常量> | <字符常量> | <字符串常量>

<整数常量> ::= <数字> | <整数常量> <数字>

<浮点常量> ::= <数字> "." <数字> | <数字> "." <数字> <指数部分> | <数字> <指数部分>

<指数部分> ::= "e" <数字> | "E" <数字> | "e" "+" <数字> | "E" "+" <数字> | "e" "-" <数字> | "E" "-" <数字>

<字符常量> ::= "'" <字符> "'"

<字符串常量> ::= """ <字符串> """

<字母> ::= "a" | "b" | ... | "z" | "A" | "B" | ... | "Z" | "_"

<数字> ::= "0" | "1" | ... | "9"
```

其中,`<程序>`是C程序的最高级别的语法结构,包含一个或多个函数定义。每个函数定义包含一个类型说明符、一个函数名、一个参数列表和一个语句列表。`<类型说明符>`指定函数返回值的类型,可以是`int`、`float`、`double`、`char`或`void`。`<参数列表>`包含一个或多个参数,每个参数包含一个类型说明符和一个标识符。`<语句列表>`包含一个或多个语句,每个语句可以是表达式语句、复合语句、选择语句、迭代语句或跳转语句。`<表达式>`是C语言中最基本的语法结构,包含赋值表达式、条件表达式、逻辑或表达式、逻辑与表达式、相等表达式、关系表达式、加法表达式、乘法表达式、一元表达式和后缀表达式。`<常量>`包含整数常量、浮点常量、字符常量和字符串常量。`<字母>`和`<数字>`是C语言中的基本字符集。