Files
vb6-parser/src/raw_ast_printer.hpp
Federico Aponte 15320a8f46 First commit
2022-01-16 01:14:05 +01:00

81 lines
3.6 KiB
C++

//: raw_ast_printer.hpp
// vb6_parser
// Copyright (c) 2022 Federico Aponte
// This code is licensed under GNU Software License (see LICENSE.txt for details)
#pragma once
#include "vb6_ast.hpp"
#include <iostream>
class raw_ast_printer
{
public:
explicit raw_ast_printer(std::ostream& os) : os(os)
{
}
void operator()(vb6_ast::empty_line const&) const;
void operator()(vb6_ast::lonely_comment const&) const;
void operator()(vb6_ast::identifier_context const&) const;
void operator()(vb6_ast::variable const&) const;
void operator()(vb6_ast::decorated_variable const&) const;
void operator()(vb6_ast::const_expr const&) const;
void operator()(vb6_ast::expression const&) const;
void operator()(vb6_ast::func_call const&) const;
void operator()(vb6_ast::global_var_decls const&) const;
void operator()(vb6_ast::const_var_stat const&) const;
void operator()(vb6_ast::record const&) const;
void operator()(vb6_ast::vb_enum const&) const;
void operator()(vb6_ast::func_param const&) const;
void operator()(vb6_ast::externalSub const&) const;
void operator()(vb6_ast::externalFunction const&) const;
void operator()(vb6_ast::subHead const&) const;
void operator()(vb6_ast::eventHead const&) const;
void operator()(vb6_ast::functionHead const&) const;
void operator()(vb6_ast::propertyLetHead const&) const;
void operator()(vb6_ast::propertySetHead const&) const;
void operator()(vb6_ast::propertyGetHead const&) const;
void operator()(vb6_ast::subDef const&) const;
void operator()(vb6_ast::functionDef const&) const;
void operator()(vb6_ast::module_attribute) const;
void operator()(vb6_ast::module_option) const;
void operator()(vb6_ast::STRICT_MODULE_STRUCTURE::module_attributes const&) const;
void operator()(vb6_ast::STRICT_MODULE_STRUCTURE::declaration const&) const;
void operator()(vb6_ast::STRICT_MODULE_STRUCTURE::vb_module const&) const;
void operator()(vb6_ast::declaration const&) const;
void operator()(vb6_ast::vb_module const&) const;
void operator()(vb6_ast::statements::assignStmt const&) const;
void operator()(vb6_ast::statements::exitStmt const&) const;
void operator()(vb6_ast::statements::gotoStmt const&) const;
void operator()(vb6_ast::statements::onerrorStmt const&) const;
void operator()(vb6_ast::statements::resumeStmt const&) const;
void operator()(vb6_ast::statements::localVarDeclStmt const&) const;
void operator()(vb6_ast::statements::redimStmt const&) const;
void operator()(vb6_ast::statements::callStmt const&) const;
void operator()(vb6_ast::statements::raiseeventStmt const&) const;
void operator()(vb6_ast::statements::labelStmt const&) const;
void operator()(vb6_ast::statements::whileStmt const&) const;
void operator()(vb6_ast::statements::doStmt const&) const;
void operator()(vb6_ast::statements::dowhileStmt const&) const;
void operator()(vb6_ast::statements::loopwhileStmt const&) const;
void operator()(vb6_ast::statements::dountilStmt const&) const;
void operator()(vb6_ast::statements::loopuntilStmt const&) const;
void operator()(vb6_ast::statements::forStmt const&) const;
void operator()(vb6_ast::statements::foreachStmt const&) const;
void operator()(vb6_ast::statements::ifelseStmt const&) const;
void operator()(vb6_ast::statements::withStmt const&) const;
void operator()(vb6_ast::statements::case_block const&) const;
void operator()(vb6_ast::statements::selectStmt const&) const;
void operator()(vb6_ast::statements::singleStmt const&) const;
private:
void print_type(vb6_ast::access_type) const;
std::ostream& os;
mutable int indent = 0;
static int indent_size;
};