print_visitor first iteration

This commit is contained in:
ProgramSnail 2023-03-27 03:10:04 +03:00
parent c8b52f9ade
commit 195c536620
2 changed files with 223 additions and 32 deletions

View file

@ -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;
};