C語言文法分析


<源函數> <外部聲明> | <源程序> <外部聲明>

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

<函數定義> <類型標識符> <聲明部分語句>

<標識符類型> <無類型> | <字符> | <整型> | <浮點型>

<聲明>  <指針直接聲明> | <直接聲明>

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

<直接聲明> <標識符> | <直接聲明[ ]> | <直接聲明[常量表達式]> | <標識符(參數列表)> | <標識符()> | <直接聲明 , 標識符列表>

<標識符列表> : <標識符> | <標識符列表 ,標識符>

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

<參數列表> <參數聲明> | <參數列表 ,參數聲明>

<參數聲明> <說明符聲明><標識符>

<復合語句> <{ }> | <{ 語句列表 }> | <{ <聲明列表> <語句列表> }>

<聲明列表> <聲明> | <聲明列表> <聲明>

<聲明> <初始化聲明> | <初始化聲明列表 ,初始化聲明>

<初始化聲明> <聲明> | <聲明=初始化程序>

<初始化程序> <表達式> | <{初始化程序列表}> | <{初始化程序列表 , }>

<初始化程序列表> <初始化程序> | <初始化程序列表 , 初始化程序>

<語句列表> <語句> | <語句列表> <語句>

<語句> | <復合語句> | <表達式語句> | <選擇語句> | <循環語句> |<跳轉語句>

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

<選擇語句> : < IF(表達式)語句> | < IF(表達式)語句 > < ELSE 語句>

<循環語句> < WHILE(表達式)語句> | < FOR(表達式語句表達式語句)語句> | < FOR(表達式語句表達式語句表達式)語句>

<跳轉語句> | <continue;> |<breack;> | <return;> | <return 表達式; >

<表達式> : <賦值表達式> | <表達式, 賦值表達式>

<賦值表達式> <條件表達式> | <一元表達式> <賦值操作符> <賦值表達式>

<條件表達式> <邏輯表達式> | <邏輯表達式> <表達式:> <條件表達式>

<邏輯表達式> <邏輯表達式> | <邏輯表達式> <‘運算> <邏輯表達式>

<邏輯表達式> <邏輯表達式> | <邏輯表達式> <‘運算> <邏輯表達式>

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

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

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

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

<關系表達式> : <替換表達式> | <關系表達式 < 替換表達式> | <關系表達式 > 替換表達式> | <關系表達式<=替換表達式> | <關系表達式>=替換表達式>

<替換表達式> : <加法表達式> | <替換表達式> <左運算> <加法表達式> | <替換表達式> <右運算> <加法表達式>

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

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

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

<一元表達式> : <后綴表達式> | <加一運算> <一元表達式> | <減一運算> <一元表達式> | <一元運算符> <強制轉換表達式> | <結構體變量> <一元表達式> | <結構體變量(類型名稱)>

<后綴表達式> → : <基本表達式> | <后綴表達式 [ 表達式 ]> | <后綴表達式()> | <后綴表達式(參數表達式列表)> | <后綴表達式 . 標識符> | <后綴表達式> <指針運算> <標識符> | <后綴表達式> <加一運算> | <后綴表達式> <減一運算>

<基本表達式> → <標識符> | <常量> | <字符串> | <(表達式)>

<參數表達式列表> : <參數表達式> | <參數表達式列表 , 參數表達式>

<一元運算符> : <&> | <*> | <+> |<-> | <~> | <!>

< 賦值運算符> → <=> | <乘法賦值> | <除法賦值> | <求余賦值> | <加法賦值> | <減法賦值> | <左賦值> | <右賦值> | <與賦值> | <異或賦值> | <或賦值>

<儲存類說明符> → <typedef(定義類型)> | <extern(外部變量)> | <static(靜態)> | <auto(自動)> | <register(寄存器)>

<結構體或共用體說明符> : <結構體或共用體> <標識符> <{結構體聲明列表}> | <結構體或共用體 { 結構體聲明列表 }> | <結構體或共用體> <標識符> 

<結構體或共用體> : <結構體> | <共同體>

<結構體聲明列表> : <結構體聲明> | <結構體聲明列表> <結構體聲明>

<結構體聲明> : <說明符限定符列表> <結構體聲明列表;>

<說明符限定符列表> → <類型說明符> <說明符限定符列表> | <類型說明符> | <類型限定符<說明符限定符列表> | <類型限定符>

<結構說明符列表> → <結構說明符> | <結構說明符列表 , 結構說明符>

<結構說明符> → : <說明符> | <:常數表達式> | <說明符 : 常數表達式>

<枚舉說明符> → <枚舉{枚舉器列表}> | <枚舉標識符{枚舉器列表}> | <枚舉標識符>

<枚舉器列表> → <枚舉器> | <枚舉器列表 , 枚舉器>

<枚舉器> → <標識符> | <標識符 = 常數表達式>

<類型限定符> → <常量> | <變量>

<類型限定符列表> → <類型限定符> | <類型限定符列表> <類型限定符>

<參數類型列表> → <參數列表> | <參數類型列表 , 省略>

<參數列表> → : <參數說明> | <參數列表 , 參數說明>

<類型名稱> → <說明符限定符列表> | <說明符限定符列表> <抽象說明符>

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

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

<標記語句> → <標識符 : 語句> | <case> <常數表達式 : 語句> | <default> <語句>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM