<translation-unit> ::= {<external-declaration>}*
<external-declaration> ::= <function-definition>
| <declaration>
<翻譯機關>:= {對外聲明> } * //函數的定義
<declaration-specifier> ::= <storage-class-specifier> //類的定義
| <type-specifier>
| <type-qualifier>
<存儲類說明符>::=“自動” //四種存儲類型,自動存儲期和靜态存儲期,外部變量,定義類型
| "register"
| "static"
| "extern"
| "typedef"
<type-specifier> ::= "void" //類型說明符
| "char"
| "short"
| "int"
| "long"
| "float"
| "double"
| "signed"
| "unsigned"
| <struct-or-union-specifier>
| <enum-specifier>
| <typedef-name>
<struct-or-union-specifier> ::= <struct-or-union> <identifier> "{" {<struct-declaration>}+ "}" //結構或聯合說明符
| <struct-or-union> "{" {<struct-declaration>}+ "}"
| <struct-or-union> <identifier>
<struct-or-union> ::= "struct" //結構體
| "union"
<struct-declaration> ::= {<specifier-qualifier>}* <struct-declarator-list> //結構聲明
<specifier-qualifier> ::= <type-specifier> //限定類型說明符
<struct-declarator-list> ::= <struct-declarator> //struct聲明
| <struct-declarator-list> "," <struct-declarator>
<struct-declarator> ::= <declarator> //struct聲明
| <declarator> ":" <constant-expression>
| ":" <constant-expression>
<declarator> ::= {<pointer>}? <direct-declarator>
<pointer> ::= "*" {<type-qualifier>}* {<pointer>}? //指針
<type-qualifier> ::= "const" //const常量,是一個c語言關鍵字
| "volatile"
<direct-declarator> ::= <identifier> //直接聲明,辨別符
| "(" <declarator> ")"
| <direct-declarator> "[" {<constant-expression>}? "]"
| <direct-declarator> "(" <parameter-type-list> ")"
| <direct-declarator> "(" {<identifier>}* ")"
<constant-expression> ::= <conditional-expression> //條件表達式
<conditional-expression> ::= <logical-or-expression> //三位運算符
| <logical-or-expression> "?" <expression> ":" <conditional-expression>
<logical-or-expression> ::= <logical-and-expression> //或
| <logical-or-expression "||" <logical-and-expression>
<logical-and-expression> ::= <inclusive-or-expression> //與
| <logical-and-expression "&&" <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> "==" <relational-expression> //取值
| <equality-expression> "!=" <relational-expression> //不等于
<relational-expression> ::= <shift-expression>
| <relational-expression> "<" <shift-expression> //小于
| <relational-expression> ">" <shift-expression> //大于
| <relational-expression> "<=" <shift-expression> //小于等于
| <relational-expression> ">=" <shift-expression> //大于等于
<shift-expression> ::= <additive-expression> //位運算符
| <shift-expression> "<<" <additive-expression>
| <shift-expression> ">>" <additive-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>
| "++" <unary-expression> //自增
| "--" <unary-expression> //自減
| <unary-operator> <cast-expression>
| "sizeof" <unary-expression> //動态配置設定空間
| "sizeof" <type-name>