【编译原理】自顶向下语法分析方法的实现
实验报告
实验项目列表
一、实验名称
自顶向下语法分析方法的实现
二、实验目的
1.掌握自顶向下语法分析的方法;
2.运用编程的手段实现自顶向下语法分析。
三、实验内容和要求
四、实验环境
1.硬件环境:PC机
2.软件环境:Windows操作系统,VC++集成开发环境五、算法设计思想
六、主要问题与解决方法
七、实验结果
以下是程序的用户运行界面截图:
八、体会、质疑、建议
九、源代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define M 20
using namespace std;
void gotoxy(int x,int y){
COORD coord;
coord.X=x;
coord.Y=y;
SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
class table
{
public:
void read();
friend class an_process;
string find_str(char row,char col);
private:
string matrix[M][M];
char start;
vector
vector
};
class sentence
{
public:
void read_in();
friend class an_process;
private:
string str_input;
};
class an_process
{
public:
void analyse(const table LL1_table,const sentence input);
void write_result();
void print2(int x,int y);
private:
vector
vector
vector
vector
};
void table::read()
{
string a,str;
char x,y;
int linenum = 0;
char line[1024]={0};
ifstream infile("table1.txt");
if(!infile)
{
cerr<<"错误!无法存储用户数据!\n";
}
while(infile.getline(line,sizeof(line)))
{
stringstream word(line);
if(linenum>1)
{
if(word>>x&&word>>y&&word>>str)
{
matrix[x-48][y-48]=str;
/*cout< cout< cout< } } while(word>>a&&linenum<2) { if(linenum==0) { vec_col.push_back(a);