资源简介
这是一个基于某个自定义的文法(将在下面给出)所编写的部分功能的编译器。已经实现了词法分析(Lexer.h/cpp),语法分析(Parser.h/cpp)并建立语法分析树,语法分析树数据结构(SyntaxTreeNode.h/cpp和SyntaxTree.h/cpp)。

代码片段和文件信息
/**************************************************
* file: calc.cpp
* date: 2006-06-30
* author: ideawu
* describe: a really small and simple caculator.
* with known bugs.
**************************************************/
#include
#include
#include
#include “Parser.h“
float calc(SyntaxTree *tree);
int main(int argc char* argv[]){
char buf[1024] = “a=“;
SyntaxTree *tree = NULL;
Lexer *lexer = new Lexer();
Parser *parser = new Parser();
lexer->setSrc(buf 1024);
parser->setLexer(lexer);
printf(“>>“);
scanf(“%s“ &buf[2]);
while(strcmp(buf “a=quit“) != 0){
tree = parser->parse();
if(tree!=NULL){
//tree->display();
printf(“%g\n“ calc(tree->getRight()));
}else{
parser->printError();
}
printf(“>>“);
scanf(“%s“ &buf[2]);
parser->reset();
}
printf(“\n“);
return 0;
}
float calc(SyntaxTree *tree){
float a=0 b=0 val=0;
if(tree != NULL){
if(tree->getRootNode()->getType() == NUM){
return tree->getRootNode()->getValue();
}
a = calc(tree->getLeft());
b = calc(tree->getRight());
switch(tree->getRootNode()->getType()){
case PLUS:
val = a + b;
break;
case MINUS:
val = a - b;
break;
case MUL:
val = a * b;
break;
case DIV:
if(b != 0){
val = a / b;
}
break;
default:
break;
}
}
return val;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1368 2006-06-30 10:27 简易编译器 源代码\calc.cpp
文件 807 2006-04-15 19:34 简易编译器 源代码\common.h
文件 5186 2006-06-30 08:10 简易编译器 源代码\Lexer.cpp
文件 515 2006-06-30 07:56 简易编译器 源代码\Lexer.h
文件 716 2006-04-20 14:59 简易编译器 源代码\main.cpp
文件 668 2008-06-02 16:29 简易编译器 源代码\Makefile
文件 7728 2006-06-30 08:48 简易编译器 源代码\Parser.cpp
文件 810 2006-06-30 07:31 简易编译器 源代码\Parser.h
文件 3899 2006-06-30 08:28 简易编译器 源代码\SyntaxTree.cpp
文件 1201 2006-04-15 07:56 简易编译器 源代码\SyntaxTree.h
文件 1570 2006-06-30 08:28 简易编译器 源代码\SyntaxTreeNode.cpp
文件 1106 2006-04-15 07:50 简易编译器 源代码\SyntaxTreeNode.h
文件 65730 2006-06-26 09:31 简易编译器 源代码\temp.txt
文件 40 2006-06-26 09:21 简易编译器 源代码\test.txt
文件 769 2006-04-17 17:03 简易编译器 源代码\test_complex.txt
文件 113 2006-04-17 18:35 简易编译器 源代码\test_error.txt
目录 0 2011-06-16 22:11 简易编译器 源代码
----------- --------- ---------- ----- ----
92226 17
- 上一篇:1fporp.rar
- 下一篇:基于WEB的电影院订票系统
相关资源
- 微软masm汇编编译器
- 编译原理实验工具及参考源码(lex&
- 类pascal语言编译器(编译原理实验)
- 编译原理课程设计:词法语法编译器
- 中科院 编译原理 习题及解答
- 编译原理四元式和逆波兰式
- 汇编语言编译器masm5.0
- 《编译原理》清华大学版中的pl0扩充
- PL/0功能扩充break功能
- 编译原理LR(0)语法分析
- 编译原理中间代码生成程序
- 编译原理:LR分析程序
- C编译器源代码(超级牛b).rar
- 编译原理实验:词法分析,语法分析
- 吉林大学编译原理课件
- 编译原理龙书答案
- 编译原理 第三章课后习题答案
- 易语言变量和数组的编译原理
- 编译原理语法分析器、词法分析器
- 山东大学编译原理PL/0语言 compiler实验
- FOR循环语句的翻译程序设计简单优先
- NFA的确定化NFA->DFA完整可运行代码
- pl/0编译器 语法分析
- 哈工大威海编译原理实验报告和源代
- 哈工大威海-编译原理实验报告和源码
- 编译原理课设c编译器
- 赋值语句翻译四元式
- 河北工业大学编译原理实验代码及实
- 完整C-编译器源代码
- TINY+编译器 改编自原版TINY
评论
共有 条评论