天天看點

語言文法2

程式à

       外部_聲明

      | 程式外部_聲明

外部_聲明 à

      功能_定義

      | 聲明

功能_定義 à 類型_說明聲明符 複合_聲明

類型_說明à

      VOID

      | CHAR

      | INT

      | FLOAT

聲明符

      指針 直接_聲明符

      | 直接_聲明符

指針à

      '*'

      | '*' 指針

直接_聲明符

      辨別符

   |直接_聲明符’[‘ ‘]’

      |直接_聲明符 ’[’ 常數_表達 ’]’

      | 辨別符 '(' 參數_目錄')'

| 辨別符 '('  ')'

      |直接_聲明符  ‘,’  辨別符_目錄

辨別符_目錄

      : 辨別符

      | 辨別符_目錄',' 辨別符

常數_表達à

      條件_表達

參數_目錄à

       參數_聲明

      | 參數_目錄',' 參數_聲明

參數_聲明 à

      聲明_符

 辨別符

複合_聲明 à

       '{'

'}'

      | '{' 聲明_目錄'}'

      | '{' 聲明_目錄聲明_目錄'}'

聲明_目錄à

       聲明

      | 聲明_目錄聲明

聲明à

       初始化_聲明符

      | 初始化_聲明符_目錄',' 初始化_聲明符

初始化_聲明符 à

       聲明符

      | 聲明符 '=' 初始化

初始化 à

       配置設定_表達

      | '{' 初始化_目錄'}'

      | '{' 初始化_目錄',' '}'

初始化_目錄à

       初始化

      | 初始化_目錄',' 初始化

      聲明

聲明 à

      | 複合_聲明

      | 表達_聲明

      | 選擇_聲明

      | 疊代_聲明

      | 跳轉_聲明

表達_聲明 à

      ';'

      | 表達 ';'

選擇_聲明

      : 假設 '(' 表達 ')' 聲明

      | 假設 '(' 表達 ')' 聲明 否則 聲明

疊代_聲明à

       當 '(' 表達 ')' 聲明

      | F或 '(' 表達_聲明 表達_聲明 ')' 聲明

      | F或 '(' 表達_聲明 表達_聲明 表達 ')' 聲明

跳轉_聲明

      | CONTINUE ';'

      | BREAK ';'

      | RETURN ';'

      | RETURN 表達 ';'

表達

      : 配置設定_表達

      | 表達 ',' 配置設定_表達

配置設定_表達 à

      | 一進制_表達

配置設定_操作配置設定_表達

條件_表達 à

       邏輯_或_表達

      | 邏輯_或_表達 '?' 表達 ':' 條件_表達

邏輯_或_表達

à

      邏輯_和_表達

      | 邏輯_或_表達 或_OP 邏輯_和_表達

邏輯_和_表達

      : 含_或_表達

      | 邏輯_和_表達 和_OP 含_或_表達

含_或_表達à

      異_或_表達

      | 含_或_表達 '|' 異_或_表達

異_或_表達

      : 和_表達

      | 異_或_表達 '^' 和_表達

和_表達

      : 平等_表達

      | 和_表達 '&' 平等_表達

平等_表達

      : 關系_表達

      | 平等_表達 EQ_OP 關系_表達

      | 平等_表達 NE_OP 關系_表達

關系_表達

      : sh假設t_表達

      | 關系_表達 '<' sh假設t_表達

      | 關系_表達 '>' sh假設t_表達

      | 關系_表達 LE_OP sh假設t_表達

      | 關系_表達 GE_OP sh假設t_表達

sh假設t_表達

      : 添加_表達

      | sh假設t_表達 LEFT_OP 添加_表達

      | sh假設t_表達 RIGHT_OP 添加_表達

添加_表達

      : 乘法_表達

      | 添加_表達 '+' 乘法_表達

      | 添加_表達 '-' 乘法_表達

乘法_表達

      : 投_表達

      | 乘法_表達 '*' 投_表達

      | 乘法_表達 '/' 投_表達

      | 乘法_表達 '%' 投_表達

