编译器源代码

时间:2010-05-10 10:55:08
【文件属性】:
文件名称:编译器源代码
文件大小:59KB
文件格式:ZIP
更新时间:2010-05-10 10:55:08
源码 编译 编译原理 这个编译器的源代码是我原先为了完成编译原理实验课作业而写的,所以只具有教学价值,现在发出来和大家共享 ;-)

和网上流传的版本不同,它从文法开始,一直做到了符号表的实现. 想实现自己的编译器的话,只需在把Initializtion.h中的文法修改为自己的即可.

工程结构:
Initializtion.h 初始化文法,便于进一步进行分析,它为构造GRAMMAR类提供了信息.其中默认非终极符用<>括上,修改时需要注意.
Grammar.cpp Grammar.h 定义了文法GRAMMAR类,它通过initializtion.h的信息建立文法的内部表示。
LL1_Analyser.cpp LL1_Analyser.h 定义了LL1分析器,即LL1_Analyser类.
LL1_Recognizer.cpp LL1_Recognizer.h 为LL1语法分析驱动器,可以通过文法,TOKEN序列和LL1分析表,判定语法是否正确,同时驱动动作.
Rec_Parse.cpp Rec_Pares.h 实现了递归下降分析器Rec_Parse类, 递归下降的思想和LL1驱动器一样,不过是把压栈改成调用自己,而把弹栈改成返回.
Scanner.cpp Scanner.h 实现了词法分析器,可以将程序变为TOKEN序列. 扫描的源程序文件路径也在这里被定义(默认为.//demo.txt)
Action.cpp Action.h 实现了语义栈的操作,_Action类定义了动作符号所对应的动作.
SymTable.cpp SymTable.h 实现了符号表的建立和输出.

希望大家能通过该程序对STL和编译原理有更深刻的理解,Have Fun and Good Luck!

-- David.Morre
【文件预览】:
Compiler
----Compiler.opt(57KB)
----SymbTable.h(884B)
----LL1_Analyser.h(1KB)
----Scanner.cpp(3KB)
----Compiler.plg(2KB)
----Debug()
----LL1_Analyser.cpp(8KB)
----Initializtion.h(8KB)
----Compiler.dsp(5KB)
----Compiler.cpp(612B)
----LL1_Recognizer.cpp(2KB)
----Action.h(953B)
----Rec_Parse.h(746B)
----LL1_Recognizer.h(968B)
----Rec_Parse.cpp(2KB)
----Action.cpp(9KB)
----Compiler.ncb(185KB)
----StdAfx.cpp(301B)
----Compiler.dsw(524B)
----SymbTable.cpp(4KB)
----demo.txt(743B)
----readme.txt(1KB)
----StdAfx.h(1KB)
----Scanner.h(599B)
----TypeDef.h(3KB)
----Grammar.cpp(5KB)
----Grammar.h(2KB)

网友评论

  • 资料不错,感觉还好,
  • 还行,可以用
  • 不跳看得懂
  • 资料不错,感觉还好,
  • 很不错,可以用
  • 很好的软件,值得学习
  • 非常感谢楼主贡献,学习了 ,很不错的资料,麻雀虽小,五脏俱全
  • 资料不错,可惜我看不懂。还要努力啊
  • 资料不错,可惜我看不懂。还要努力啊
  • 很好的资料,自己还要努力啊
  • 有值得学习的地方。
  • 值得參考,可编译成可执行文件
  • 嗯,只是还得装VC6,只是还得装个vc6……
  • 还行,可以执行
  • 有值得学习的地方。
  • 源码还行,适合参考
  • 很好的参考资料
  • 编译通过了
  • 好东西,可编译成可执行文件
  • 东西是好的,高端了,有些整不懂
  • 写得稍微复杂了,不过也有值得学习的地方。
  • 还可以,值得一看!
  • 比较复杂,可以看看
  • 学习学习 还可以的
  • 还好,还可以