资源简介

此资源是编译原理的相关文件,包括源代码、语法输入文件与输入单词序列

资源截图

代码片段和文件信息

#include “pch.h“
#include 
#include 
#include  
#include  
#include 
#include 

#define MAXNUM 1000
#define ERROR “err“
#define ACCUTATE “acc“
#define MAXNUMOFCLOUSURE 100
#define MAXNUMOFITEM 100
#define MAXNUMOFCHAR 30

using namespace std;

class StatusStack{
protected:
int list[MAXNUM];
int currentPos;
public :
StatusStack() {
currentPos = -1;
}

int getTop() {
return this->list[currentPos];
}

int getCurrentPos() {
return this->currentPos;
}

int getElement(int pos) {
return this->list[pos];
}

void clear() {
currentPos = -1;
}

void pop() {
currentPos = currentPos - 1;
}

void push(int status) {
list[currentPos+1] = status;
currentPos++;
}
};

class SymbolStack {
protected:
char list[MAXNUM];
int currentPos;
public:
SymbolStack() {
list[0] = ‘#‘;
currentPos = 0;
}

char getTop() {
return this->list[currentPos];
}

int getCurrentPos() {
return this->currentPos;
}

char getElement(int pos) {
return this->list[pos];
}

void clear() {
list[0] = ‘#‘;
currentPos = 0;
}

void pop() {
currentPos = currentPos - 1;
}

void push(char str) {
list[currentPos + 1] = str;
currentPos++;
}
};

class ActionMap {//table[status inputChar]
protected:
map  > table;
int numOfStatus;
int numOfInputChar;

public:
ActionMap(int numOfStatus int numOfInputChar){
this->numOfInputChar = numOfInputChar;
this->numOfStatus = numOfStatus;

for (int i = 0; i < numOfStatus; i++) {
for (int j = 0; j < numOfInputChar; j++) {
table[i][j] = ERROR;
}
}
}

void insert(int status int inputChar string ele) {
table[status][inputChar] = ele;
}

void remove(int status int inputChar) {
table[status][inputChar] = ERROR;
}

string getElement(int status int inputChar) {
return table[status][inputChar];
}
};

class GotoMap {//table[status inputStatus]
protected:
map  > table;
int numOfStatus;
int numOfInputStatus;

public:
GotoMap(int numOfStatus int numOfInputStatus) {
this->numOfInputStatus = numOfInputStatus;
this->numOfStatus = numOfStatus;

for (int i = 0; i < numOfStatus; i++) {
for (int j = 0; j < numOfInputStatus; j++) {
table[i][j] = -1;
}
}
}

void insert(int status int inputChar int ele) {
table[status][inputChar] = ele;
}

void remove(int status int inputChar) {
table[status][inputChar] = -1;
}

int getElement(int status int inputChar) {
return table[status][inputChar];
}
};

class DFAMap {//[a b]=B 从状态a接受B到达状态b
protected:
map  > table;
int firstStatus;
int secondStatus;
public:
DFAMap(int numOfStatus) {
this->firstStatus = numOfStatus;
this->secondStatus = numOfStatus;

for (int i = 0; i < numOfStatus; i++) {
for (int j = 0; j < numOfStatus; j++) 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        173  2018-10-28 23:01  grammer.txt

     文件      39352  2018-10-29 10:15  GrammerAnalysis.cpp

     文件         22  2018-10-28 21:54  input.txt

----------- ---------  ---------- -----  ----

                39547                    3


评论

共有 条评论