对类c语言程序进行语法分析,实验三语法分析的C语言实现.doc

实验三语法分析的C语言实现

实验三 语法分析的C语言实现

实验目的

二、实验

1、?

2、对语法规则有明确的定义;

3、编写的分析程序能够对实验一的结果进行正确的语法分析;

4、对于遇到的语法错误,能够做出简单的错误处理,给出简单的错误提示,保证顺利完成语法分析过程;

三、实验指导(一)准备

1.阅读课本有关章节,。

2.初步编制程序。

3.准备组测试数据。

()程序要求

程序输入/输出示例:

输入如下一段C语言源程序:+2*(5.5-5)

输出4.0。

2. 建议:实验一的词法分析结果保存到文件input.c,实验二直接从input.c读取一个token,将用到的文法规则输出并保存到文件output.c。(注:NUM由词法分析器返回)

3.可选功能:可以根据自身的情况完善语法分析程序的错误处理功能,如对遇到的语法错误给出准确的位置和错误类型提示。

三、实验指导(一)准备

1.阅读课本有关章节,明确语言的语法。

2.初步编制程序。

3.准备组测试数据。

()程序要求

程序输入/输出示例:

输入如下一段C语言源程序(if语句或者while语句,或者都实现):main()

{

a = 10*(b+2);

if (a>b) a=b else a=c;

while (a!=0) a=3+21*a;

}

输出三、实验指导(一)准备

1.阅读课本有关章节,明确语言的语法。

2.初步编制程序。

3.准备组测试数据。

()程序要求

程序输入/输出示例:

输入如下一段C语言源程序(if语句或者while语句,或者都实现):main()

{

a = 10*(b+2);

if (a>b) a=b else a=c;

while (a!=0) a=3+21*a;

}

输出main()

{

a = 10*(b+2);

}

可参考的文法如下:

0. program ( main() { expression_stmt }

1. expression_stmt ( expression ; | ;

表达式语句有一个可选的且后面跟着分号的表达式。这样的表达式通常求出它们一方的结果。因此,这个语句用于赋值和函数调用。2. expression( var = expression | simple-expression

3. var ( ID | ID [ expression ]

表达式是一个变量引用,后面跟着赋值符号(等号)和一个表达式,或者就是一个简单的表达式。赋值语义:找到由变量var的地址,然后赋值符右边的子表达式进行求值,子表达式的值存储到给定的地址。这个值也作为整个表达式的值返回。var是简单的整型变量或下标数组变量。下标不进行下标越界检查。var ( ID;根据实际情况实现var ( ID [ expression ]数组变量的识别。

4. simple-expression ( additive-expression relop additive-expression | additive-expression

5. relop ( <= | < | > | >= | == |!=

6. additive-expression ( additive-expression addop term | term

7. addop ( + | -

8. term ( term mulop factor | factor

9. mulop ( * | /

加法表达式和项表示了算术操作符的结合性和优先级。0. factor ( ( expression ) | var | NUM

因子是围在括号内的表达式;或一个变量,求出其变量的值;或者一个函数调用,求出函数的返回值;或者一个NUM,其值由器。main()

{

if (a>b) a=b else a=c;

}

可参考的文法如下:

0. program ( main() { if_stmt }

1. if_stmt( if ( expression ) statement | if ( expression ) statement else statement

条件语句有通常的语义:表达式进行计算非0值引起第一条语句的执行;0值引起第二条语句的执行,如果它存在的话。这规则典型的“else”二义性,可以用一种“最近嵌套”义性。if_stmt( if ( expression ) statement else statement;根据自身情况如果要实现不带else的语句。

2. statement ( expression ; | ;

3. expression( var = expression | simple-expression

4. var ( ID | ID [ expression ]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值