<程式> -> <外部宣告> | <程式> <外部宣告>
<外部宣告> -> <函式定義> | <宣告>
<函式定義> -> <說明符型別> <宣告> <複合語句>
<說明符型別> -> <空類> | <字元型> | <浮點型>
<宣告> -> <指標> <直接說明符> | <直接說明符>
<指標> -> <*> | <*指標>
<直接說明符> -> <識別符號> | <直接說明符 '[' ']'> | <直接識別符號'[' 恆表示式 ']'> | <識別符號'(' 引數名單 ')'> | <識別符號'(' ')'> | <直接說明符 ';' 識別名單>
<識別名單> -> <識別符號> | <識別名單 ';' 識別符號>
<恆表示式> -> <恆表示式>
<引數名單> -> <引數宣告> | <引數名單 ';' 引數宣告>
<引數宣告> -> <宣告識別符號> | <識別符號>
<複合語句> -> <'{' '}'> | <'{'語句名單'}'> | <'{'識別名單 語句名單'}'>
<識別名單> -> <識別符> | <識別名單 識別符>
<識別符> -> <初始化識別符號> | <初始化識別符號 ';' 初始化識別符號>
<初始化識別符號> -> <識別符號> | <識別符號 '=' 初始化器>
<初始化器> -> <任務表示式> | <'{' 初始化列表 '}'> | <'{' 初始化列表 '}'>
<初始化列表> -> <初始化器> |<初始化列表 ';' 初始化器>
<語句表> -> <語句> | <語句表 語句>
<語句> -> <複合語句> | <語句表示式> | <選擇語句> | <迭代語句> | <跳轉語句>
<語句表示式> -> <表示式>
<選擇語句> -> < : IF'(' 表示式 ')' 語句> |<IF '(' 表示式 ')' 語句 ELSE 語句>
<迭代語句> -> <WHILE '(' 表示式 ')' 語句> | <FOR'(' 表達語句 表達語句 ')' 語句> | <FOR'(' 表達語句 表達語句 ')' 語句>
<跳轉語句> -> <CONTINUE> | <BREAK> | <RETURN> | <RETURN 表示式>
<表示式> -> <:複製表示式> | <表示式 ';' 複製表示式>
<賦值表示式> -> <條件表示式> | <一元賦值 運算子表示式 賦值表示式>