〈程序〉::〈聲明〉|〈函數〉
〈聲明〉::(A|〈聲明〉')〈函數聲明〉
A::〈頭文件〉|〈宏定義〉
〈聲明〉'::〈聲明〉|null
〈頭文件〉::〈頭文件〉〈頭文件〉'
〈頭文件〉'::〈頭文件〉|null
〈宏定義〉::#define B〈宏定義〉|null
B::〈字符串 〉C
C::〈字符串〉|〈數字〉
〈字符串〉::〈變量名〉
〈函數聲明〉::〈返回值類型 〉〈函數名〉(〈形參〉) ;〈函數聲明〉|null
〈形參〉::〈數據類型 〉〈變量名〉|〈數據類型 〉〈變量名〉〈,〉〈形參〉|void
〈變量名〉::〈字母〉D
D::〈字母〉|〈數字〉|〈_〉|D|null
〈字母〉::F〈字母〉'
F::a|b|...|y|z|(大寫字母。。。)
〈字母〉'::〈字母〉|null
〈數字〉::E〈數字〉'
E::0|1|...|8|9
〈數字〉'::〈數字〉|null
〈返回值類型〉::int|float|char|void
〈函數名〉::〈變量名〉
〈函數〉::〈返回值類型〉〈函數名〉{〈函數主體〉}|函數名〉{〈函數主體〉}〈函數〉
〈函數主體〉::〈變量的申請〉〈處理語句〉
〈變量的申請〉::〈數據類型 〉〈變量名〉;〈變量的申請〉'
〈變量的申請〉'::〈變量的申請〉|null
〈數據類型 〉::int|float|char
〈處理語句〉::F〈處理語句〉'
F::〈賦值語句〉|〈判斷語句〉|〈循環語句〉|〈函數調用〉
〈處理語句〉'::〈處理語句〉|null
〈賦值語句〉::〈變量名〉=G
G::〈字母〉|〈數字〉|〈變量名〉|〈運算〉
〈運算〉::〈變量名〉〈運算符〉〈數字〉|〈數字〉〈運算符〉〈數字〉
〈運算符〉::+|-|*|/
〈判斷語句〉::if(〈條件〉){〈處理語句〉|null}H
H::〈Else if〉else{〈處理語句〉|null}|null
〈Else if〉::〈Else if〉'〈else if〉(〈條件〉){〈處理語句〉|null}|null
〈Else if〉'::〈Else if〉|null
〈條件〉::〈變量名〉〈判斷運算符〉〈變量名〉|〈變量名〉〈判斷運算符〉〈數字〉|〈數字〉〈判斷運算符〉〈數字〉|〈數字〉
〈判斷運算符〉::=|>|<|>=|<=|!=
〈循環語句〉::while(〈條件〉){〈處理語句〉}|do{〈處理語句〉}while(〈條件〉)|for(〈賦值語句〉;〈條件〉;〈運算〉){〈處理語句〉}
〈函數調用〉::〈變量名〉=〈函數名〉(〈形參〉)|〈函數名〉(〈形參〉)