天天看點

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

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

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

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

函數類型-> void|char|int|float

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

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

直接說明符-> <辨別符>|<直接說明符[]>|<直接說明符[常量表達式]>|<辨別符(參數序列)>|<辨別符()>|<直接說明符,辨別符序列>

辨別符序列-> <辨別符>|<辨別符序列><,><辨別符>

常量表達式-> <條件表達式>

參數序列-> <參數聲明>|<參數聲明><,><參數聲明>

參數聲明-> <聲明說明符><聲明符>

複合語句-> <{}>|<{<陳述序列>}>|<{<聲明序列><陳述序列>}>

聲明序列-> <聲明符>|<聲明序列><聲明符>

聲明符-> <初始化說明符>|<初始化說明符><,><初始化說明符>

初始化說明符-> <說明符>|<說明符><=><初始化程式>

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

初始化序列-> <初始化程式>|<初始化序列><,><初始化>

陳述序列-> <陳述語句>|<陳述序列><陳述語句>

陳述語句-> <複合語句>|<表達式語句>|<選擇語句>|<循環語句>|<轉移語句>

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

選擇語句-> <if(表達式)陳述語句>| <if(表達式)陳述語句><,><else 陳述語句>

循環語句->  <for (<表達式語句 ><表達式語句>< 表達>)>|<for (<表達式語句 ><表達式語句>< 表達>)><,><陳述語句>

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

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

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

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

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

運算邏輯和表達->  <包容性或表達>|<包容性或表達><運算包容性或表達>

包容性或表達->  <異或表達式>|<包容性或表達><|><異或表達式>

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

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

相等表達式->  <關系式>|<相等表達式><運算關系式>

關系式->  <移動式>|<關系式><'<'><移動式>|<關系式><'>'><移動式>

移動式-> <累積式>|<移動式> <LEFT_OP ><累積式>|<>移動式><RIGHT_OP ><累積式>

累積式-> <乘法式>|<移動式><+> <乘法式> |<移動式><-><乘法式>

乘法式-> <轉換表達式>|<轉換表達式><*><乘法式> |<轉換表達式></><乘法式> | <轉換表達式><%><乘法式>

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

一進制表達式-> <字尾表達式>|<INC_OP > <一進制表達式 >|<DEC_OP > <一進制表達式 >|<一進制運算符> <轉換表達式>|<sizeof> <一進制表達式>| <sizeof> <(類型名稱)> 

字尾表達式->  <主要表達式>| <轉換表達式><[ ]>|  <轉換表達式><( )>|  <轉換表達式><參數表達式清單>|  <轉換表達式>