# 编译器开发文档

### 附属文档

* ``词法分析器文档.md``
* ``语法分析器文档.md``

### 基本定义和使用

* 编译器的源码位于``src/compiler``目录下。
* ``stamon::c``是编译器所在的命名空间，``c``的全称是``compiler``。
* 在``Compiler.hpp``中，提供了顶层前端的设计函数。
* 我们规定：Stamon源码的文件后缀为``.st``

以下是``Compiler.hpp``包含的接口：

```C++
ArrayList<SourceSyntax> *ParseTargetProject(
	STMException *e,
	ArrayList<String> *error_msg, ArrayList<String> *warning_msg,
	String filename, bool is_support_import, ArrayList<SourceSyntax> *src,
	HashMap<String, bool> filemap, SyntaxScope global_scope
);

/*
编译一个Stamon项目。
e是异常类，error_msg是存储报错信息用的列表，warning_msg是存储警告信息用的列表，filename是源码文件名，is_support_import_表示是否支持引用其他源码，src是存储各个文件语法树用的列表，filemap是用来标记文件是否被引用过的映射表，global_scope是全局作用域。
返回处理后的存储着各个文件语法树的列表（即处理后的src）。
*/

ast::AstNode *MergeAST(ArrayList<SourceSyntax> *syntax_list);

/*
将各个语法树合并为一个。syntax_list是存储着各个文件语法树的列表。返回合并后的根节点。
*/

```