mirror of
https://codeberg.org/ProgramSnail/lang.git
synced 2025-12-09 00:18:46 +00:00
statement node added
This commit is contained in:
parent
b4ce56b5f7
commit
6b74398f8c
7 changed files with 108 additions and 60 deletions
|
|
@ -8,6 +8,40 @@
|
|||
|
||||
namespace printers {
|
||||
|
||||
void print_source_file(const std::vector<nodes::Statement> &statements,
|
||||
Printer &printer) {
|
||||
for (auto &statement : statements) {
|
||||
print_statement(statement, printer);
|
||||
}
|
||||
}
|
||||
|
||||
void print_statement(const nodes::Statement &statement, Printer &printer) {
|
||||
switch (statement.get_any()->index()) {
|
||||
case 0: // Import
|
||||
print_import(*statement.get<nodes::Import>().value(), printer);
|
||||
printer.new_indent_line();
|
||||
break;
|
||||
case 1: // TypeDefinition
|
||||
print_type_definition(*statement.get<nodes::TypeDefinition>().value(),
|
||||
printer);
|
||||
printer.new_indent_line();
|
||||
break;
|
||||
case 2: // FunctionDefinition
|
||||
print_function_definition(
|
||||
*statement.get<nodes::FunctionDefinition>().value(), printer);
|
||||
printer.new_indent_line();
|
||||
break;
|
||||
case 3: // TypeclassDefinition
|
||||
print_typeclass_definition(
|
||||
*statement.get<nodes::TypeclassDefinition>().value(), printer);
|
||||
printer.new_indent_line();
|
||||
break;
|
||||
case 4: // EmptyLines
|
||||
print_empty_lines(*statement.get<nodes::EmptyLines>().value(), printer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void print_import(const nodes::Import &statement, Printer &printer) {
|
||||
printer.print(":: ");
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue