天天看點

國文文法

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

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

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

<類型>→<無字元>|<字元型>|<整形>|<浮點型>

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

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

<直接聲明符>→<辨別符>|<直接聲明符’[’’]’>|<直接聲明符’[’普通表達式’]’>|<辨別符’(’參數表’)’>|<辨別符’(’’)’>|<直接聲明符’,’辨別符>

<辨別符清單>:<辨別符>|<辨別符清單’,’辨別符>

<一般表達式>→<條件表達式>

<參數表>→<參數聲明>|<參數表’,’參數聲明>

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

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

<聲明清單 >→<聲明>|<’{’聲明清單 聲明’}’>

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

<初始化 聲明符>→<聲明符>|<聲明符’=’ 初始化’>

<初始化>→<配置設定表達>|<’{’初始化清單’}’>|<’{’初始化清單’,’’}’>

<初始化清單>→<初始化>|<初始化清單’,’初始化>

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

<聲明>→<複合聲明>|<表達聲明>|<選擇聲明>|<循環聲明>|<跳轉聲明>

<表達聲明>→<’;’>|<表達’;’>

<選擇聲明>→<:if’(’表達’)’聲明>|<:if’(’表達’)’聲明 else 聲明>

<循環聲明>→<while’(’表達’)’聲明>|<for’(’表達聲明 表達聲明’)’聲明>|<for’(’表達聲明 表達聲明 表達’)’聲明>

<跳轉聲明>→<continue’,’>|<break’,’>|<return’,’>|<return 表達’,’>

<表達>→<:配置設定表達>|<表達’,’配置設定表達>

<配置設定表達>→<條件表達>|<一進制表達 配置設定運算符 配置設定表達>

<條件表達>→<邏輯 or 表達>|<邏輯 or 表達’?’>

<邏輯 or 表達>→<邏輯 and 表達>|<邏輯 or 表達 OR_OP邏輯 and 表達>

<邏輯and 表達>→<:包容 or 表達>|<邏輯 and 表達 AND_OP包容 and 表達>

<包容 or 表達>→<獨有 or 表達>|<包容 and 表達 ‘|’獨有 or 表達>

<獨有 or 表達>→<: and 表達>|<獨有 or 表達 ‘^’ and 表達>

<and表達>→<: 平等表達>|< and 表達 ‘&’ 平等表達>

<平等表達>→<: 關系表達>|<平等表達 EQ_OP 關系表達>|<平等表達 NE_OP 關系表達>

<關系表達>→<: 替換表達>|<關系表達 ‘<’ 替換表達>|<關系表達 ‘>’ 替換表達>|<關系表達 LE_OP 替換表達>|<關系表達 GE_OP 替換表達>

<替換表達>→<: 添加表達>|<替換表達 LEFT_OP 添加表達>|<替換表達 RIGHT_OP 添加表達>

<添加表達>→<: 乘法表達>|<添加表達 ‘+’ 乘法表達>|<添加表達 ‘-’ 乘法表達>

<乘法表達>→<: 計算表達>|<乘法表達 ’*’ 計算表達>|<乘法表達 ’/’ 計算表達>|<乘法表達 ’%’ 計算表達>

<計算表達>→<: 一進制表達>|<’(’類型名字’)’一進制表達>

<一進制表達>→<:字尾表達>|<INC_OP一進制表達 >|<DEC_OP一進制表達 >|<一進制操作 計算表達 >|<SIZEOF 一進制表達>|<SIZEOF’(’類型名字’)’ >

<字尾表達>→<:主要表達>|<:主要表達’[’表達’]’>|<:主要表達’(’’)’>|<:主要表達’(’論點表達清單’)’>|<:主要表達’.’IDENTIFIER>|<:主要表達 PTR_OP IDENTIFER>|<:主要表達 INC_OP >|<:主要表達 DEC_OP >

<主要表達>→< IDENTIFER >|< CONSTANT >|< STRING_LITERAL >|<’(’表達’)’>

<論點表達>→< :指派表達>|< 指派表達清單’,’指派表達 >

<一進制操作符>→< : ' & ' >|< ' * ' >|< ' + ' >|< ' - ' >|< ' ~ ' >|< ' ! ' >

<assignment_operator>→< ' = ' >|< MUL_ASSIGN>|< DIV_ASSIGN>|< MOD_ASSIGN>|< ADD_ASSIGN>|< SUB_ASSIGN>|<LEFT_ASSIGN>|<RIGHT_ASSIGN>|<AND_ASSIGN>|< XOR_ASSIGN>|< OR_ASSIGN>

<存儲類說明符>→< TYPEDEF >|< EXTERN >|< STATIC >|< AUTO' >|<REGISTER>

<結構或聯合說明符>→<:結構或聯合IDENTIFIER’{’ 結構體聲明清單’}’>|<結構或聯合’{’ 結構體聲明清單’}’>|<結構或聯合IDENTIFIER>

<結構或聯合>→< STRUCT >|< UNION >

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

<結構體聲明>→<說明符限定符清單  結構說明符>

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

<結構體聲明清單>→<結構體聲明>|<結構體聲明清單’,’ 結構體聲明>

<結構體聲明>→<:聲明>|<’:’常數表達式>|<聲明’:’常數表達式>

<enum說明符>→<ENUM’{’ 枚舉器清單’}’ >|<’ ENUM IDENTIFIER’{’ 枚舉器清單’}’>|<’ ENUM IDENTIFIER>

<枚舉器清單>→<枚舉器>|<’ ENUM IDENTIFIER’{’ 枚舉器清單’}’>|<’ 枚舉器清單’,’ 枚舉器>

<枚舉器>→<IDENTIFIER>|< IDENTIFIER’=’ 常數表達式>

<類型限定符>→<CONST>|< VOLATILE >

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

<參數類型清單>→<參數清單>|<參數清單 ‘,’ ELLIPSIS >

<參數清單>→<:參數宣言>|<參數清單 ‘,’ 參數宣言>

<類型名字>→<說明符限定符清單>|<說明符限定符清單  摘要說明符>

<摘要說明符>→<指針>|<直接摘要說明符>|<指針 直接摘要說明符>

<直接摘要說明符>→<’(’ 摘要說明符’)’>|<'[' ']' >|<'['常數表達式']' >|<直接摘要說明符'[' ']' >|<直接摘要說明符'['常數表達式']' >|<'(' ')' >|<'(' 參數類型清單 ')' >|<直接摘要說明符'(' ')' >|<直接摘要說明符'('參數表達式')' >

<标記語句>→< IDENTIFIER ':' 聲明>|< CASE 常熟表達式':' 聲明 >|<DEFAULT ':' 聲明 >