<翻譯單元> -> <外部聲明>
<外部聲明> -> <函數定義>
<函數定義> -> <聲明說明符> <聲明符> <複合語句>
<聲明說明符> -> <存儲類說明符> | <類型說明符>| <類型限定符>
<存儲類說明符> -> “auto” | "register"| "static"| "extern"| "typedef"
<類型說明符> ->“void”| "char"| "short"| "int"| "long"| "float"| "double"| "signed"| "unsigned"| <struct-or-union-specifier>| <enum-specifier>| <typedef-name>
<結構聲明> -> <說明限定符> <結構說明符清單>
<說明限定符> -> <類型說明符> | <類型限定符>
<指針> -> "*" <類型限定符>* {<指針>}?
<類型限定符> -> "常量"| "volatile"
<直接說明符> -> <辨別符> | “(”<聲明符>“)” | <直接說明符>“[”{<常量表達式>}? “]” | <直接說明符>“(”<參數類型清單>“)” | <直接說明符>“(”{<辨別符>} *“)”
<常量表達式> -> <條件表達式>
<條件表達式> -> <邏輯或表達式> | <邏輯或表達式>“?” <表達式>“:”<條件表達式>
<邏輯或表達式> -> <邏輯和表達> | <邏輯或表達式“||” <邏輯和表達>
<邏輯和表達> -> <包容性,或表達> | <邏輯和表達“&&”<包容性,或表達>
<含-或表達式> -> <異或表達> | <包容性,或表達>“|” <異或表達>
<單獨或表達式> -> <和表達> | <單獨或表達>“^”<和表達>
<和表達式> -> <平等表達> | <和表達>“&”<平等表達>
<平等表達式> -> <關系表達式>| <平等表達>“==”<關系表達式>| <平等表達>“!=”<關系表達式>
<關系表達式> -> <移位表達式>| <關系表達式>“<”<移位表達式>| <關系表達式>“>”<移位表達式>| <關系表達式>“<=”<移位表達式>| <關系表達式>“> =”<移位表達式>
<移位表達式> -> <添加劑表達>| <移位表達式>“<<”<添加劑表達>| <移位表達式>“>>”<添加劑表達>
<添加劑表達式> -> <乘法表達式>| <添加劑表達>“+”<乘法表達式>| <添加劑表達式>“ - ”<乘法表達式>
<乘法表達式> -> <鑄表達>| <乘法表達式>“*”<投表達式>| <乘表達>“/”<投表達式>| <乘法表達式>“%”<投表達式>
<投表達式> -> <一進制表達式>| “(”<類型名>“),”<鑄表達>
<一進制表達式> -> <字尾表達式>| “++”<一進制表達式>| “ - ”<一進制表達式>| <一進制算子> <鑄表達>| “sizeof的”<一進制表達式>| “sizeof的”<類型名稱>
<字尾表達式> -> <主表達式>| <字尾表達式>“[”<表達式>“]”| <字尾表達式>“(”{<指派表達式>} *“)”| <字尾表達式>“。” <辨別符>| <字尾表達式>“ - >”<辨別>| <字尾表達式>“++”| <字尾表達式>“ - ”
<基本表達式> -> <辨別符>| <常數>| <字元串>| “(”<表達式>“)”
<常數> -> <整型常量>| <字元常量>| <float 常量>| <enumeration-constant>
<表達式> -> <指派表達式>
| <表達式>“,”<指派表達式>
<指派表達式> -> <條件表達式>
| <一進制表達式> <指派運算符> <指派表達式>
<指派運算符> -> “=”| “* =”| “/ =”| “%=”| “+ =”| “ - =”| “<< =”| “>> =”| “&=”| “^ =”| “| =”
<一進制操作符> -> “&”| “*”| “+”| “ - ”| “〜”| “!”
<類型名> -> {<說明限定符>} + {<抽象聲明符>}
<參數類型清單> -> <參數清單>| <參數清單>“,”...
<參數清單> -> <參數聲明>| <參數清單>“,”<參數聲明>
<參數聲明> -> {<聲明說明符>} + <說明符>| {<聲明說明符>} + <抽象說明符>| {<聲明說明符>} +
<抽象聲明符> - > <指針>| <指針> <直接抽象說明符>| <直接抽象說明符>
<直接抽象說明符> -> (<抽象說明符>)| {<直接抽象說明符>}? “[”{<常量表達式>}? “]”| {<直接抽象說明符>}? “(”{<參數類型清單>?|“)”
<枚舉說明> -> “枚舉”<辨別>“{”<枚舉清單>“}”| “枚舉數”,“{”<枚舉清單>“}”| “枚舉數”<辨別>
<枚舉清單> -> <枚舉數>| <枚舉清單>“,”<枚舉數>
<枚舉數> -> <辨別符>| <辨別>“=”<常量表達式>
<類型定義名稱> -> <辨別符>
<聲明> -> {<聲明說明符>} + {<初始化聲明符>} *
<初始化聲明符> -> <說明符>| <聲明符>“=”<初始化>
<初始化> -> <指派表達式>| “{”<初始化清單>“}”| “{”<初始化清單>“,”“}”
<初始化清單> -> <初始化>| <初始化清單>“,”<初始化>
<複合語句> -> “{”{<申報>} * {<語句>} *“}”
<語句> -> <标記語句>| <表達式語句>| <複合語句>| <選擇語句>| <循環語句>| <跳轉語句>
<标記語句> -> <辨別符>“:”<語句>| “case”<常量表達式>“:”<語句>| “default”“:”<語句>
<表達式語句> -> {<表達式>}? “;”
<選擇語句> -> “if”“(”<表達式>“),”<語句>| “if”“(”<表達式>“),”<語句>“else”<聲明>| “switch”“(”<表達式>“),”<語句>
<循環語句> -> “while”“(”<表達式>“)”<語句>| “do”<語句>“,while”“(”<表達式>“)”“;”| “for”“(”{<表達式>}?“;”{<表達式>}?“;”{<表達式>}“)”<語句>
<跳轉語句> -> “goto”<辨別>“;”| “continue”“;”| “break”“;”| “return”{<表達式>}? “;”