天天看點

C語言文法

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

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

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

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

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

<指針> -> <*> | <*指針>

<直接說明符> -> <辨別符>  | <直接說明符  ‘[‘  ‘]‘> | <直接辨別符‘[‘ 恒表達‘]‘> | <辨別符‘(‘ 參數名單 ‘)‘> | <辨別符‘(‘ ‘)‘> | <直接說明符 ‘;‘ 識别名單>

<識别名單> -> <辨別符> |  <識别名單 ‘;‘ 辨別符>

 <恒表達式> -> <恒表達式>

<參數名單> -> <參數聲明> | <參數名單 ‘;‘ 參數聲明>

 <參數聲明>-><‘說明符‘ ‘聲明‘ ‘辨別符‘>

 <複合語句>-> <‘{‘ ‘}‘> | <‘{‘語句清單‘}‘> | <‘{‘聲明‘ ‘語句清單‘ ‘}‘>

 <聲明_清單> -> <識别符> | <識别名單 識别符>

 <識别符> -> <初始化标别符> |<初始化辨別符 ‘,‘ 初始化辨別符>

 <初始化辨別符> -> <辨別符> | <辨別符 ‘=‘ 初始化器>

 <初始化器> -> <指派表達式> | <‘{‘  初始化清單 ‘}‘> | <‘{‘ 初始化清單 ‘,‘ ‘}‘>

 <初始化清單> -> <初始化>| <初始化清單 ‘,‘ 初始化器>

 <語句表> -> <語句> | <語句表 語句>

 <語句> -> |<複合語句> |<表達式語句>|<選擇語句>|<疊代語句>|<跳轉語句>

 <表達式語句> -> -><表達式 ‘;‘>

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

 <疊代語句> -> while< ‘(‘ 表達式 ‘)‘ 語句 >| for‘(‘ 表達語句 表達語句 ‘)‘ 語句 | for‘(‘ 表達語句 表達語句 表達式 ‘)‘ 語句

 <跳轉語句> -> <continue>|<break>|<return>|<return 表達式>

<表達式> -> <指派表達式>|<表達式,指派表達式>

<指派表達式> -><條件表達式>|<一進制表達式指派運算符  指派表達式>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<指派運算符> -> <‘=‘ > |< 乘法配置設定> |< div配置設定>| <mod配置設定> | <加法配置設定>  |  <sub配置設定 > |< 左配置設定> | <右配置設定> |< 與配置設定> |< 異或配置設定> |< 或配置設定>

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

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

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

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

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

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

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

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

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

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

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

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

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

 <參數清單> -> <聲明參數> | <參數清單‘,‘聲明參數>

 <類型名稱> -> <限定說明符清單> |< 限定符抽象說明符清單>

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

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

<有标号語句> -> <辨別符‘:‘語句> | <case常量表達式‘:‘語句>  | < default‘:‘語句>