编译原理实验三-自下而上语法分析及语义分析x 下载本文

tableData[3][2]=\tableData[3][3]=\tableData[3][4]=\tableData[3][6]=\tableData[3][7]=\tableData[4][0]=\tableData[4][5]=\tableData[5][1]=\tableData[5][2]=\tableData[5][3]=\tableData[5][4]=\tableData[5][6]=\tableData[5][7]=\tableData[6][0]=\tableData[6][5]=\tableData[7][0]=\tableData[7][5]=\tableData[8][1]=\tableData[8][2]=\tableData[8][6]=\tableData[9][1]=\tableData[9][2]=\tableData[9][3]=\tableData[9][4]=\tableData[9][6]=\tableData[9][7]=\tableData[10][1]=\tableData[10][2]=\tableData[10][3]=\tableData[10][4]=\tableData[10][6]=\tableData[10][7]=\tableData[11][1]=\tableData[11][2]=\tableData[11][3]=\tableData[11][4]=\tableData[11][6]=\tableData[11][7]=\tableData[12][0]=\tableData[12][5]=\tableData[13][0]=\tableData[13][5]=\tableData[14][1]=\tableData[14][2]=\

tableData[14][3]=\ tableData[14][4]=\ tableData[14][6]=\ tableData[14][7]=\ tableData[15][1]=\ tableData[15][2]=\ tableData[15][3]=\ tableData[15][4]=\ tableData[15][5]=\ tableData[15][6]=\ tableData[15][7]=\ }

string getCell(int rowN,int lineN) { int row=rowN; int line=getLineNumber(lineN); if(row>=0&&row=0&&line<=line_num) return tableData[row][line]; else return\ }

int getLineNumber(int lineN) { for(int i=0;i

【Table_go.h】 //table_go.h class Table_go {

int row_num,line_num;//行数、列数 string lineName[3]; int tableData[16][3];

public:

Table_go(){ row_num=16; line_num=3; lineName[0]=\ lineName[1]=\

lineName[2]=\ for(int m=0;m

int getCell(int rowN,string lineNa) { int row=rowN; int line=getLineNumber(lineNa); if(row>=0&&row

int getLineNumber(string lineNa) { for(int i=0;i

【Stack_num.h】 class Stack_num {

int i; //栈顶标记 int *data; //栈结构 public:

Stack_num() //构造函数 {

data=new int[100]; i=-1; }

int push(int m) //进栈操作 { i++; data[i]=m; return i; }

int pop() //出栈操作 { i--; return data[i+1]; }

int getTop() //返回栈顶 { return data[i]; }

~Stack_num() //析构函数 { delete []data; }

int topNumber() { return i; }

void outStack() { for(int m=0;m<=i;m++) cout<

【Stack_str.h】 class Stack_str {

int i; //栈顶标记 string *data; //栈结构 public:

Stack_str() //构造函数 { data=new string[50]; i=-1; }

int push(string m) //进栈操作

{ i++; data[i]=m; return i; }

int pop() //出栈操作 { data[i]=\ i--; return i; }

string getTop() //返回栈顶 { return data[i]; }

~Stack_str() //析构函数 { delete []data; }

int topNumber() { return i; }

void outStack() { for(int m=0;m<=i;m++) cout<

【cifa.cpp】 //cifa.cpp

#include #include #include%using namespace std;

//关键字表和对应的编码

string codestring[10]={\int codebook[10]={26,21,22,23,24,25,27,28,29};

//全局变量 char ch; int flag=0;