现在又觉得原来那个求导程序有点矬了。。。
主要是读入部分比较恶心,
数据结构不够好,
造成化简困难
昨天借来《编译原理》(龙书)
仔细钻研第一章之后深有感触~
遂择吉日开发此程序~
今天调试了一上午,终于弄懂了~
就是编译器的原理
这个程序主要是负责词法分析的(Parser)
用的结构也很简单,就是函数互相嵌套调用
class Parser{
private:
string lookfd;
stringstream sin;
public:
bool expr();
bool term();
bool factor();
bool number();
bool identifier();
//bool letter();
//bool digit();
bool match(const string&);
bool get_token();
//void put_back();
bool funcname();
public:
void ClearStringStream(){XXXXXXear();} void SetStringStream(const string& s){sin<<s;}
const string & GetStringStream()const {XXXXXXr();} };
类Parser用于词法分析,其中的lookfd是读入的单词(向前看),sin是输入流,尚未使用
expr()处理整个表达式
term()处理初等项
factor()处理每一个因子
number、funcname、identifier之类的都是基础的东西
用语言描述如下:
剩下的事情就是编程序了。。。
程序不长,还可以顺便输出表达式的后缀表达式
Parser.rar
4.18MB
RAR
19次下载
200字以内,仅用于支线交流,主线讨论请采用回复功能。