<程序>--><外部聲明>|<程序 外部聲明>
<外部聲明>--><函數定義>|<定義>
<函數定義>--><類型 復合語句>
<類型>-->無返回類型|字符型|整型|浮點型
<聲明符>--><指針直接聲明符>|<直接聲明符>
<指針>-->’ * ’ | ’ * ’ <指針>
<直接聲明符>v<標識符>|<直接聲明符>’ [’ ’]’ |<直接聲明符>’[’ <普通表達式>’]’ |<標識符>’ (’ <參數表>’ )’ |<標識符>’ (’ ’ )’ |<直接聲明符 >‘ , ’ < 標識符表>
<標識符列表>:<標識符>|<標識符列表 >‘ , ‘ <標識符>
<一般表達式>--><條件表達式>
<參數表>--><參數聲明>|<參數表 >‘ , ‘< 參數聲明>
<復合語句>-->’ {’ ‘} ’|’ {’ <語句列表 >‘}’ |’ { ‘< 聲明列表 語句表> ‘}’
<聲明表>--><聲明>|<聲明列表 聲明>
<聲明>--><內聲明符>|<內聲明符表 >‘ , ’ <內聲明符>
<內聲明符>--><聲明符>|<聲明符 >‘ = ‘ < 初始化>
<初始化>--><賦值表達式>|’{’<初始列表>’}’|’{’<初始化列表>’,’’}’
<初始化列表>--><初始化>|<初始化列表>’,’<初始化>
<語句列表>--><語句>|<語句列表><語句>
<語句>-->|<復合語句>|<表達式語句>|<選擇語句>|<循環語句>|<跳轉語句>
<表達式語句>-->’;’|<表達式>’;’
<選擇語句>:IF’(’<表達式>’)’<語句>|IF’(‘<表達式>’)’<語句>ELSE<語句>
<條件語句>-->while’(‘<表達式>’)’<語句>|FOR’(‘<表達式語句><表達式語句>’)’<語句>| FOR’(‘<表達式語句><表達式語句><表達式>’)’ <語句>
<跳轉語句>|CONTINUE’;’|BREAK’;’|RETURN’;’|RETURN <表達式>’;’
<表達式>:<賦值語句>|<表達式>’;’<賦值語句>
<賦值表達式>--><條件表達式>|<一元表達式><賦值運算符><賦值表達式>
<條件表達式>--><邏輯或表達式>|<邏輯或表達式>’?’<表達式>’:’<條件表達式>
<邏輯或表達式>--><邏輯與表達式>|<邏輯或表達式> < 或OP邏輯與表達式>
<邏輯與表達式>:<包含或表達式>|<邏輯和表達式><和OP包含或表達式>
<包含或表達式>--><異或表達式>|<包容性表達式>’|’<異或表達式>
<異或表達式>:<與表達式>|<異或表達式>’^’<與表達式>
<與表達式>:<平等表達式>|<與表達式>’&’<平等表達式>
<平等表達式>:<關系式>|<平等表達式><EQ OP關系式>|<平等表達式><NE OP 關系式>
<關系式>:<移動式>|<關系式>’<’<移動式>|<關系式>’>’<移動表達式>|<關系式><LE OP移動式>|<關系式><GE OP移動式>
<移動式>:<附加式>|<移動表達式><左OP附加式>|<移動表達式><右OP附加式>
<附加式>:<乘法表達式>|<附加式>’+’<乘法表達式>|<附加式>’-’<乘法表達式>
<乘法表達式>:<轉換表達式>|<乘法表達式>’*’<轉換表達式>|<乘法表達式>’/’ <轉換表達式>|<乘法表達式>’%’<轉換表達式>
<轉換表達式>:<一元表達式>|’(‘<類型名稱>’)’ <轉換表達式>
<一元表達式>:<后綴表達式>|< INC OP一元表達式>|< DEC OP一元表達式>|<一元運算符><轉換表達式>|< SIZEOF一元表達式>|< SIZEOF’(‘類型名稱’)’>
<后綴表達式>-->:<主要表達式>|< >’[‘<表達式>’]’|<后綴表達式>
<后綴表達式>’(‘<參數表達式列表>’)’|<后綴表達式>’.’<標識符>|<后綴表達式><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聲明列表>‘;‘
<說明限定表>--><類型說明符><說明限定表>|<類型說明符>|<類型限定><說明限定表>|<類型限定>
<結構說明符列表>--><結構說明符>|<結構說明符列表>’.’ <結構說明符>
<結構說明符>--><聲明符>|’:’<常量表達式>|<聲明符>’:’ <常量表達式>
<枚舉說明>--><枚舉>’{‘<枚舉列表>’}’|<枚舉標識符>’{‘<枚舉列表>’}’|
<枚舉標識符>
<枚舉列表>--><枚舉>|<枚舉列表>’;’ <枚舉>
<枚舉>--><標識符>|<標識符>’=’<常量表達式>
<類型限定>--><常量>|<變量>
<類型限定表>-->|<類型限定表><類型限定>
<參數類型列表>--><參數列表>|<參數列表>’.’<省略號>
<參數列表>--><參數聲明>|<參數列表>’;’ <參數聲明>
<類型名>--><說明限定表>|<說明限定表><抽象聲明符>
<抽象聲明符>--><指針>||<指針直接抽象聲明符>
<指針直接抽象聲明符>-->’(‘<抽象聲明>’)’|’[‘’]’|’[‘<常數表達式>’]’|<直接抽象聲明符>’[‘’]’|<直接抽象聲明符>’[‘<常數表達式>’]’|’(‘’)’|’(‘<參數類型列表>’)’|<直接抽象聲明符>’(‘’)’|<直接抽象聲明符>’(‘<參數類型列表>’)’
<標簽語句>--><標識符>’;’<語句>|<案例><常數表達式>’;’<語句>|<默認>’:’<語句>