mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-06 06:58:45 +00:00
print_visitor first iteration
This commit is contained in:
parent
c8b52f9ade
commit
195c536620
2 changed files with 223 additions and 32 deletions
|
|
@ -451,19 +451,19 @@ using FunctionArgument = std::variant<
|
|||
|
||||
struct FunctionCallExpression : public Node {
|
||||
std::unique_ptr<NameSuperExpression> name;
|
||||
std::vector<std::unique_ptr<FunctionArgument>> arguments;
|
||||
std::vector<FunctionArgument> arguments;
|
||||
};
|
||||
|
||||
struct TupleExpression : public Node {
|
||||
std::vector<std::unique_ptr<SubExpression>> expressions;
|
||||
std::vector<SubExpression> expressions;
|
||||
};
|
||||
|
||||
struct VariantExpression : public Node {
|
||||
std::vector<std::unique_ptr<SubExpression>> expressions;
|
||||
std::vector<SubExpression> expressions;
|
||||
};
|
||||
|
||||
struct ReturnExpression : public Node {
|
||||
std::unique_ptr<Expression> expression;
|
||||
Expression expression;
|
||||
};
|
||||
|
||||
// Lambda -----------------
|
||||
|
|
@ -471,14 +471,14 @@ struct ReturnExpression : public Node {
|
|||
struct LambdaFunction : public Node {
|
||||
std::vector<std::unique_ptr<DefinitionParameter>> parameters;
|
||||
std::vector<std::unique_ptr<DefinitionArgument>> arguments;
|
||||
std::unique_ptr<Expression> expression;
|
||||
Expression expression;
|
||||
};
|
||||
|
||||
// Name -----------------
|
||||
|
||||
struct NameSuperExpression : public Node {
|
||||
std::vector<std::unique_ptr<TypeSubExpression>> namespaces;
|
||||
std::vector<std::unique_ptr<NameSubSuperExpression>> expressions; // last is not SuperExpression
|
||||
std::vector<TypeSubExpression> namespaces;
|
||||
std::vector<NameSubSuperExpression> expressions; // last is not SuperExpression
|
||||
};
|
||||
|
||||
struct NameExpression : public Node {
|
||||
|
|
@ -505,12 +505,12 @@ struct AnnotatedName : public Node {
|
|||
|
||||
struct TypeConstructor : public Node {
|
||||
std::unique_ptr<ParametrizedType> type;
|
||||
std::vector<std::pair<NameIdentifier, std::unique_ptr<SubExpression>>> parameters;
|
||||
std::vector<std::pair<NameIdentifier, SubExpression>> parameters;
|
||||
};
|
||||
|
||||
struct TupleType : public Node {
|
||||
TypeIdentifierDefinition type; // optional
|
||||
std::vector<std::pair<NameIdentifier, std::unique_ptr<AnyType>>> entities; // NameIdentifier is optional
|
||||
std::vector<std::pair<NameIdentifier, AnyType>> entities; // NameIdentifier is optional
|
||||
};
|
||||
|
||||
struct VariantType : public Node {
|
||||
|
|
@ -529,11 +529,11 @@ using TypeParameter = std::variant<
|
|||
|
||||
struct ParametrizedType : public Node {
|
||||
std::unique_ptr<TypeExpression> type_expression;
|
||||
std::vector<std::unique_ptr<TypeParameter>> parameters;
|
||||
std::vector<TypeParameter> parameters;
|
||||
};
|
||||
|
||||
struct TypeExpression : public Node {
|
||||
std::vector<std::unique_ptr<TypeSubExpression>> namespaces;
|
||||
std::vector<TypeSubExpression> namespaces;
|
||||
AnyTypeIdentifier type;
|
||||
};
|
||||
|
||||
|
|
@ -546,11 +546,11 @@ struct AnnotatedTypeclass : public Node {
|
|||
|
||||
struct ParametrizedTypeclass : public Node {
|
||||
std::unique_ptr<TypeclassExpression> typeclass_expression;
|
||||
std::vector<std::unique_ptr<TypeParameter>> parameters;
|
||||
std::vector<TypeParameter> parameters;
|
||||
};
|
||||
|
||||
struct TypeclassExpression : public Node {
|
||||
std::vector<std::unique_ptr<TypeSubExpression>> namespaces;
|
||||
std::vector<TypeSubExpression> namespaces;
|
||||
TypeclassIdentifier typeclass;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue