天天看點

1029c語言文法

<程式>→<外部聲明>|<程式><外部聲明>

  <外部聲明>→<函數定義>|<聲明>

  <函數定義>→<類型說明><聲明><複合語句>

  <類型說明>→void|char|int |float

  <聲明>→<指針直接說明符>|<直接說明符>

  <指針>→’*‘|'*'指針

  <直接說明符>→<辨別符>|<直接說明符‘[’‘]’>|<直接說明符‘[’常數表達式‘]’> |<辨別符‘(’參數清單‘)’>|<辨別符><‘(’‘)’>>|<直接說明符><','><辨別符清單>

  <辨別符清單>→<:辨別符>|<辨別符清單><','><辨別符>

  <常數表達式>→<條件表達式>

  <參數清單>→<參數聲明>|<參數清單><','><參數聲明>

  <參數聲明>→<聲明說明符><辨別符>

  <複合語句>→<‘{’><‘}’>|<'{'><語句清單><'}'>|<'{'><聲明清單><語句清單><'}'>

  <聲明清單>→<聲明>|<聲明清單><聲明>

  <聲明>→<初始化聲明>|<初始化聲明清單><‘,’><初始化聲明>

  <初始化聲明>→<聲明>|<聲明><‘=’><初始化程式>

  <初始化程式>→<指派表達式>|<‘{’><初始化程式清單><‘}’>|<'{'><初始化程式清單><','><'}'>

  <初始化程式清單>→<初始化程式>|<初始化程式清單><‘,’><初始化程式>

  <語句清單>→<語句>|<語句清單><語句>

  <語句>→<複合語句>|<表達式語句>|<選擇語句>|<循環語句>|<跳躍語句>

  <表達式語句>→<';'>|<表達式><';'>

  <選擇語句>→<:><if><'('><表達式><')'><語句>|<if><'('><表達式><')'><語句><else><語句>

  <循環語句>→<while><'('><表達式><')'><語句>|<for><'('><表達式語句><表達式語句><')'><語句>|<for><'('><表達式語句><表達式語句><表達式><')'><語句>

  <跳躍語句>→ CONTINUE< ';'>| BREAK <';'>| RETURN <';'>| RETURN <表達式> <';'>

  <表達式>→<:><指派表達式>|<表達式><','><指派表達式>

  <指派表達式>→<條件表達式>|<一進制表達式><指派操作符><指派表達式>

  <條件表達式>→<邏輯或表達> | <邏輯或表達><‘?‘> <表達式>< ‘:‘><條件表達式>

<邏輯或表達>→<邏輯與表達>  |< 邏輯或表達 或運算><邏輯表達式>

 < 邏輯與表達>:<或表達式> |< 邏輯表達式 >和<運算或表達式>

< 或運算表達式>→<異或表達式> |< 或運算表達式 ><‘>|<‘>< 異或表達式>

< 異或表達式>:<與表達式> | < 異或表達式><‘^‘><與表達式>

< 與表達式>:<相等表達式> |< 與表達式><‘&‘><相等表達式>

< 相等表達式>:<關系表達式> |< 相等表達式等于運算關系表達式> | <相等表達式不等于運算關系表達式>

< 關系表達式>:<移位表達式> | <關系表達式><‘<‘><移位表達式 >|< 關系表達式><‘>‘><移位表達式>  |<  關系表達式小于等于運算移位表達式> |< 關系表達式大于等于運算移位表達式>

< 移位表達式>:<加法表達式> | <移位表達式左運算加法表達式>  |< 移位表達式右運算加法表達式>

< 加法表達式:<乘法表達式> |< 加法表達式><‘+‘><乘法表達式> |< 加法表達式><‘-‘><乘法表達式>

< 乘法表達式>:<強制轉換表達式> | <乘法表達式><‘*‘><強制轉換表達式> | <乘法表達式><‘/‘><強制轉換表達式 >| <乘法表達式><‘%‘><強制轉換表達式>

