標籤:符號 標識符 操作 參數 賦值運算 定義 列表 定義類 靜態
<程式>→<外部聲明>|<程式><外部聲明>
<外部聲明>→<函數定義>|<聲明>
<函數定義>→<類型說明><聲明><複合陳述式>
<類型說明>→void|char|int |float
<聲明>→<指標直接說明符>|<直接說明符>
<指標>→’*‘|‘*‘指標
<直接說明符>→<標識符>|<直接說明符‘[’‘]’>|<直接說明符‘[’常數運算式‘]’> |<標識符‘(’參數列表‘)’>|<標識符><‘(’‘)’>>|<直接說明符><‘,‘><標識符列表>
<標識符列表>→<:標識符>|<標識符列表><‘,‘><標識符>
<常數運算式>→<條件運算式>
<參數列表>→<參數聲明>|<參數列表><‘,‘><參數聲明>
<參數聲明>→<聲明說明符><標識符>
<複合陳述式>→<‘{’><‘}’>|<‘{‘><語句列表><‘}‘>|<‘{‘><聲明列表><語句列表><‘}‘>
<聲明列表>→<聲明>|<聲明列表><聲明>
<聲明>→<初始化聲明>|<初始化聲明列表><‘,’><初始化聲明>
<初始化聲明>→<聲明>|<聲明><‘=’><初始化程式>
<初始化程式>→<賦值運算式>|<‘{’><初始化程式列表><‘}’>|<‘{‘><初始化程式列表><‘,‘><‘}‘>
<初始化程式列表>→<初始化程式>|<初始化程式列表><‘,’><初始化程式>
<語句列表>→<語句>|<語句列表><語句>
<語句>→<複合陳述式>|<運算式語句>|<選擇語句>|<迴圈語句>|<跳躍語句>
<運算式語句>→<‘;‘>|<運算式><‘;‘>
<選擇語句>→<:><if><‘(‘><運算式><‘)‘><語句>|<if><‘(‘><運算式><‘)‘><語句><else><語句>
<迴圈語句>→<while><‘(‘><運算式><‘)‘><語句>|<for><‘(‘><運算式語句><運算式語句><‘)‘><語句>|<for><‘(‘><運算式語句><運算式語句><運算式><‘)‘><語句>
<跳躍語句>→ CONTINUE< ‘;‘>| BREAK <‘;‘>| RETURN <‘;‘>| RETURN <運算式> <‘;‘>
<運算式>→<:><賦值運算式>|<運算式><‘,‘><賦值運算式>
<賦值運算式>→<條件運算式>|<一元運算式><賦值操作符><賦值運算式>
<條件運算式>→<邏輯或表達> | <邏輯或表達><‘?‘> <運算式>< ‘:‘><條件運算式>
<邏輯或表達>→<邏輯與表達> |< 邏輯或表達 或運算><邏輯運算式>
< 邏輯與表達>:<或運算式> |< 邏輯運算式 >和<運算或運算式>
< 或運算運算式>→<異或運算式> |< 或運算運算式 ><‘>|<‘>< 異或運算式>
< 異或運算式>:<與運算式> | < 異或運算式><‘^‘><與運算式>
< 與運算式>:<相等運算式> |< 與運算式><‘&‘><相等運算式>
< 相等運算式>:<關聯運算式> |< 相等運算式等於運算關聯運算式> | <相等運算式不等於運算關聯運算式>
< 關聯運算式>:<移位運算式> | <關聯運算式><‘<‘><移位運算式 >|< 關聯運算式><‘>‘><移位運算式> |< 關聯運算式小於等於運算移位運算式> |< 關聯運算式大於等於運算移位運算式>
< 移位運算式>:<加法運算式> | <移位運算式左運算加法運算式> |< 移位運算式右運算加法運算式>
< 加法運算式:<乘法運算式> |< 加法運算式><‘+‘><乘法運算式> |< 加法運算式><‘-‘><乘法運算式>
< 乘法運算式>:<強制轉換運算式> | <乘法運算式><‘*‘><強制轉換運算式> | <乘法運算式><‘/‘><強制轉換運算式 >| <乘法運算式><‘%‘><強制轉換運算式>
< 強制轉換運算式>:<一元運算式> |< ‘(‘>< 類型名稱 ><‘)‘><強制轉換運算式>
<一元運算式>:<尾碼運算式> | <INC運算一元運算式> |< DEC運算一元運算式> |< 一元運算子將運算式> | < 結構體變數的一元運算式 >| < 結構體變數的><‘(‘>< 類型名稱>< ‘)‘>
<尾碼運算式>:<基本運算式> | <尾碼運算式><‘[‘><運算式><‘]‘> |< 尾碼運算式><‘(‘ ><‘)‘> | <尾碼運算式>< ‘(‘><參數運算式列表><‘)‘ > | <尾碼運算式><‘.‘>< 標識符 >| <尾碼運算式指標運算標識符> |< 尾碼運算式INC運算> |< 尾碼運算式DEC運算>
<基本運算式>→<標識符> |<常量 >| <字串常量> | < ‘(‘><運算式><‘)‘>
<參數運算式列表>:< 賦值運算式 >| <參數運算式列表><‘,‘><賦值運算式>
<一元運算子>:< ‘&‘> | < ‘*‘> | < ‘+‘> | < ‘-‘> | < ‘~‘> |< ‘!‘>
<賦值運算子>→<‘=‘> |< 乘法分配> | <DIV分配> |< MOD分配> | <加法分配> | < SUB分配> |< 左分配 >| <右分配與分配>|< 異或分配 >|<或分配>
<儲存類說明符>→<定義類型> |< 外部變數> |< 靜態 >|< 自動> | <寄存器>
<結構或聯合說明符>:<結構或聯合標識符><‘{‘><結構體聲明列表><‘}‘> |< 結構或聯合><‘{‘><結構體聲明列表><‘}‘ > |< 結構或聯合標識符>
<結構或聯合>:<結構體> |< 聯合>
<結構體聲明列表>:<結構體聲明> |< 結構體列表聲明結構體聲明>
<結構體聲明>:<說明符限定符列表結構說明符><‘;‘>
<說明符說明符限定符列表> →<類型說明符說明符限定符列表> |< 類型說明符> |< 類型限定符說明符限定符列表 >| <類型限定符>
<結構說明符列表>→<結構體聲明> |< 結構說明符列表><‘,‘><結構體聲明>
<結構體聲明>→<:><聲明 >| < ‘:‘><常量運算式> |< 聲明><‘:‘><常量運算式>
<枚舉聲明>→<枚舉><‘{‘><列舉程式列表><‘}‘> | <枚舉標識符><‘{‘><列舉程式列表><‘}‘> | <枚舉標識符>
<列舉程式列表>→<列舉程式> | <列舉程式列表><‘,‘>
<列舉程式列舉程式>→<標識符 >|< 標識符><‘=‘><常量運算式>
<類型限定符>→<常量 >|< 易失的>
<類型限定符列表>→<類型限定符> | <類型限定符列表>< 類型限定符>
<參數類型列表>→<參數列表> | <參數列表><‘,‘><省略符號>
<參數列表>→<:><聲明參數> |< 參數列表><‘,‘><聲明參數>
<抽象說明符>→<指標> | <直接抽象說明符> | <指標直接抽象說明符>
<直接抽象說明符>→ <‘(‘> <抽象說明符 ><‘)‘ > |< ‘[‘ ><‘]‘ >| < ‘[‘>< 常量運算式><‘]‘>| <直接抽象說明符><‘[‘>< ‘]‘> | <直接抽象說明符><‘[‘>< 常量運算式>< ‘]‘> | < ‘(‘>< ‘)‘> | < ‘(‘><參數類型列表><‘)‘> |< 直接抽象說明符><‘(‘>< ‘)‘> | <直接抽象說明符><‘(‘><參數類型列表><‘)‘>
<有標號語句>→<標識符><‘:><‘語句> | <CASE常量運算式><‘:‘><語句 > | < DEFAULT><‘:‘><語句>
c語言文法