mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-17 20:38:44 +00:00
const -> let
This commit is contained in:
parent
3ae6ed079d
commit
189306df26
33 changed files with 406 additions and 285 deletions
|
|
@ -131,7 +131,6 @@ using SubExpressionToken = std::variant<
|
|||
std::unique_ptr<ReferenceExpression>>;
|
||||
//
|
||||
struct FunctionCallExpression;
|
||||
struct ArrayExpression;
|
||||
using SubExpression = std::variant< // BiaryOperatorExpression is FunctionCallExpression
|
||||
std::unique_ptr<FunctionCallExpression>,
|
||||
std::unique_ptr<SubExpressionToken>>;
|
||||
|
|
@ -149,11 +148,17 @@ using PrefixedExpression = std::variant<
|
|||
//
|
||||
struct LambdaFunction;
|
||||
struct TypeConstructor;
|
||||
struct AndExpression;
|
||||
struct OrExpression;
|
||||
struct ArrayExpression;
|
||||
using Expression = std::variant<
|
||||
std::unique_ptr<LambdaFunction>,
|
||||
std::unique_ptr<TypeConstructor>,
|
||||
std::unique_ptr<PrefixedExpression>,
|
||||
std::unique_ptr<SubExpression>>;
|
||||
std::unique_ptr<SubExpression>,
|
||||
std::unique_ptr<AndExpression>,
|
||||
std::unique_ptr<OrExpression>,
|
||||
std::unique_ptr<ArrayExpression>>;
|
||||
//
|
||||
struct TupleExpression;
|
||||
struct VariantExpression;
|
||||
|
|
@ -161,7 +166,6 @@ using SuperExpression = std::variant<
|
|||
std::unique_ptr<FlowControl>,
|
||||
std::unique_ptr<TupleExpression>,
|
||||
std::unique_ptr<VariantExpression>,
|
||||
std::unique_ptr<ArrayExpression>,
|
||||
std::unique_ptr<Expression>>;
|
||||
//
|
||||
|
||||
|
|
@ -181,6 +185,8 @@ struct ReturnExpression;
|
|||
struct TypeConstructorParameter;
|
||||
struct TypeConstructor;
|
||||
struct LambdaFunction;
|
||||
struct AndExpression;
|
||||
struct OrExpression;
|
||||
struct ArrayExpression;
|
||||
|
||||
// Name
|
||||
|
|
@ -525,7 +531,7 @@ struct FunctionCallExpression {
|
|||
std::unique_ptr<WrappedTypeExpression>>> prefix;
|
||||
NameOrOperatorIdentifier name;
|
||||
std::vector<std::unique_ptr<TypeExpression>> parameters;
|
||||
std::vector<SubExpression> arguments;
|
||||
std::vector<std::pair<std::optional<NameIdentifier>, SubExpression>> arguments;
|
||||
|
||||
std::optional<size_t> precedence; // for operators
|
||||
bool is_binary_operator_expression = false; // for operators
|
||||
|
|
@ -587,6 +593,18 @@ struct LambdaFunction {
|
|||
utils::IdType return_type_graph_id_ = 0;
|
||||
};
|
||||
|
||||
struct AndExpression {
|
||||
BaseNode base;
|
||||
|
||||
std::vector<SubExpression> expressions;
|
||||
};
|
||||
|
||||
struct OrExpression {
|
||||
BaseNode base;
|
||||
|
||||
std::vector<SubExpression> expressions;
|
||||
};
|
||||
|
||||
struct ArrayExpression {
|
||||
BaseNode base;
|
||||
|
||||
|
|
@ -632,7 +650,7 @@ struct Name {
|
|||
struct FunctionType {
|
||||
BaseNode base;
|
||||
|
||||
std::vector<std::unique_ptr<ExtendedScopedAnyType>> types;
|
||||
std::vector<std::pair<std::optional<NameIdentifier>, std::unique_ptr<ExtendedScopedAnyType>>> types;
|
||||
};
|
||||
|
||||
struct TupleType {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue