资源简介
RJ010703编译原理第二次课程设计 语法分析器
另有README.DOC 以及 Abstract-tree.doc
画出抽象语法树,保证100分
代码片段和文件信息
#include
#include
#include
#include
#include “Scaner.h“
/*
*authorized by Chiang 2007303154
*/
class Node { /*This class define a node in the tree*/
public:
Node * leftChild; //left child pointer
Node * rightChild; //righr child pointer
int op; //store operator
int value; //store value of left op right
Node() { //default constructor
leftChild = NULL;
rightChild = NULL;
op = NULL;
value = 0;
}
};
class Analysis{ /*This class analysis the express and caculate the result ouput the result and the tree to the file output.txt*/
private:
ofstream out; //out is a output stream
Node * root; //root of the tree
public:
Analysis() {
Node temp;
out.open(“output.txt“);//create a output stream
root = &temp;
}
/*free all nodes in the tree through destructor*/
~Analysis() {
freeNode(root);
}
/*This function is to free all the nodes recursively*/
void freeNode(Node * & p) {
if (p != NULL) {
Node * t = p;
p = NULL;
if (t->leftChild == NULL && t->rightChild == NULL) {
free(p);
}
freeNode(t->leftChild);
freeNode(t->rightChild);
}
}
/*This public method simply invokes the inner buildTree method with two arguments*/
void buildTree() {
int result = buildTree(root pairs);
out << “/*authorized by Chiang 2007303154*/“ < out << “The results is: “ << result << endl;
out << “The Abstract-Syntax-Tree has been represented below:“ << endl << endl;
cout << “The rusult and the syntax tree have been written in the file ‘output.txt‘ “ << endl;
}
void printTree() {
printTree(root);
}
/*This fucntion output the tree detail into the file output.txt*/
private :
void printTree(Node * p) {
if (p != NULL) {
out << “节点: “ << p << endl;
out << “结果: “ << p->value << endl;
out << “运算符: “ ;
switch (p->op) {
case ADD: {
out << “+“ << endl;
break;
}
case MINUS: {
out << “-“ << endl;
break;
}
case MULT: {
out << “*“ << endl;
break;
}
default :
out << “没有运算符!“ << endl;
}
out << “左节点: “ ;
if (p->leftChild) {
out << p->leftChild << endl;
}
else {
out << “没有左节点“ << endl;
}
out << “右节点: “ ;
if (p->rightChild) {
out << p->rightChild << endl;
}
else {
out << “没有右节点“ << endl;
}
out << endl;
printTree(p->leftChild);
printTree(p->rightChild);
}
}
private:
/*This is a private function it builds a tree through invoking it recursively*/
int buildTree(Node * & np deque & pairs) {
np = new Node();
if (0 == pairs.size()) {
return 0;
}
else if (pairs.size() == 1) {
if (pairs[0]->type == INT) {//when the type of token is int
np->value = pairs[0]->value;
return np->value;
}
else {//when it i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 45056 2010-04-29 21:28 2007303154_蒋浩昊\abstract_tree.doc
文件 6245 2010-04-29 21:00 2007303154_蒋浩昊\Analysis.cpp
文件 3425 2010-04-29 20:59 2007303154_蒋浩昊\Analysis.dsp
文件 734 2010-04-29 21:00 2007303154_蒋浩昊\Analysis.dsw
文件 41984 2010-04-29 21:00 2007303154_蒋浩昊\Analysis.ncb
文件 53760 2010-04-29 21:00 2007303154_蒋浩昊\Analysis.opt
文件 756 2010-04-29 20:59 2007303154_蒋浩昊\Analysis.plg
文件 594027 2010-04-29 20:59 2007303154_蒋浩昊\Debug\Analysis.exe
文件 837396 2010-04-29 20:59 2007303154_蒋浩昊\Debug\Analysis.ilk
文件 372389 2010-04-29 20:59 2007303154_蒋浩昊\Debug\Analysis.obj
I.A.... 2641168 2010-04-29 20:15 2007303154_蒋浩昊\Debug\Analysis.pch
文件 1164288 2010-04-29 20:59 2007303154_蒋浩昊\Debug\Analysis.pdb
文件 91136 2010-04-29 20:59 2007303154_蒋浩昊\Debug\vc60.idb
文件 126976 2010-04-29 20:59 2007303154_蒋浩昊\Debug\vc60.pdb
文件 15 2007-05-23 22:09 2007303154_蒋浩昊\input.txt
文件 560 2010-04-29 20:05 2007303154_蒋浩昊\macro.h
文件 534 2010-04-29 20:59 2007303154_蒋浩昊\output.txt
文件 187 2007-05-23 12:07 2007303154_蒋浩昊\Pair.h
文件 21504 2010-04-29 21:03 2007303154_蒋浩昊\readme.doc
文件 4765 2010-04-29 19:56 2007303154_蒋浩昊\Scaner.h
I.A.... 16802 2010-04-29 21:25 2007303154_蒋浩昊\绘图.gif
目录 0 2010-04-29 20:59 2007303154_蒋浩昊\Debug
目录 0 2010-04-29 21:31 2007303154_蒋浩昊
----------- --------- ---------- ----- ----
6023707 23
- 上一篇:Dark GDK
- 下一篇:camera li
nk 接口说明
相关资源
- 编译原理——for循环语句的翻译,L
- 清华《编译原理》课后习题答案
- 编译原理 清华ppt 课件
- 支持语法高亮的快速着色文本框「源
- 编译原理及实现技术 第二版 刘磊等编
- 词法分析器Lex(编译原理)
- 编译原理学习指导与习题解析
- 四川大学编译原理2011-2015期末考题
- 编译原理课程辅导+清华大学计算机系
- 英语语法新思维初,中,高教程
- 北京邮电大学编译原理期末试卷
- 编译原理 for 条件语句,while 语句的翻
- 广工编译原理的复习资料试卷等
- 华工编译原理复习资料
- 杭电编译原理语法分析器
- 编译原理答案第二版 刘坚 编著
- LR0语法分析器
- 华工编译原理实验词法分析+语法分析
- 编译原理课件及实验源代码实验报告
- 东南大学编译原理实验 lex&&yacc
- Verilog语法手册--夏宇闻
- 北方工业大学编译原理话语法分析实
- 东华大学 姚砺 编译原理作业答案
- 编译原理语法分析器课程设计完美版
- 英文文章语法自动纠错工具
- 简单的PL0编译器
- First集和Follow集生成算法模拟
- 实验四LL(1)分析器的生成
- 词法分析器有界面
- 武汉大学国际软件学院解释器构造作
评论
共有 条评论