<  強制轉換表達式>:<一進制表達式>  |<  ‘(‘>< 類型名稱 ><‘)‘><強制轉換表達式>

<一進制表達式>:<字尾表達式> | <INC運算一進制表達式> |< DEC運算一進制表達式> |< 一進制運算符将表達式> | < 結構體變量的一進制表達式 >| < 結構體變量的><‘(‘>< 類型名稱>< ‘)‘>

<字尾表達式>:<基本表達式> | <字尾表達式><‘[‘><表達式><‘]‘>  |< 字尾表達式><‘(‘ ><‘)'> | <字尾表達式>< ‘(‘><參數表達式清單><‘)‘ >  | <字尾表達式><‘.‘>< 辨別符 >| <字尾表達式指針運算辨別符>    |< 字尾表達式INC運算>  |< 字尾表達式DEC運算>

<基本表達式>→<辨別符>  |<常量 >| <字元串常量> | < ‘(‘><表達式><‘)‘>

<參數表達式清單>:< 指派表達式 >| <參數表達式清單><‘,‘><指派表達式>

<一進制運算符>:< ‘&‘>  | < ‘*‘>  | < ‘+‘>  | < ‘-‘>  | < ‘~‘>  |<  ‘!‘>

<指派運算符>→<‘=‘>  |< 乘法配置設定> | <DIV配置設定> |< MOD配置設定> | <加法配置設定>  | < SUB配置設定>  |< 左配置設定 >| <右配置設定與配置設定>|< 異或配置設定 >|<或配置設定>

<存儲類說明符>→<定義類型> |< 外部變量> |< 靜态  >|< 自動>  | <寄存器> 

<結構或聯合說明符>:<結構或聯合辨別符><‘{‘><結構體聲明清單><‘}‘>  |< 結構或聯合><‘{'><結構體聲明清單><‘}‘ > |< 結構或聯合辨別符>

<結構或聯合>:<結構體> |< 聯合>

<結構體聲明清單>:<結構體聲明> |< 結構體清單聲明結構體聲明>

<結構體聲明>:<說明符限定符清單結構說明符><‘;‘>

<說明符說明符限定符清單> →<類型說明符說明符限定符清單> |< 類型說明符>  |< 類型限定符說明符限定符清單 >| <類型限定符>

<結構說明符清單>→<結構體聲明> |< 結構說明符清單><‘,‘><結構體聲明>

<結構體聲明>→<:><聲明 >| < ‘:‘><常量表達式> |< 聲明><‘:‘><常量表達式>

<枚舉聲明>→<枚舉><‘{‘><枚舉器清單><‘}‘>  | <枚舉辨別符><‘{‘><枚舉器清單><‘}‘>  | <枚舉辨別符>

<枚舉器清單>→<枚舉器> | <枚舉器清單><‘,‘>

<枚舉器枚舉器>→<辨別符 >|< 辨別符><‘=‘><常量表達式>

<類型限定符>→<常量 >|< 易失的>

<類型限定符清單>→<類型限定符> | <類型限定符清單><  類型限定符>

<參數類型清單>→<參數清單> | <參數清單><‘,‘><省略符号>

<參數清單>→<:><聲明參數> |< 參數清單><‘,‘><聲明參數>

<抽象說明符>→<指針> | <直接抽象說明符> | <指針直接抽象說明符>

<直接抽象說明符>→ <‘(‘> <抽象說明符 ><‘)‘ > |<  ‘[‘ ><‘]‘  >| < ‘[‘>< 常量表達式><‘]‘>| <直接抽象說明符><‘[‘>< ‘]‘>  | <直接抽象說明符><‘[‘>< 常量表達式>< ‘]‘>  | < ‘(‘>< ‘)‘>  | < ‘(‘><參數類型清單><‘)‘>  |<  直接抽象說明符><‘(‘>< ‘)‘>  | <直接抽象說明符><‘(‘><參數類型清單><‘)‘>

<有标号語句>→<辨別符><‘:><‘語句> |  <CASE常量表達式><‘:‘><語句 > | < DEFAULT><‘:‘><語句>