<源函数> → <外部声明> | <源程序> <外部声明>
<外部声明> → <函数定义> | <定义>
<函数定义> → <类型标识符> <声明部分语句>
<标识符类型> → <无类型> | <字符> | <整型> | <浮点型>
<声明> <指针直接声明> | <直接声明>
<指针> → < * > | < * 指针>
<直接声明> → <标识符> | <直接声明[ ]> | <直接声明[常量表达式]> | <标识符(参数列表)> | <标识符()> | <直接声明 , 标识符列表>
<标识符列表> : <标识符> | <标识符列表 ,标识符>
<常数表达式> → <条件表达式>
<参数列表> → <参数声明> | <参数列表 ,参数声明>
<参数声明> → <说明符声明><标识符>
<复合语句> → <{ }> | <{ 语句列表 }> | <{ <声明列表> <语句列表> }>
<声明列表> → <声明> | <声明列表> <声明>
<声明> → <初始化声明> | <初始化声明列表 ,初始化声明>
<初始化声明> → <声明> | <声明=初始化程序>
<初始化程序> → <表达式> | <{初始化程序列表}> | <{初始化程序列表 , }>
<初始化程序列表> → <初始化程序> | <初始化程序列表 , 初始化程序>
<语句列表> → <语句> | <语句列表> <语句>
<语句> →<复合语句> | <表达式语句> | <选择语句> | <循环语句> |<跳转语句>