c语言设计文法
时间: 2024-02-18 16:01:29 浏览: 29
C语言的文法可以使用BNF(巴克斯-诺尔范式)表示,大致如下:
```
<program> ::= <declaration-list>
<declaration-list> ::= <declaration> | <declaration-list> <declaration>
<declaration> ::= <type-specifier> <init-declarator-list> ';'
<init-declarator-list> ::= <init-declarator> | <init-declarator-list> ',' <init-declarator>
<init-declarator> ::= <declarator> | <declarator> '=' <initializer>
<type-specifier> ::= 'void' | 'char' | 'short' | 'int' | 'long' | 'float' | 'double'
<declarator> ::= <identifier> | '*' <declarator> | '(' <declarator> ')'
<initializer> ::= <expression> | '{' <initializer-list> '}'
<initializer-list> ::= <initializer> | <initializer-list> ',' <initializer>
<expression> ::= <assignment-expression> | <expression> ',' <assignment-expression>
<assignment-expression> ::= <conditional-expression> | <unary-expression> <assignment-operator> <assignment-expression>
<assignment-operator> ::= '=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '<<=' | '>>='
<unary-expression> ::= <postfix-expression> | <unary-operator> <unary-expression>
<unary-operator> ::= '&' | '*' | '+' | '-' | '~' | '!'
<postfix-expression> ::= <primary-expression> | <postfix-expression> '[' <expression> ']' | <postfix-expression> '(' <argument-expression-list> ')' | <postfix-expression> '.' <identifier> | <postfix-expression> '->' <identifier> | <postfix-expression> '++' | <postfix-expression> '--'
<primary-expression> ::= <identifier> | <constant> | <string-literal> | '(' <expression> ')'
<constant> ::= <integer-constant> | <character-constant> | <floating-constant>
<integer-constant> ::= <decimal-constant> | <octal-constant> | <hexadecimal-constant>
<character-constant> ::= '\'' <c-char> '\''
<floating-constant> ::= <decimal-floating-constant> | <hexadecimal-floating-constant>
<string-literal> ::= '"' <s-char-sequence> '"'
<s-char-sequence> ::= <s-char> | <s-char-sequence> <s-char>
<s-char> ::= <any-ASCII-character-except-"-or-\> | '\' <escape-sequence>
<escape-sequence> ::= <simple-escape-sequence> | <octal-escape-sequence> | <hexadecimal-escape-sequence>
<simple-escape-sequence> ::= '\'' | '\"' | '\?' | '\\' | '\a' | '\b' | '\f' | '\n' | '\r' | '\t' | '\v'
<octal-escape-sequence> ::= '\' <octal-digit> | '\' <octal-digit> <octal-digit> | '\' <octal-digit> <octal-digit> <octal-digit>
<hexadecimal-escape-sequence> ::= '\x' <hexadecimal-digit> | '\x' <hexadecimal-digit> <hexadecimal-digit>
<argument-expression-list> ::= <assignment-expression> | <argument-expression-list> ',' <assignment-expression>
```
其中,`<program>` 表示一个完整的C程序,`<declaration-list>` 表示一系列声明语句,`<declaration>` 表示一个声明语句,`<type-specifier>` 表示变量类型,`<init-declarator-list>` 表示一系列声明符,`<init-declarator>` 表示一个声明符,`<declarator>` 表示一个变量名或指针,`<initializer>` 表示变量的初始值,`<initializer-list>` 表示一系列初始值,`<expression>` 表示一段表达式,`<assignment-expression>` 表示赋值表达式,`<unary-expression>` 表示一元运算表达式,`<postfix-expression>` 表示后缀运算表达式,`<primary-expression>` 表示基本表达式,`<constant>` 表示常量,`<string-literal>` 表示字符串常量,`<argument-expression-list>` 表示一系列参数表达式。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)