Make a Lisp
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
598 B

2 years ago
/*
* Copyright (C) 2023 Riyyi
*
* SPDX-License-Identifier: MIT
*/
#pragma once
#include "ast.h"
#include <string>
2 years ago
namespace blaze {
// Serializer -> return to string
class Printer {
public:
Printer();
2 years ago
virtual ~Printer();
std::string print(ASTNodePtr node, bool print_readably = true);
std::string printNoErrorCheck(ASTNodePtr node, bool print_readably = true);
2 years ago
private:
void init();
void printImpl(ASTNodePtr node, bool print_readably = true);
void printError();
2 years ago
bool m_first_node { true };
bool m_previous_node_is_list { false };
std::string m_print;
2 years ago
};
} // namespace blaze