style(doc): 统一 Lexer Parser 相关表述
This commit is contained in:
12
README.md
12
README.md
@@ -5,8 +5,6 @@
|
|||||||
|
|
||||||
## 1. 实验介绍
|
## 1. 实验介绍
|
||||||
|
|
||||||
下面简要概述各实验的名称与主要目标:
|
|
||||||
|
|
||||||
| 实验 | 名称 | 任务/目标 |
|
| 实验 | 名称 | 任务/目标 |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| Lab1 | 语法树构建 | 基于 SysY 源程序完成语法分析与语法树构建,并按约定输出语法树 |
|
| Lab1 | 语法树构建 | 基于 SysY 源程序完成语法分析与语法树构建,并按约定输出语法树 |
|
||||||
@@ -14,7 +12,7 @@
|
|||||||
| Lab3 | 指令选择与汇编生成 | 将 IR 翻译为目标平台汇编代码(本项目以 ARM64/AArch64 为主) |
|
| Lab3 | 指令选择与汇编生成 | 将 IR 翻译为目标平台汇编代码(本项目以 ARM64/AArch64 为主) |
|
||||||
| Lab4 | 寄存器分配与后端优化 | 为后端生成的虚拟寄存器分配物理寄存器,并完成 spill/reload、冗余指令消除与局部后端优化 |
|
| Lab4 | 寄存器分配与后端优化 | 为后端生成的虚拟寄存器分配物理寄存器,并完成 spill/reload、冗余指令消除与局部后端优化 |
|
||||||
| Lab5 | 基本标量优化 | 实现常见的标量优化(如常量传播、死代码删除、简化 CFG 等) |
|
| Lab5 | 基本标量优化 | 实现常见的标量优化(如常量传播、死代码删除、简化 CFG 等) |
|
||||||
| Lab6 | 并行/循环优化 | 面向循环的优化(循环变换/并行化等),提升数值计算类程序性能 |
|
| Lab6 | 并行与循环优化 | 面向循环的优化(循环变换/并行化等),进一步提升程序性能 |
|
||||||
|
|
||||||
## 2. 实验环境配置
|
## 2. 实验环境配置
|
||||||
|
|
||||||
@@ -55,10 +53,12 @@ sudo apt install qemu-user
|
|||||||
|
|
||||||
## 3. 编译与运行
|
## 3. 编译与运行
|
||||||
|
|
||||||
### 3.1 生成 ANTLR 代码
|
### 3.1 生成 Lexer/Parser
|
||||||
|
|
||||||
本仓库已内置 ANTLR jar:`third_party/antlr-4.13.2-complete.jar`。生成文件不提交到仓库,统一输出到构建目录下:
|
本仓库已内置 ANTLR jar:`third_party/antlr-4.13.2-complete.jar`。
|
||||||
`build/generated/antlr4/`。
|
当前 CMake 只会收集构建目录中的 Lexer/Parser 生成文件,不会自动调用 ANTLR;因此首次构建前,需要先生成 Lexer/Parser 及相关生成文件。
|
||||||
|
|
||||||
|
生成文件不提交到仓库,统一输出到 `build/generated/antlr4/`。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p build/generated/antlr4
|
mkdir -p build/generated/antlr4
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Lab1:构建antlr规则生成语法树
|
# Lab1:语法树构建
|
||||||
|
|
||||||
## 1. 本实验定位
|
## 1. 本实验定位
|
||||||
|
|
||||||
@@ -11,7 +11,7 @@ Lab1 聚焦前端第一步:词法/语法分析。
|
|||||||
需要同学完成:
|
需要同学完成:
|
||||||
|
|
||||||
1. 依据 SysY 规范扩展文法 `src/antlr4/SysY.g4`。
|
1. 依据 SysY 规范扩展文法 `src/antlr4/SysY.g4`。
|
||||||
2. 通过构建流程让 ANTLR 重新生成 Lexer/Parser。
|
2. 通过构建流程重新生成 Lexer/Parser。
|
||||||
3. 让更多合法 SysY 程序可以被解析通过(不再仅限当前最小样例)。
|
3. 让更多合法 SysY 程序可以被解析通过(不再仅限当前最小样例)。
|
||||||
|
|
||||||
## 3. Lab1 需要补充的内容
|
## 3. Lab1 需要补充的内容
|
||||||
@@ -40,11 +40,11 @@ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
|||||||
cmake --build build -j "$(nproc)"
|
cmake --build build -j "$(nproc)"
|
||||||
```
|
```
|
||||||
|
|
||||||
ANTLR 生成文件统一位于:
|
Lexer/Parser 生成文件统一位于:
|
||||||
|
|
||||||
- `build/generated/antlr4/`
|
- `build/generated/antlr4/`
|
||||||
|
|
||||||
如需手动触发 ANTLR 生成:
|
如需手动生成 Lexer/Parser:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir -p build/generated/antlr4
|
mkdir -p build/generated/antlr4
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Lab2:生成中间表示(IR)
|
# Lab2:中间表示生成
|
||||||
|
|
||||||
## 1. 本实验定位
|
## 1. 本实验定位
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ target_link_libraries(frontend PUBLIC
|
|||||||
${ANTLR4_RUNTIME_TARGET}
|
${ANTLR4_RUNTIME_TARGET}
|
||||||
)
|
)
|
||||||
|
|
||||||
# 自动纳入构建目录中的 ANTLR 生成源码(若存在)
|
# 自动纳入构建目录中的 Lexer/Parser 生成源码(若存在)
|
||||||
file(GLOB_RECURSE ANTLR4_GENERATED_SOURCES CONFIGURE_DEPENDS
|
file(GLOB_RECURSE ANTLR4_GENERATED_SOURCES CONFIGURE_DEPENDS
|
||||||
"${ANTLR4_GENERATED_DIR}/*.cpp"
|
"${ANTLR4_GENERATED_DIR}/*.cpp"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user