63 lines
1.6 KiB
Markdown
63 lines
1.6 KiB
Markdown
# 任务划分
|
||
- 两部分任务
|
||
1. 词法分析器
|
||
2. 语法分析器
|
||
|
||
## 词法分析器
|
||
### 流程
|
||
- 关键字的识别 --> 超前搜索
|
||
- 构建词法识别的状态转换图
|
||
```
|
||
1. 构造出关键字与种类编码的对应表
|
||
2. 根据对应表 构造状态转换图 --->先根据所做内容画出语法分析器
|
||
```
|
||
|
||
### 输出格式
|
||
[待测代码中的单词符号] [TAB] <[单词符号种别],[单词符号内容]>
|
||
- 其中单词符号种别为 KW(关键字)、OP(运算符)、SE(界符)、IDN(标识符)INT(整形数)
|
||
- 单词符号内容第⼀个维度为其种别,第⼆个维度为其属性。
|
||
|
||
|
||
|
||
# 代码结构
|
||
```
|
||
📁2024-compiler-mods
|
||
├─ 📄.gitignore
|
||
├─ 📄CMakeLists.txt
|
||
├─ 📄read.md
|
||
├─ 📄README.md
|
||
├─ 📁LL1
|
||
│ ├─ 📄CMakeLists.txt
|
||
│ ├─ 📄grammar.cpp
|
||
│ ├─ 📄grammar.h
|
||
│ ├─ 📄LL1.cpp
|
||
│ └─ 📄LL1.h
|
||
├─ 📁main
|
||
│ ├─ 📄CMakeLists.txt
|
||
│ ├─ 📄grammar.h
|
||
│ ├─ 📄LL1.h
|
||
│ ├─ 📄main.cpp
|
||
│ └─ 📄nfa.h
|
||
├─ 📁nfa
|
||
│ ├─ 📄CMakeLists.txt
|
||
│ ├─ 📄dfa.cpp
|
||
│ ├─ 📄nfa.cpp
|
||
│ ├─ 📄nfa.h
|
||
│ └─ 📄tool.cpp
|
||
├─ 📁.git
|
||
└─ 📁build
|
||
|
||
```
|
||
|
||
|
||
# 需做改动
|
||
1. 可视化部分做一做改动,原有代码中的比较可以用但最终考虑不提交,考虑添加DFA、NFA的画图可视化
|
||
2. 拆分词法分析器和语法分析器为两部分,对两部分测试独立进行,保证至少有一部分无误
|
||
|
||
|
||
|
||
# 需考虑
|
||
1. 错误处理部分
|
||
2. 数字 01 情况
|
||
3. 标识符一定包含字母、数、下划线三部分
|
||
4. 测试部分复合的标识符定义读取 |