<程序>→<外部聲明>|<程序><外部聲明>
<外部聲明>→<函數定義>|<聲明>
<函數定義>→<類型說明符><聲明符><復合語句>
<類型說明符>→<無返回型>|<字符型>|<整型>|<浮點型>
<聲明符>→<指針><直接聲明>|<直接聲明>
<指針>→*|*<指針>
<直接聲明>→<標識符>|<直接聲明>[]|<直接聲明>[常量表達式]|<標識符>(參數表)|< 標識符>()|<直接聲明>,< 標識符列表>
<標識符列表>→<標識符>|<標識符列表>,<標識符>
<常量表達式>→<條件表達式>
<參數表>→<參數聲明>|<參數表>, <參數聲明>
<參數聲明>→<聲明說明符><標識符>
<復合語句>→{<>}|{<語句列表>}|{<聲明列表><語句列表>}
<聲明列表>→<聲明>|<聲明列表><聲明>
<聲明>→<初始化聲明符>|<初始化聲明符列表>,<初始化聲明符>
<初始化聲明符>→<聲明>|<聲明符>=<初始化>
<初始化>→<賦值表達式>|{< initializer list
初始化列表>}|{< initializer list
初始化列表>,}
<初始化列表>→<初始化>|<初始化列表>,<初始化>
<語句列表>→<語句>|<語句列表><語句>
<語句>→<復合語句>|<表達式語句>|< selection statement
選擇語句>|<迭代語句>|<跳轉語句>
<表達式語句>→;|<表達式>;
<選擇語句>→if(<表達式>)<語句>| if(<表達式>)<語句>else<語句>
<迭代語句>→while(<表達式>)<語句>|for(<表達式語句><表達式語句>)<語句>|for(<表達式語句><表達式語句><表達式>)<語句>
<跳轉語句>→continue;|break;|return;| return<表達式>;
<表達式>→<賦值表達式>|<表達式>,<賦值表達式>
<賦值表達式>→<條件表達式>|<一元表達式><賦值操作符><賦值表達式>
<條件表達式>→<邏輯或表達式>|<邏輯或表達式>?<表達式>:<條件表達式>
<邏輯或表達式>→<邏輯與表達式>|<邏輯或表達式> OR OP<邏輯與表達式>
<邏輯與表達式>→<包含或表達式>|<邏輯與表達式>and op<包含或表達式>
<包含或表達式>→<按位或表達式>|<與表達式>|<按位或表達式>^<與表達式>
<與表達式>→<等式表達式>|<與表達式>&<等式表達式>
<等式表達式>→<關系表達式>|<等式表達式> EQ_OP<關系表達式>|<等式表達式> NE_OP<關系表達式>
<關系表達式>→<轉換表達式> |<關系表達式><<轉換表達式>|<關系表達式>><轉換表達式>|<關系表達式>le op<轉換表達式>|<關系表達式>ge op<表轉換達式>
<轉換表達式>→<加法表達式>|<轉換表達式>left op<加法表達式>|<轉換表達式>right op<加法表達式>
<加法表達式>→<乘法表達式>|<加法表達式>+<乘法表達式>|<加法表達式>-<乘法表達式>
<乘法表達式>→<鑄造表達式>|<乘法表達式>*<鑄造表達式>|<乘法表達式>/<鑄造表達式>|<乘法表達式>%<鑄造表達式>
<鑄造表達式>→<一元表達式>|(<類型名稱>)<<鑄造表達式>>
<一元表達式>→<后綴表達式>| INC OP<一元表達式>| DEC_OP<一元表達式>|<一元運算符><鑄造表達式>| SIZEOF<一元表達式>| SIZEOF(<類型名稱>)
<后綴表達式>→<原始表達式>|<后綴表達式>[<表達式>]| <后綴表達式>()|<后綴表達式>(<表達式的參數列表>)|<后綴表達式>. IDENTIFIER|<后綴表達式> PTR OP IDENTIFIER|<后綴表達式> PTR OP IDENTIFIER|<后綴表達式> INC OP|<后綴表達式> DEC OP
<原始表達式>→IDENTIFIER| CONSTANT| STRING LITERAL|(<表達式>)
<表達式的參數列表>→<參數表達式>|<表達式的參數列表>,<參數表達式>
<一元運算符>→&|*|+|-|~|!
<賦值操作符>→=| MUL_ASSIGN| DIV_ASSIGN| MOD_ASSIGN| ADD_ASSIGN|SUB_ASSIGN|LEFT_ASSIGN|RIGHT_ASSIGN|AND_ASSIGN| XOR_ASSIGN| OR_ASSIGN
<存儲類說明符>→ TYPEDEF| EXTERN| STATIC| AUTO| REGISTER
<結構體或共用體的說明符>→<結構體或共用體> IDENTIFIER{<結構體聲明列表>}|<結構體或共用體>{<結構體聲明列表>}|<結構體或共用體> IDENTIFIER
<結構體或共用體>→STRUCT| UNION
<結構體聲明列表>→<結構體聲明>|<結構體聲明列表><結構體聲明>
<結構體聲明>→<說明符限定符列表><結構體聲明列表>;
<說明符限定符列表>→<類型說明符><說明符限定符列表>|<類型說明符>|<類型限定符><說明符限定符列表>|<類型限定符>
<結構體聲明符列表>→<結構體聲明>|<結構體聲明符列表>,<結構體聲明>
<結構體聲明>→<聲明>|:<常量表達式>|<聲明>:<常量表達式>
<枚舉說明符>→ ENUM{<枚舉數列表>}| ENUM IDENTIFIER{<枚舉數列表>}| ENUM IDENTIFIER
<枚舉數列表>→<枚舉法>|<枚舉數列表>,<枚舉法>
<枚舉法>→IDENTIFIER| IDENTIFIER=<常量表達式>
<類型限定符>→ CONST| VOLATILE
<說明符限定符列表>→<類型限定符>|<說明符限定符列表><類型限定符>
<參數類型列表>→<參數表>|<參數表>, ELLIPSIS
<參數表>→<參數聲明>|<參數表>,<參數聲明>
<類型名稱>→<說明符限定符列表>|<說明符限定符列表><抽象說明>
<抽象說明>→<指針>|<直接聲明符>|<指針><直接聲明符>
<直接聲明符>→(<抽象說明>)|[]|[<常量表達式>]|<直接聲明符>[]|<直接聲明符>[<常量表達式>]|()|(<參數類型列表>)|<直接聲明符>()|<直接聲明符>(<參數類型列表>)
<標號語句>→ IDENTIFIER:< 語句>| CASE<常量表達式>:< 語句>| DEFAULT: < 語句>