<程序>-><外部聲明>|<程序><外部聲明>
<外部聲明>-><函數定義>|<定義>
<函數定義>-><類型說明><聲明><復合語句>
<類型說明>->無返回型|字符型|整型|單精度型
<聲明>-><指針直接說明符>|<直接說明符>
<指針>-><’*’>|<’*’指針>
<直接聲明符>-><標識符>|<直接聲明符>’[’’]’|<直接聲明符>’[’< 常量表達式>’]’>|<標識符>’(’ 參數表>’)’|<標識符>’(’ ’)’|<直接聲明符 >’;’ <標識符列表>
<標識符列表>-><標識符>|<標識符列表> ’,’ <標識符>
<常量表達式>-><條件表達式>
<參數表>-><參數聲明>|<參數表 >’,’ <參數聲明>
<參數聲明>-><聲明說明><標識符>
<復合語句>->’{’ ’}’|’{’ <語句列表>’}’|’{’ <聲明列表 語句列表>’}’
<聲明列表>-><聲明>|<聲明列表><聲明>
<聲明>-><初始化聲明符>|<初始化聲明符列表 > ’, ’< 初始化聲明符>
<初始化聲明符>-><聲明符>|<聲明符>’=’ <初始化>
<初始化>-><賦值表達式>|’{’ <初始化列表> ’}’|’{’ <初始化列表> ’, ’ ’}’
<初始化列表>-><初始化>|<初始化列表> ‘,’< 初始化>
<語句列表>-><語句>|<語句列表>
<語句>-><復合語句>|<表達式語句>|<條件語句>|<循環語句>|<跳轉語句>
<表達式語句>->’;‘|<表達式>’;‘
<條件語句>->如果<’(‘><表達式><’)‘><語句>|如果’(‘<表達式>’)‘<語句>那么<語句>
<循環語句>->當’(’<表達式>’)‘<語句>|為’(’<表達式語句><表達式語句>’)’|為’(’<表達式語句><表達式語句><表達式>’)’<語句>
<跳轉語句>->繼續’;’|結束’;’|返回’;’|返回<表達式>’;’
<表達式>-><賦值表達式>|<表達式>’,’<賦值表達式>
<賦值表達式>-><條件表達式>|<一元表達式><賦值運算符><賦值表達式>
<條件表達式>-><邏輯或表達>|<邏輯或表達式>’?’<表達式>’:’<條件表達式>
<邏輯或表達式>-><邏輯與表達式>|<邏輯或表達式>或<邏輯與表達式>
<邏輯與表達式>-><包容性或表達式>|<邏輯與表達式>和<包容性或表達式>
<包容性或表達式>-><異或表達式>|<包容性或表達式>’|’<異或表達式>
<異或表達式>-><與表達式>|<異或表達式>’^’<與表達式>
<與表達式>-><平等表達式>|<與表達式>’&’<平等表達式>
<平等表達式>-><關系表達式>|<平等表達式>EQ_OP<關系表達式>|<平等表達式>NE_OP<關系表達式>
<關系表達式>-><移動表達式>|<關系表達式>’<’<移動表達式>|<關系表達式>’>’<移動表達式>|<關系表達式> LE_OP <移動表達式>|<關系表達式> GE_OP <移動表達式>
<移動表達式>-><添加表達式>|<移動表達式> LEFT_OP <添加表達式>|<移動表達式> RIGHT_OP <添加表達式>
<添加表達式>-><乘法表達式>|<添加表達式>’+’<乘法表達式>|<添加表達式>’-’<乘法表達式>
<乘法表達式>-><轉換表達式>|<乘法表達式>’*’<轉換表達式>|<乘法表達式>’/’<轉換表達式>|<乘法表達式>’%’<轉換表達式>
<轉換表達式>-><一元表達式>|’(’<類型名稱>’)’<轉換表達式>
<一元表達式>-><后綴表達式>| INC_OP <一元表達式>|DEC_OP <一元表達式>|<一元運算符>< 轉換表達式>|字節<一元表達式>|字節’(’<類型名稱>’)’
<后綴表達式>-><主要表達式>|<后綴表達式>’[’<表達式>’]’|<后綴表達式>’(’’)’|<后綴表達式>’(’<參數表達式列表>’)’|<后綴表達式>’.’<標識符>|<后綴表達式> PTR_OP <標識符>|<后綴表達式> INC_OP |<后綴表達式> DEC_OP
<后綴表達式>’(‘<參數表達式列表>’)’|<后綴表達式>’.’<標識符>|<后綴表達式><PTR OP標識符>|<后綴表達式 INC OP>|<后綴表達式 DEC OP>
<主表達式>--><標識符>|<不變>|<字符串字面量>|’(‘<表達式>’)’
<參數表達式列表>:<賦值表達式>|<參數表達式列表>’,’ <賦值表達式>
<一元運算符>:’&’|’*’|’+’|’-‘|’~’|’!’
<賦值運算符>-->’=’| MUL_ASSIGN| DIV_ASSIGN| MOD_ASSIGN| ADD_ASSIGN| SUB_ASSIGN| LEFT_ASSIGN| RIGHT_ASSIGN| AND_ASSIGN| XOR_ASSIGN| OR_ASSIGN
<存儲類說明>-->TYPEDEF |EXTERN|靜態的|自動的|寄存器
<結構或聯合說明符>:<結構或聯合標識符>’{‘<struct聲明列表>’}’|<結構或聯合>’{‘< struct聲明列表’>’}’|<結構或聯合標識符>
<結構或聯合>:<結構>|<聯合>
< struct聲明列表>:<struct聲明>|< struct聲明列表>< struct聲明>
<struct聲明>:<說明限定表>< struct聲明列表>‘;‘
<說明限定表>--><類型說明符><說明限定表>|<類型說明符>|<類型限定><說明限定表>|<類型限定>
<結構說明符列表>--><結構說明符>|<結構說明符列表>’.’ <結構說明符>
<結構說明符>--><聲明符>|’:’<常量表達式>|<聲明符>’:’ <常量表達式>
<枚舉說明>--><枚舉>’{‘<枚舉列表>’}’|<枚舉標識符>’{‘<枚舉列表>’}’|
<枚舉標識符>
<枚舉列表>--><枚舉>|<枚舉列表>’;’ <枚舉>
<枚舉>--><標識符>|<標識符>’=’<常量表達式>
<類型限定>--><常量>|<變量>
<類型限定表>-->|<類型限定表><類型限定>
<參數類型列表>--><參數列表>|<參數列表>’.’<省略號>
<參數列表>--><參數聲明>|<參數列表>’;’ <參數聲明>
<類型名>--><說明限定表>|<說明限定表><抽象聲明符>
<抽象聲明符>--><指針>||<指針直接抽象聲明符>
<指針直接抽象聲明符>-->’(‘<抽象聲明>’)’|’[‘’]’|’[‘<常數表達式>’]’|<直接抽象聲明符>’[‘’]’|<直接抽象聲明符>’[‘<常數表達式>’]’|’(‘’)’|’(‘<參數類型列表>’)’|<直接抽象聲明符>’(‘’)’|<直接抽象聲明符>’(‘<參數類型列表>’)’
<標簽語句>--><標識符>’;’<語句>|<案例><常數表達式>’;’<語句>|<默認>’:’<語句>