1、编译原理上机实验试题一、实验目的通过本实验使学生进一步熟悉和掌握程序设计语言的词法分析程序的设计原理及相关的设计技术,如何针对确定的有限状态自动机进行编程序;熟悉和掌握程序设计语言的语法分析程序的设计原理、熟悉和掌握算符优先分析方法。二、实验要求本实验要求:要求能熟练使用 C+程序设计语言编程;在上机之前要有详细的设计报告(预习报告) ;要编写出完成相应任务的程序并在计算机上准确地运行;实验结束后要写出上机实验报告。三、实验题目针对下面文法 G(S):S v = EEE+E E-EE*EE/E(E) v i其中,v 为标识符,i 为整型或实型数。要求完成 使用自动机技术实现一个词法分析程序;
2、使用算符优先分析方法实现其语法分析程序; 在语法分析过程中同时完成常量表达式的计算。#include #includeusing namespace std;FILE*fileP;char a100;void Ee();void T();void Tt();void F();void E();int i=0;int j=0;int flag=0;boolis letter(char c)if(c=Aelse return false;void read()if(fgetc(fileP)=#)char c=fgetc(fileP);while (c!=#) aj+=c;fgetc(fileP);
3、void E()T();Ee();void Ee()if(a=+)i+;T();Ee();void T()F();Tt();void Tt()if(a=*)i+;F();Tt();void F()char c=a;if(isLetter(c)while (isDigit(c)|isLetter(c)i+;c=a;else if (isDigit(C)while (isDigit(c)i+;c=a;else if(c=()i+;F();if(a=)else flag=1;else flag=1;void main()if(fileP=fopen(“test.txt“,“r“)=NULL)cout“请创建 test.txt 资源文件“endl;elseread ();cout“-text 文件词法分析结果如下-“endl;E();if (flag=0)cout“success“endl;else cout“fail“endl;cout“-“endl;if (fileP=fopen(“text.txt“,“r“)=NULL)cout“请创建 test2.txt资源文件endl;