C语言文法

<程序>→<外部声明>|<程序><外部声明>

<外部声明>→<函数定义>|<声明>

<函数定义>→<类型说明><声明符><符合语句>

<类型说明>→<void>|<char>|<int>|<float>

<声明符>→<指针直接声明符>|<直接声明符>

<指针>→<'*'>|< '*' 指针>

<直接声明符>→<标识符>|<’[‘ ‘]’>|<[’ 常量表达式’]’>|<参数表>|<('  ')>|< 标识符列表>

<复合语句>→<'{' '}'>|<语句列表>|<声明列表>

<声明列表>→<声明>|<声明列表声明>

<标识符列表>→<标识符>|<标识符列><标识符>

<常量表达式>→<条件表达式>

<参数表>→<参数声明>|<参数列表><参数声明>

<声明>→<声明>|<声明列表声明>

<初始化>→<赋值表达式>|<“{ }”“初始化列表”>|<“{ }”“初始化列表”>

<初始化列表>→<初始化>|<初始化列表'><初始化>

<语句列表>→<语句>|<语句列表><语句>

<语句>→<复合语句>|<表达语句>|<选择语句>|<迭代语句>|<跳转语句>

<选择语句>→<if>|<IF (“表达式”)ELSE语句的声明>

<迭代语句>→< WHILE >|< FOR >|< FOR ><语句>

<跳转语句>→< CONTINUE >|< BREAK >< RETURN >< RETURN ><语句>

<一元运算符>→ '&'| '*'| '+'| '-'| '~'| '!'

<赋值操作符>→<多分配>|<股利分配>|<模分配>|<添加分配>|<子分配>|<离开分配>|<正确的分配>|<和分配>

<存储类说明符>→< TYPEDEF >|< EXTERN >|< STATIC >|< AUTO >|< REGISTER >

<结构或联合说明符>→<结构或联合说明符><结构体声明列表>|<结构或联合><结构体声明列表>|<结构或联合><标识符>

<结构或联合>→< STRUCT >|< UNION >

<结构体声明列表>→<结构体声明>|<结构体声明><结构体声明列表>

<结构体声明>→<说明符限定符列表><结构说明符>

<说明符限定符列表>→<类型说明符><说明符限定符列表>|<类型说明符>|<说明符限定符列表>|<类型限定符>

<结构说明符列表>→<结构说明符>|<结构说明符列表><结构说明符>

<结构说明符>→<说明符>|<常数表达式>|<常数表达式><说明符>

<枚举说明符>→<枚举器列表>|<枚举标识符><枚举器列表>|<枚举标识符>

<枚举标识符>→<枚举>|<枚举标识符><枚举>

<枚举>→<标识符>|<常数表达式><标识符>

<类型限定符>→<常量>|<挥发性>

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

<参数类型列表>→<参数列表>|<参数列表>< ELLIPSIS >

<参数列表>→<参数声明>|<参数列表><参数声明>

<类型名称>→<说明符限定符列表>|<说明符限定符列表><摘要说明符>

<摘要说明符>→<指针>|<直接抽象说明符>|<指针><直接抽象说明符>

<直接抽象说明符>→<抽象说明符>|<常数表达式>|< '[' ']'>|<直接抽象说明符>< '[' ']'>|<直接抽象说明符>< '['常数表达式']'| '(' ')'| '('参数类型列表')'|<直接抽象说明符> '(' ')'|<直接抽象说明符> '('参数类型列表')'

<标记语句>→<标识符><声明>|<常数表达式><语句>|<默认><声明>

原文地址:https://www.cnblogs.com/dalaotan/p/4921047.html