天天看點

1014 C語言文法定義與C程式的推導過程

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

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

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

<類型說明符> →|||

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

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

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

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

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

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

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

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

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

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

<初始化聲明符> →<聲明符>|<聲明符 '=' 初始值設定項>

<初始值設定項> →<指派表達式>|<' {' 初始值設定項清單 '}'>|<' {'初始值設定項清單',' '}'>

<初始值設定項清單> →<初始值設定項>|<初始值設定項清單 ',' 初始值設定項>

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

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

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

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

<疊代語句> →<WHILE '(' 表達式')' 語句>|<FOR'(' 表達式語句表達式語句')' 語句>|<FOR'(' 表達式語句表達式語句表達式')' 語句>

<跳轉語句>|<繼續 ';'>|<打破;><傳回 ';'>|<傳回表達式 ';'>

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

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

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

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

<邏輯和表達>: <包容性或表達式>|<邏輯和具有包容性和 OP 表達式>

<包容性或表達> →<異或表達式><包容性或表達式 ' |' 異或表達式>

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

<和表達式>: <相等表達式>|<和表達式 '&' 相等表達式>

<相等表達式>: <關系表達式>|<相等表達式情商 OP 關系表達式>|<相等表達式 NE OP 關系表達式>

<關系表達式>: <轉移表達式>|<關系表達式 ' <' 轉移表達式>|<關系表達式 ' >' 轉移表達式>|<關系表達式LE OP 轉變表達式>|<關系表達式 GE OP 轉變表達式>

<轉變表達式>: <加法表達式>|<轉變表達式 LEFT OP 加法表達式>|<轉變表達式 RIGHT OP 加法表達式>

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

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

<強制轉換表達式>: <一進制表達式>|<'(' 鍵入名稱')' 強制轉換表達式>

<一進制表達式>: <字尾表達式>|<INC OP 一進制表達式>|<DEC OP 一進制表達式>|<一進制運算符強制轉換表達式>|<一進制的 SIZEOF 表達式>|<SIZEOF '(' 類型名稱')'>

<字尾表達式> →: <主要表達式>|<字尾表達式 '[' 表達']'>|<字尾表達式 '(' ')'>|<字尾表達式 '(' 參數表達式清單')'>|<字尾表達式 '.'辨別符>|<字尾表達式 PTR OP 辨別符>|<字尾表達式 INC OP>|<字尾表達式 DEC OP>

<主要表達式> →<辨別符>|<恒定>|<字元串型>|<' (' 表達式 ')'>

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

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

<指派運算符> → <'='>|<MUL 配置設定>|<DIV 配置設定>|<MOD 配置設定>|<ADD 配置設定>|<SUB 配置設定>|<LEFT 配置設定>|<RIGHT配置設定>|<AND 配置設定>|<XOR 配置設定>|<OR 配置設定>

<存儲類說明符> → <定義類型>|<外來的>|<靜态>|<自動>

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

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

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

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

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

<結構聲明符清單 >→<結構聲明符>|<結構聲明符清單 ',' 結構聲明符>

<結構聲明符> →: <聲明符>|<':' 常量表達式|聲明符 ':' 常量表達式>

<enum 說明符 >→<枚舉 ' {' 枚舉數清單 '}'>|<ENUM 辨別符 {' 枚舉數清單 '}'|<ENUM 辨別符> <枚舉數清單 >→<枚舉數>|<枚舉數清單 ',' 枚舉器>

<枚舉數 >→<辨別符>|<辨別符 '=' 常量表達式>

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

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

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

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

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

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

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

<标記的語句 >→<辨別符 ':' 聲明>|<case達式 ':' 聲明>|<預設 ':' 聲明>