关于文法的分析

  此次在做文法分析时是由小组成员分工完成,同时感谢组员的配合,谢谢。

  在这次文法分析中是以C语言的文法结构为标准的,由于受限于能力所以只是写出了该文法的一小部分,其中若有不当之处,请指正批评。

  下面为文法分析:

 

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

 

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

 

<函数定义> → <函数声明> <函数体>

 

<函数声明> → <函数返回类型> <函数头>

 

<函数返回类型> → <返回类型> | <返回类型> <指针>

 

<函数头> → (<参数>) | ( )

 

<函数体> → { <声明语句> <可执行语句部分> }

 

<返回类型> → void | int | char | float | double

 

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

 

<参数> → <标识符类型> <标识符> | <标识符类型> <标识符> , <参数>

 

<标识符类型> → int | char | double | float | <标志符类型> <指针>

 

<标识符(变量)> → <字母> | _ | <标识符> <数字> | <标识符> <字母>

 

<字母> → a | b | c |……| x | y | z

 

<数字> → 0 | 1|……| 8 | 9

 

<声明语句> → <标识符类型> <标识符> ; | <标识符类型> <标识符> ; <声明语句>

 

<可执行语句部分> → <语句> | <可执行语句部分> <语句>

 

<语句> → <表达式语句> | <条件语句> | <循环语句> | <跳转语句>

 

<循环语句> → <while (表达式语句){ 可执行语句部分}> | <for (表达式; 表达式; 表达式)  {可执行语句部分}> | do{可执行语句部分}while(表达式语句);

 

<条件语句> → < if语句> | <if-else语句> | <switch语句>

 

< if语句> → <if (表达式语句) {可执行语句部分}>

 

<if-else语句> → <if (表达式语句) {可执行语句部分} else {可执行语句部分}>

 

<switch语句> → <switch(变量){ switch语句块 }>

 

<switch语句块> → < case 常量: 可执行语句部分> | < default: 可执行语句部分> | < case 常量: 可执行语句部分> <switch语句块>

 

<常量> → <数字> | <去0数字> <常量>

 

<去0数字> → 1 | 2 | 3 |……| 8 | 9

 

<跳转语句> → continue ; | break ; | return ; | return 表达式; |return

 

<表达式语句> → <赋值表达式> | <逻辑表达式> | <算术表达式 E>

 

<赋值表达式> → <变量> = <算术表达式>

 

<逻辑表达式> → (<表达式> | <数字> ) <逻辑运算符> (<表达式> | <数字>)

 

E → E + T | E – T | T

 

T → T * F| T / F | F

 

F  F ↑ P | P

 

P (E) | <常量> | <标识符>

 

<逻辑运算符> → > | < | != | <= | >= | = = | ? | : | ! | || | && 

posted @ 2016-10-28 15:44  Lger  阅读(300)  评论(5编辑  收藏  举报