2024年5月11日发(作者:)
#include
#include
#include
#include
#include
#include
#include
#include
#define END "$"
#define COL 11
#define ROW 20
#define ACCEPT "ac"
#define PI 3.1415926
#define CHANGSHU_a "a"
#define CHANGSHU_n "n"
#define CHANGSHU_e "e"
using namespace std;
class Token
{
public:
typedef double Value;
typedef string Property;
string name;
Value sync;
Property property;
Token():sync(0.0){}
Token(const string &s):name(s),property(s),sync(0.0) {}
Token(const char* s):name(s),property(s),sync(0.0) {}
friend bool operator ==(const Token& t1,const Token& t2);
};
bool operator ==(const Token& t1,const Token& t2)
{
return ==;
}
class LRpda//定义LL语法分析下推自动机
{
typedef vector
typedef int State;
typedef string Action;
typedef struct eexpr//定义表达式
{
Token uToken;
Engender engender;
}eExpr;
public:
LRpda();
bool Caculate(const string& exprtmp);//执行PDA
bool Derivative(const string& exprtmp);
private:
bool in_propertys(Token::Property pro,vector
bool is_unTerminateToken(const Token& token);//判断是否为非终结符
bool is_TerminateToken(const Token& token);//判断是否为终结符
bool is_delim(char ch);
bool is_operator(char ch);
bool is_letter(char ch);
bool is_num(const string& str);
bool is_num(const Token& token) {}
bool is_id(const string& str);
bool is_changshu(const string &str);
double get_digit(char *&exprtmp);
string get_operator(char *&exprtmp);
void MatrixToFile(const char* filename);
void get_propertys(const char* str,vector
Token::Property get_property(const string& str);
void addExpr(const Token& token,const Engender& engender);//添加产生式
void addExpr(const Token& token,const string& engender);
void showMatrix();//打印LL语法分析表
void printExpr(const eExpr& expr);
Token operate(const Token& t1,const Token& op,const Token& t2);
Token operate(const Token& op,const Token& t1);
string der_operate(const string& op,const string& t1);
string LRpda::der_operate(const Token& t1,const string& d1,const string& op,const
Token& t2,const string& d2);
Action ACTION(const State state,const Token& ttoken);//返回 LL语法分析表中行为
uToken,列为tToken中的元素
Action GOTO(const State state,const Token& utoken);
发布评论