这篇文章只是我学习编译原理的日记。我不是要写一个生成机器代码的编译器,我想写一个生成其它语言的编译器。可能是生成html或者c语言代码?
作为《编译原理》作业,我用C++语言(并不标准)手工编写的的编译器 -- 不完全功能。将代码和文档发上来,和大家一起学习,并希望有高手能够指点。
程序已经实现了词法分析(Lexer.h/cpp),语法分析(Parser.h/cpp)并建立中序语法分析树,语法分析树数据结构(SyntaxTreeNode.h/cpp和 SyntaxTree.h/cpp)。
程序和文档在 http://www.ideawu.net/person/compilersrc/
词法分析器Lexer提供了nextToken()接口供语法分析器Parser使用。但是,词法分析器也可以单独使用,比如为了输出源文件的记号序列。调用Parser的parse()方法将返回一棵源文件对应的语法分析树的指针。之后可以调用display()方法输出格式化的语法分析树。目前 Parser只能建立语法分析树和判断源文件是否存在语法错误并指出错误的地方,无法生成可执行代码。
2006-04-15