Skip to content

Commit 52151db

Browse files
committed
refactor(exception): integrate exception-message-generator-function
please refer to the work log for details
1 parent 2b18a2b commit 52151db

File tree

17 files changed

+299
-182
lines changed

17 files changed

+299
-182
lines changed

.vscode/c_cpp_properties.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"${workspaceFolder}/src/compiler/",
1212
"${workspaceFolder}/src/sfn/",
1313
"${workspaceFolder}/src/action/",
14+
"${workspaceFolder}/src/error/",
1415
"${workspaceFolder}/src/"
1516
],
1617
"defines": [],

.vscode/settings.json

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,29 @@
4848
"numbers": "cpp",
4949
"alloc.h": "c",
5050
"mman.c": "cpp",
51-
"stdlib.h": "c"
51+
"stdlib.h": "c",
52+
"any": "cpp",
53+
"charconv": "cpp",
54+
"chrono": "cpp",
55+
"ratio": "cpp",
56+
"scoped_allocator": "cpp",
57+
"variant": "cpp",
58+
"bitset": "cpp",
59+
"codecvt": "cpp",
60+
"condition_variable": "cpp",
61+
"forward_list": "cpp",
62+
"list": "cpp",
63+
"unordered_set": "cpp",
64+
"fstream": "cpp",
65+
"future": "cpp",
66+
"mutex": "cpp",
67+
"shared_mutex": "cpp",
68+
"span": "cpp",
69+
"sstream": "cpp",
70+
"stop_token": "cpp",
71+
"thread": "cpp",
72+
"regex": "cpp",
73+
"valarray": "cpp"
5274
},
5375
"C_Cpp.errorSquiggles": "disabled",
5476
}

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ include_directories(${PROJECT_SOURCE_DIR}/src/ir)
3939
include_directories(${PROJECT_SOURCE_DIR}/src/compiler)
4040
include_directories(${PROJECT_SOURCE_DIR}/src/sfn)
4141
include_directories(${PROJECT_SOURCE_DIR}/src/tac)
42+
include_directories(${PROJECT_SOURCE_DIR}/src/error)
4243
include_directories(${PROJECT_SOURCE_DIR}/src/action)
4344

4445
set(CMAKE_C_FLAGS_DEBUG "-g -Og -DDEBUG")

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ LINK = -I include/stdc_implemented \
1414
-I src/sfn \
1515
-I src/tac \
1616
-I src/action \
17+
-I src/error \
1718
-I src \
1819
-lm
1920

demos/demo.stvc

0 Bytes
Binary file not shown.

demos/demo1.stvc

0 Bytes
Binary file not shown.

demos/demo2.stvc

0 Bytes
Binary file not shown.

doc/代码速览指南.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@
5959

6060
该目录存储Stamon的标准库源码。
6161

62+
* ``src/error``
63+
64+
该目录存储报错信息的生成函数
65+
6266
* ``src/compiler``
6367

6468
该目录存储编译器的实现。
@@ -87,6 +91,7 @@
8791

8892
* ``include``
8993
* ``src/ast``
94+
* ``src/error``
9095
* ``src/compiler``
9196
* ``src/vm``
9297
* ``src/sfn``

doc/工作日志/20240510.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,13 +217,13 @@ SFN类的主要接口有:
217217

218218
我们来逐步讲解。
219219

220-
首先是二进制文件读取为AstIR,这部分的实现位于``src/vm/AstIrReader.cpp``AstIrReader类的主要接口有
220+
首先是二进制文件读取为AstIR,这部分的实现位于``src/vm/STVCReader.cpp``STVCReader类的主要接口有
221221

222-
* ``AstIrReader(char* vmcode, int code_size, STMException* e)``:构造函数,vmcode为字节码在内存中的地址,code_size指字节码的大小,e为异常类
222+
* ``STVCReader(char* vmcode, int code_size, STMException* e)``:构造函数,vmcode为字节码在内存中的地址,code_size指字节码的大小,e为异常类
223223
* ``bool ReadHeader()``:读取字节码头,读取失败则抛出异常并返回false,否则返回true
224224
* ``ArrayList<AstIR> ReadIR()``:读取AstIR,返回由AstIR组成的ArrayList
225225

226-
想要完整的读取一个STVC文件,应该要先创建一个AstIrReader对象,然后先调用``ReadHeader``读取文件头信息,接着调用``ReadIR``来读取AstIR。调用这两个函数之后要分别检查是否有异常抛出。
226+
想要完整的读取一个STVC文件,应该要先创建一个STVCReader对象,然后先调用``ReadHeader``读取文件头信息,接着调用``ReadIR``来读取AstIR。调用这两个函数之后要分别检查是否有异常抛出。
227227

228228
接着是让AstIRGenerator类解析为Running-Ast,这一部分在**写了Ast与AstIR之间的互转工具**部分里已经详细提及过了,故不再赘述。
229229

doc/工作日志/20241029.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
### 封装了Stamon.hpp
1010

11-
在以前,读取STVC文件使用的是``AstIrReader``,而写入STVC文件是在``Stamon.hpp``当中直接实现的,这种现象带来的大量的代码冗余。
12-
我将写入STVC文件的代码逻辑封装到了``AstIrWriter.cpp``中,现在,源码逻辑更加对称和简洁了。
11+
在以前,读取STVC文件使用的是``STVCWriter``,而写入STVC文件是在``Stamon.hpp``当中直接实现的,这种现象带来的大量的代码冗余。
12+
我将写入STVC文件的代码逻辑封装到了``STVCWriter.cpp``中,现在,源码逻辑更加对称和简洁了。
1313

1414
接下来,我将会进一步封装``Stamon.hpp``,使得Stamon的编译过程可以更加细化(甚至做到分布编译)。
1515

0 commit comments

Comments
 (0)