visual-decaf / decaf-compiler

Compiler of decaf language
1 stars 3 forks source link

添加浮点数类型 #69

Closed DistinctWind closed 1 year ago

DistinctWind commented 1 year ago

目标

添加浮点数类型,支持浮点数与现有的类型系统结合。

DistinctWind commented 1 year ago

DOUBLE改为FLOAT,因为float才是浮点数的意思,double疑似是C++独有的,没必要引入到decaf语言当中

DistinctWind commented 1 year ago

现在编译器还未实现FloatConstant,所以编译不能通过,但是我还是在此处提交一次。

首先我发现,在Parser生成的C++代码中可以看到

          {
        yylhs.value.as < std::shared_ptr<decaf::ast::Expr> > () = std::make_shared<FloatConstant>(yystack_[0].value.as < double > ());
    }

从这里可以看出,一旦使用了%define api.value.type variant,那么语义值将会直接被看做对应类型的值value.as < double >

其次,我发现没有什么可以添加到单元测试中的新结构,关键是现有的结构要支持浮点数。