投_表達

      : 一進制_表達

      | '(' 類型_名')' 投_表達

一進制_表達

      : 字尾_表達

      | INC_OP 一進制_表達

      | DEC_OP 一進制_表達

      | 一進制_操作投_表達

      | SIZEOF 一進制_表達

      | SIZEOF '(' 類型_名')'

字尾_表達 à

      : 基本_表達

      | 字尾_表達 '[' 表達 ']'

      | 字尾_表達 '(' ')'

      | 字尾_表達 '(' 指派_表達_目錄')'

      | 字尾_表達 '.' 辨別符

      | 字尾_表達 PTR_OP 辨別符

      | 字尾_表達 INC_OP

      | 字尾_表達 DEC_OP

基本_表達 à

      | 常數

      | 字元串

      | '(' 表達 ')'

指派_表達_目錄

      | 指派_表達_目錄',' 配置設定_表達

一進制_operat或

      : '&'

      | '*'

      | '+'

      | '-'

      | '~'

      | '!'

配置設定_操作à

       '='

      | MUL_ASSIGN

      | DIV_ASSIGN

      | MOD_ASSIGN

      | ADD_ASSIGN

      | SUB_ASSIGN

      | LEFT_ASSIGN

      | RIGHT_ASSIGN

      | 和_ASSIGN

      | X或_ASSIGN

      | 或_ASSIGN

st或age_class_說明à

       類型DEF

      | EXTERN

      | STATIC

      | AUTO

      | REGISTER

struct_或_union_spec假設ier

      : struct_或_union 辨別符 '{'

struct_聲明_目錄'}'

      | struct_或_union '{' struct_聲明_目錄'}'

      | struct_或_union 辨別符

struct_或_union

      : STRUCT

      | UNION

struct_聲明_目錄

      : struct_聲明

      | struct_聲明_目錄struct_聲明

struct_聲明

      : spec假設ier_qual假設ier_目錄struct_聲明符_目錄';'

spec假設ier_qual假設ier_目錄à

       類型_說明spec假設ier_qual假設ier_目錄

      | 類型_spec假設ier

      | 類型_qual假設ier spec假設ier_qual假設ier_目錄

      | 類型_qual假設ier

struct_聲明符_目錄à

       struct_聲明符

      | struct_聲明符_目錄',' struct_聲明符

struct_聲明符 à

      : 聲明符

      | ':' 常數_表達

      | 聲明符 ':' 常數_表達

enum_說明à

       ENUM '{' enumerat或_目錄'}'

      | ENUM 辨別符 '{' enumerat或_目錄'}'

      | ENUM 辨別符

enumerat或_目錄à

       enumerat或

      | enumerat或_目錄','

enumerat或

Enumerat或 à

       辨別符

      | 辨別符 '=' 常數_表達

類型_qual假設ier à

       CONST

      | VOLATILE

類型_qual假設ier_目錄à

       類型_qual假設ier

      | 類型_qual假設ier_目錄類型_qual假設ier

參數_類型_目錄à

       參數_目錄

      | 參數_目錄',' ELLIPSIS

      : 參數_聲明

類型_名à

       spec假設ier_qual假設ier_目錄

      | spec假設ier_qual假設ier_目錄抽象_聲明符

抽象_聲明符 à

       指針

      | 直接_抽象_聲明符

      | 指針 直接_抽象_聲明符

直接_抽象_聲明符 à

       '('

抽象_聲明符 ')'

      | '[' ']'

      | '[' 常數_表達 ']'

      | 直接_抽象_聲明符 '[' ']'

      | 直接_抽象_聲明符 '[' 常數_表達 ']'

      | '(' ')'

      | '(' 參數_類型_目錄')'

      | 直接_抽象_聲明符 '(' ')'

      | 直接_抽象_聲明符 '(' 參數_類型_目錄')'

辨別_聲明 à

       辨別符 ':' 聲明

      | 案例 常數_表達 ':' 聲明

      | 預設 ':' 聲明

上一篇: 複利計算3.0
下一篇: 冒泡排序