Stamon 文档站

回到首页
回到上一级

语法分析器文档

隶属于编译器开发文档.md

语法分析器的代码位于src/compiler/Parser.cpp当中。 Parser类(stamon::c::Parser)即为语法分析器的主体。

核心接口

语法分析器的构造函数原型为:

Parser(
    Matcher matcher, STMException* e,
    SyntaxScope global_scope, String filename,
    ArrayList<SourceSyntax>* src, FileMap map,
    ArrayList<String>* error_msg, bool is_support_import
)

其中,matcher为Token匹配器;global_scope为给定的全局作用域;filename为当前匹配的文件名;src为一个以文件为单位所存储的AST列表,作为输出参数,在递归分析其他被引用的文件时,语法分析器会把被引用文件的AST加入到src,但其本身生成的AST并不会加入进去;map用于标记某些文件是否被分析过(防止递归引用);error_msg作为输出参数,用于存储报错信息;is_support_import用于指示是否支持import(防止某些平台不支持文件处理)。

在初始化语法分析器后,调用ast::AstNode* Parse()函数即可获得AST的根节点。

基本原理

语法分析器主要采用递归分析,具体的文法请见src/compiler/ebnf.txt


查看该文件的提交记录