From f9f2cf6d47fe820bc4af1f40a9fffc4da1b123e2 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Wed, 22 May 2024 20:29:13 +0800 Subject: [PATCH] :memo: change eol to lf --- src/ast_dumper.h | 224 +++++++++++++++++++++++------------------------ 1 file changed, 112 insertions(+), 112 deletions(-) diff --git a/src/ast_dumper.h b/src/ast_dumper.h index f95f6bd..cfbd1d0 100644 --- a/src/ast_dumper.h +++ b/src/ast_dumper.h @@ -1,112 +1,112 @@ -#pragma once - -#include "ast_visitor.h" - -#ifdef _WIN32 -#include -#endif - -#include -#include -#include -#include - -namespace nasal { - -class ast_dumper: public ast_visitor { -private: - std::vector indent; - -private: - void push_indent() { - if (indent.size()) { - if (indent.back()=="├──") { - indent.back() = "│ "; - } else if (indent.back()=="└──") { - indent.back() = " "; - } - } - indent.push_back("├──"); - } - - void pop_indent() { - indent.pop_back(); - } - - void set_last() { - indent.back() = "└──"; - } - - void dump_indent() { - if (indent.size() && indent.back()=="│ ") { - indent.back() = "├──"; - } - for(const auto& i : indent) { - std::cout << i; - } - } - - std::string format_location(expr* node) { - std::stringstream ss; - ss << " → ["; - node->get_location().dump_begin(ss); - ss << "]\n"; - return ss.str(); - } - -public: - bool visit_use_stmt(use_stmt*) override; - bool visit_null_expr(null_expr*) override; - bool visit_nil_expr(nil_expr*) override; - bool visit_number_literal(number_literal*) override; - bool visit_string_literal(string_literal*) override; - bool visit_identifier(identifier*) override; - bool visit_bool_literal(bool_literal*) override; - bool visit_vector_expr(vector_expr*) override; - bool visit_hash_expr(hash_expr*) override; - bool visit_hash_pair(hash_pair*) override; - bool visit_function(function*) override; - bool visit_code_block(code_block*) override; - bool visit_parameter(parameter*) override; - bool visit_ternary_operator(ternary_operator*) override; - bool visit_binary_operator(binary_operator*) override; - bool visit_unary_operator(unary_operator*) override; - bool visit_call_expr(call_expr*) override; - bool visit_call_hash(call_hash*) override; - bool visit_call_vector(call_vector*) override; - bool visit_call_function(call_function*) override; - bool visit_slice_vector(slice_vector*) override; - bool visit_definition_expr(definition_expr*) override; - bool visit_assignment_expr(assignment_expr*) override; - bool visit_multi_identifier(multi_identifier*) override; - bool visit_tuple_expr(tuple_expr*) override; - bool visit_multi_assign(multi_assign*) override; - bool visit_while_expr(while_expr*) override; - bool visit_for_expr(for_expr*) override; - bool visit_iter_expr(iter_expr*) override; - bool visit_forei_expr(forei_expr*) override; - bool visit_condition_expr(condition_expr*) override; - bool visit_if_expr(if_expr*) override; - bool visit_continue_expr(continue_expr*) override; - bool visit_break_expr(break_expr*) override; - bool visit_return_expr(return_expr*) override; - -public: - void dump(code_block* root) { -#ifdef _WIN32 - // store previous code page - auto cp = GetConsoleOutputCP(); - // allow 65001 code page - SetConsoleOutputCP(CP_UTF8); -#endif - - root->accept(this); - -#ifdef _WIN32 - // restore previous code page - SetConsoleOutputCP(cp); -#endif - } -}; - -} +#pragma once + +#include "ast_visitor.h" + +#ifdef _WIN32 +#include +#endif + +#include +#include +#include +#include + +namespace nasal { + +class ast_dumper: public ast_visitor { +private: + std::vector indent; + +private: + void push_indent() { + if (indent.size()) { + if (indent.back()=="├──") { + indent.back() = "│ "; + } else if (indent.back()=="└──") { + indent.back() = " "; + } + } + indent.push_back("├──"); + } + + void pop_indent() { + indent.pop_back(); + } + + void set_last() { + indent.back() = "└──"; + } + + void dump_indent() { + if (indent.size() && indent.back()=="│ ") { + indent.back() = "├──"; + } + for(const auto& i : indent) { + std::cout << i; + } + } + + std::string format_location(expr* node) { + std::stringstream ss; + ss << " → ["; + node->get_location().dump_begin(ss); + ss << "]\n"; + return ss.str(); + } + +public: + bool visit_use_stmt(use_stmt*) override; + bool visit_null_expr(null_expr*) override; + bool visit_nil_expr(nil_expr*) override; + bool visit_number_literal(number_literal*) override; + bool visit_string_literal(string_literal*) override; + bool visit_identifier(identifier*) override; + bool visit_bool_literal(bool_literal*) override; + bool visit_vector_expr(vector_expr*) override; + bool visit_hash_expr(hash_expr*) override; + bool visit_hash_pair(hash_pair*) override; + bool visit_function(function*) override; + bool visit_code_block(code_block*) override; + bool visit_parameter(parameter*) override; + bool visit_ternary_operator(ternary_operator*) override; + bool visit_binary_operator(binary_operator*) override; + bool visit_unary_operator(unary_operator*) override; + bool visit_call_expr(call_expr*) override; + bool visit_call_hash(call_hash*) override; + bool visit_call_vector(call_vector*) override; + bool visit_call_function(call_function*) override; + bool visit_slice_vector(slice_vector*) override; + bool visit_definition_expr(definition_expr*) override; + bool visit_assignment_expr(assignment_expr*) override; + bool visit_multi_identifier(multi_identifier*) override; + bool visit_tuple_expr(tuple_expr*) override; + bool visit_multi_assign(multi_assign*) override; + bool visit_while_expr(while_expr*) override; + bool visit_for_expr(for_expr*) override; + bool visit_iter_expr(iter_expr*) override; + bool visit_forei_expr(forei_expr*) override; + bool visit_condition_expr(condition_expr*) override; + bool visit_if_expr(if_expr*) override; + bool visit_continue_expr(continue_expr*) override; + bool visit_break_expr(break_expr*) override; + bool visit_return_expr(return_expr*) override; + +public: + void dump(code_block* root) { +#ifdef _WIN32 + // store previous code page + auto cp = GetConsoleOutputCP(); + // allow 65001 code page + SetConsoleOutputCP(CP_UTF8); +#endif + + root->accept(this); + +#ifdef _WIN32 + // restore previous code page + SetConsoleOutputCP(cp); +#endif + } +}; + +}