visual-decaf / decaf-compiler

Compiler of decaf language
1 stars 3 forks source link

加入表达式语句 #78

Closed DistinctWind closed 1 year ago

DistinctWind commented 1 year ago

关于提交树的结构,我们需要先有框架 #77 才能加入语句。不过那个分支还没人合并呢……

DistinctWind commented 1 year ago

大概会变成这样:

image

DistinctWind commented 1 year ago

添加分号作为表达式语句的分隔符,同时删除Scanner生成的EOL token,我们需要更正经的方式来向编译器前端汇报换行情况

DistinctWind commented 1 year ago

现在引入新的一层间接性,Parser改为识别表达式语句,所有的分隔符变为SEMICOLON,同时返回的节点类型改变了,现在Parser中:

    using ast_ptr = std::shared_ptr<ast::Stmt>;

单元测试就需要更改,将返回值转换为ExpressionStmt,然后再取其中的expr成员进行进一步比较。

DistinctWind commented 1 year ago

现在编译器将接受一个Stmt指针,所以单元测试需要修改。

编译器生成的语句将不会在栈中留下值,所以设置程序的返回类型一律为VOID(新添加的类型)