Closed DistinctWind closed 1 year ago
大概会变成这样:
添加分号作为表达式语句的分隔符,同时删除Scanner生成的EOL token,我们需要更正经的方式来向编译器前端汇报换行情况
现在引入新的一层间接性,Parser改为识别表达式语句,所有的分隔符变为SEMICOLON,同时返回的节点类型改变了,现在Parser中:
using ast_ptr = std::shared_ptr<ast::Stmt>;
单元测试就需要更改,将返回值转换为ExpressionStmt
,然后再取其中的expr
成员进行进一步比较。
现在编译器将接受一个Stmt
指针,所以单元测试需要修改。
编译器生成的语句将不会在栈中留下值,所以设置程序的返回类型一律为VOID
(新添加的类型)
关于提交树的结构,我们需要先有框架 #77 才能加入语句。不过那个分支还没人合并呢……