如何用c++做一个编译器(一)
2017-10-01 08:17
183 查看
代码链接
https://github.com/Wchenguang/wkC-compiler
词法分析器第一阶段
介绍:
一。Lexer.h Lexer.cpp
1. Lexer : 词法分析器
构造:通过文件名来构造
功能:使用fstream读取一个文件,并进行词法分析,getToken() 接口为语法分析顺序提供单词
成员hashMap:是利用链表法解决冲突的哈希表,从文件解析出一个单词后,经过哈希,查找到map中的位置,若不存在则插入,插入的是Token类型的指针,Token由字符
串构造
成员tokenList:顺序存储单词指针,为语法分析顺序提供token
二。FA.h FA.cpp
各种自动机的实现,暂时只实现了几个判别函数,和一个解析空白的自动机
三。后续工作
继续丰富自动机类型,完成analyze() 函数进行解析
上火车了,十一快乐
https://github.com/Wchenguang/wkC-compiler
词法分析器第一阶段
介绍:
一。Lexer.h Lexer.cpp
1. Lexer : 词法分析器
构造:通过文件名来构造
功能:使用fstream读取一个文件,并进行词法分析,getToken() 接口为语法分析顺序提供单词
成员hashMap:是利用链表法解决冲突的哈希表,从文件解析出一个单词后,经过哈希,查找到map中的位置,若不存在则插入,插入的是Token类型的指针,Token由字符
串构造
成员tokenList:顺序存储单词指针,为语法分析顺序提供token
二。FA.h FA.cpp
各种自动机的实现,暂时只实现了几个判别函数,和一个解析空白的自动机
三。后续工作
继续丰富自动机类型,完成analyze() 函数进行解析
上火车了,十一快乐
相关文章推荐
- C++对象模型之编译器如何处理函数返回一个对象
- 求一个C++或Java或者C#写的支持C89的编译器前端,如何解析C语言的声明?
- 如何用c++做一个编译器(二)
- C++对象模型之编译器如何处理函数返回一个对象
- L1-040. 最佳情侣身高差【附C++如何保留几位小数,可设置为对一个对象或多个对象生效】
- sqlite3如何判断一个表是否已经存在于数据库中c++
- C++如何求一个十进制数转化为二进制数之后1的个数
- 如何成为一个C++高级程序员
- 如何学习使用C++一个实用主义者的观点
- 【转载】如何学习使用C++一个实用主义者的观点
- 如何成为一个C++高级程序员
- c/c++中如何更改一个指针值
- 编译器如何C++的函数重载
- C++多态是如何实现的——一个简单明晰的例子告诉你!
- clang 编译器如何查看 c++对象的memery layout
- 如何成为一个C++高级程序员
- 如何成为一个C++高级程序员
- 条款1 视c++为一个语言联邦(如何理解c++)
- C++中如何建立一个顺序表
- c++多个文件中如何共用一个全局变量