mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-07 15:38:47 +00:00
visitor, print_visitor and build_visitor fixed
This commit is contained in:
parent
776b6cccc6
commit
4d0b527416
9 changed files with 212 additions and 139 deletions
|
|
@ -8,27 +8,21 @@ namespace interpreter {
|
|||
void PrintVisitor::Visit(SourceFile* node) {
|
||||
out_ << "[SourceFile] (\n\n";
|
||||
for (auto& statement : node->statements) {
|
||||
if (std::holds_alternative<Partition>(statement)) {
|
||||
Visit(&std::get<Partition>(statement));
|
||||
} else if (std::holds_alternative<SourceStatement>(statement)) {
|
||||
Visitor::Visit(std::get<SourceStatement>(statement));
|
||||
} else {
|
||||
// error
|
||||
}
|
||||
Visitor::Visit(statement);
|
||||
}
|
||||
out_ << "\n)\n";
|
||||
}
|
||||
|
||||
void PrintVisitor::Visit(Sources* node) {
|
||||
out_ << "[Sources](\n";
|
||||
// Namespaces, partitions -----------------
|
||||
|
||||
void PrintVisitor::Visit(PartitionSources* node) {
|
||||
out_ << "[PartitionSources](\n";
|
||||
for (auto& statement : node->statements) {
|
||||
Visitor::Visit(statement);
|
||||
}
|
||||
out_ << ")\n";
|
||||
}
|
||||
|
||||
// Namespaces, partitions -----------------
|
||||
|
||||
void PrintVisitor::Visit(Partition* node) {
|
||||
out_ << "[Partition] ";
|
||||
switch (node->name) {
|
||||
|
|
@ -43,10 +37,18 @@ void PrintVisitor::Visit(Partition* node) {
|
|||
break;
|
||||
}
|
||||
out_ << " {\n";
|
||||
Visit(node->scope.get());
|
||||
Visit(&node->scope);
|
||||
out_ << "}\n";
|
||||
}
|
||||
|
||||
void PrintVisitor::Visit(NamespaceSources* node) {
|
||||
out_ << "[NamespaceSources](\n";
|
||||
for (auto& statement : node->statements) {
|
||||
Visitor::Visit(statement);
|
||||
}
|
||||
out_ << ")\n";
|
||||
}
|
||||
|
||||
void PrintVisitor::Visit(Namespace* node) {
|
||||
out_ << "[Namespace] ";
|
||||
if (node->modifier.has_value()) {
|
||||
|
|
@ -61,7 +63,7 @@ void PrintVisitor::Visit(Namespace* node) {
|
|||
}
|
||||
Visit(&node->type);
|
||||
out_ << "{\n";
|
||||
Visit(node->scope.get());
|
||||
Visit(&node->scope);
|
||||
out_ << "}\n";
|
||||
}
|
||||
|
||||
|
|
@ -658,10 +660,6 @@ void PrintVisitor::Visit(ExtendedScopedAnyType* node) {
|
|||
|
||||
void PrintVisitor::Visit(TypeclassExpression* node) {
|
||||
out_ << "[TypeclassExpression] (";
|
||||
for (auto& type : node->path) {
|
||||
Visitor::Visit(type);
|
||||
out_ << "::";
|
||||
}
|
||||
Visitor::Visit(node->typeclass);
|
||||
out_ << ')';
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue