[Fix] 修复科学表达式数字解析的问题(Lexer引起) 由 Satklomi发现,感谢 [Feat] 增加Compiler相关定义,将开发BytecodeVM [Tip] Evaluator进入Bug fix阶段,新功能延缓开发。转向VM
42 lines
994 B
C++
42 lines
994 B
C++
#pragma once
|
|
|
|
#include <Ast/astBase.hpp>
|
|
|
|
namespace Fig::Ast
|
|
{
|
|
class InitExprAst final : public ExpressionAst
|
|
{
|
|
public:
|
|
Expression structe;
|
|
|
|
std::vector<std::pair<FString, Expression>> args;
|
|
|
|
enum class InitMode
|
|
{
|
|
Positional = 1,
|
|
Named,
|
|
Shorthand
|
|
} initMode;
|
|
|
|
/*
|
|
3 ways of calling constructor
|
|
.1 Person {"Fig", 1, "IDK"};
|
|
.2 Person {name: "Fig", age: 1, sex: "IDK"}; // can be unordered
|
|
.3 Person {name, age, sex};
|
|
*/
|
|
|
|
InitExprAst()
|
|
{
|
|
type = AstType::InitExpr;
|
|
}
|
|
|
|
InitExprAst(Expression _structe, std::vector<std::pair<FString, Expression>> _args, InitMode _initMode) :
|
|
structe(std::move(_structe)), args(std::move(_args)), initMode(_initMode)
|
|
{
|
|
type = AstType::InitExpr;
|
|
}
|
|
};
|
|
|
|
using InitExpr = std::shared_ptr<InitExprAst>;
|
|
|
|
}; // namespace Fig::Ast
|