erick-alcachofa b99f3586dc
chore(license): Added NOTICE header to all source files
Signed-off-by: erick-alcachofa <erick@artichoke.dev>
2025-12-25 13:12:41 -06:00

57 lines
2.4 KiB
C++

//============================================================================//
// //
// artichoke programming language //
// //
// Copyright (C) 2025 Erick Saul Guzman Ramos, whoami.artichoke.dev //
// //
// //
// This program is free software: you can redistribute it and/or modify //
// it under the terms of the GNU Affero General Public License as published //
// by the Free Software Foundation, either version 3 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU Affero General Public License for more details. //
// //
// You should have received a copy of the GNU Affero General Public License //
// along with this program. If not, see <https://www.gnu.org/licenses/>. //
// //
//============================================================================//
#pragma once
#include <artichoke/Parser/AST/Common.hpp>
#include <artichoke/Parser/AST/Declarations.hpp>
namespace arti::lang::ast {
namespace nodes {
/* Forward declaration of types */
/* Main declaration node types */
struct CompilationUnit;
} // namespace nodes
/* Public Aliases */
using CompilationUnitNode = Ptr<nodes::CompilationUnit>;
using AST = CompilationUnitNode;
/* Node definitions */
struct nodes::CompilationUnit {
String unitName;
Vector<TopLevelDeclNode> declarations;
};
template <ASTNodePtr Node>
auto MakeNode() {
return std::make_unique<typename Node::element_type>();
}
std::string toDot(const AST &tree);
std::string toString(const AST &tree, std::string prefix = "");
} // namespace arti::lang::ast