ArkScript
A small, fast, functional and scripting language for video games
Ark::Welder Class Referencefinal

The welder joins all the compiler passes. More...

#include <Welder.hpp>

Collaboration diagram for Ark::Welder:
[legend]

Public Member Functions

 Welder (unsigned debug, const std::vector< std::filesystem::path > &lib_env, uint16_t features=DefaultFeatures)
 Create a new Welder.
 
void registerSymbol (const std::string &name)
 Register a symbol as a global in the compiler.
 
bool computeASTFromFile (const std::string &filename)
 
bool computeASTFromString (const std::string &code)
 
bool generateBytecode ()
 Compile the AST processed by computeASTFromFile / computeASTFromString.
 
bool saveBytecodeToFile (const std::string &filename)
 Save the generated bytecode to a given file.
 
const internal::Nodeast () const noexcept
 
std::string textualIR () const noexcept
 
const bytecode_tbytecode () const noexcept
 

Private Member Functions

void dumpIRToFile () const
 
bool computeAST (const std::string &filename, const std::string &code)
 

Private Attributes

std::vector< std::filesystem::path > m_lib_env
 
uint16_t m_features
 
std::filesystem::path m_root_file
 
std::vector< std::string > m_imports
 
std::vector< internal::IR::Blockm_ir
 
bytecode_t m_bytecode
 
internal::Node m_computed_ast
 
internal::Parser m_parser
 
internal::ImportSolver m_import_solver
 
internal::MacroProcessor m_macro_processor
 
internal::Optimizer m_ast_optimizer
 
internal::NameResolutionPass m_name_resolver
 
internal::Logger m_logger
 
internal::IROptimizer m_ir_optimizer
 
internal::IRCompiler m_ir_compiler
 
internal::Compiler m_compiler
 

Detailed Description

The welder joins all the compiler passes.

Definition at line 37 of file Welder.hpp.

Constructor & Destructor Documentation

◆ Welder()

Ark::Welder::Welder ( unsigned debug,
const std::vector< std::filesystem::path > & lib_env,
uint16_t features = DefaultFeatures )

Create a new Welder.

Parameters
debugdebug level
lib_envlist of paths to the standard library
featuresfeature flags to toggle features on/off

Definition at line 16 of file Welder.cpp.

Member Function Documentation

◆ ast()

const internal::Node & Ark::Welder::ast ( ) const
nodiscardnoexcept

Definition at line 96 of file Welder.cpp.

References m_computed_ast.

Referenced by JsonCompiler::compile().

◆ bytecode()

const bytecode_t & Ark::Welder::bytecode ( ) const
nodiscardnoexcept

Definition at line 108 of file Welder.cpp.

References m_bytecode.

Referenced by Ark::State::doString().

◆ computeAST()

◆ computeASTFromFile()

bool Ark::Welder::computeASTFromFile ( const std::string & filename)
Parameters
filename
Returns
true on success

Definition at line 35 of file Welder.cpp.

References computeAST(), m_root_file, and Ark::Utils::readFile().

Referenced by Ark::State::compile(), and JsonCompiler::feed().

◆ computeASTFromString()

bool Ark::Welder::computeASTFromString ( const std::string & code)
Parameters
code
Returns
true on success

Definition at line 43 of file Welder.cpp.

References ARK_NO_NAME_FILE, computeAST(), and m_root_file.

Referenced by Ark::State::doString().

◆ dumpIRToFile()

void Ark::Welder::dumpIRToFile ( ) const
private

Definition at line 113 of file Welder.cpp.

References Ark::internal::IRCompiler::dumpToStream(), m_ir_compiler, and m_root_file.

Referenced by generateBytecode().

◆ generateBytecode()

◆ registerSymbol()

void Ark::Welder::registerSymbol ( const std::string & name)

Register a symbol as a global in the compiler.

Parameters
name

Definition at line 30 of file Welder.cpp.

References Ark::internal::NameResolutionPass::addDefinedSymbol(), and m_name_resolver.

Referenced by Ark::State::compile(), and Ark::State::doString().

◆ saveBytecodeToFile()

bool Ark::Welder::saveBytecodeToFile ( const std::string & filename)

Save the generated bytecode to a given file.

Parameters
filename
Returns
true on success

Definition at line 81 of file Welder.cpp.

References Ark::internal::Logger::info(), m_bytecode, and m_logger.

Referenced by Ark::State::compile().

◆ textualIR()

std::string Ark::Welder::textualIR ( ) const
nodiscardnoexcept

Definition at line 101 of file Welder.cpp.

References Ark::internal::IRCompiler::dumpToStream(), and m_ir_compiler.

Member Data Documentation

◆ m_ast_optimizer

internal::Optimizer Ark::Welder::m_ast_optimizer
private

Definition at line 99 of file Welder.hpp.

Referenced by computeAST().

◆ m_bytecode

bytecode_t Ark::Welder::m_bytecode
private

Definition at line 93 of file Welder.hpp.

Referenced by bytecode(), generateBytecode(), and saveBytecodeToFile().

◆ m_compiler

internal::Compiler Ark::Welder::m_compiler
private

Definition at line 105 of file Welder.hpp.

Referenced by generateBytecode().

◆ m_computed_ast

internal::Node Ark::Welder::m_computed_ast
private

Definition at line 94 of file Welder.hpp.

Referenced by ast(), computeAST(), and generateBytecode().

◆ m_features

uint16_t Ark::Welder::m_features
private

Definition at line 88 of file Welder.hpp.

Referenced by computeAST(), and generateBytecode().

◆ m_import_solver

internal::ImportSolver Ark::Welder::m_import_solver
private

Definition at line 97 of file Welder.hpp.

Referenced by computeAST().

◆ m_imports

std::vector<std::string> Ark::Welder::m_imports
private

Definition at line 91 of file Welder.hpp.

◆ m_ir

std::vector<internal::IR::Block> Ark::Welder::m_ir
private

Definition at line 92 of file Welder.hpp.

Referenced by generateBytecode().

◆ m_ir_compiler

internal::IRCompiler Ark::Welder::m_ir_compiler
private

Definition at line 104 of file Welder.hpp.

Referenced by dumpIRToFile(), generateBytecode(), and textualIR().

◆ m_ir_optimizer

internal::IROptimizer Ark::Welder::m_ir_optimizer
private

Definition at line 103 of file Welder.hpp.

Referenced by generateBytecode().

◆ m_lib_env

std::vector<std::filesystem::path> Ark::Welder::m_lib_env
private

Definition at line 87 of file Welder.hpp.

◆ m_logger

internal::Logger Ark::Welder::m_logger
private

Definition at line 102 of file Welder.hpp.

Referenced by saveBytecodeToFile().

◆ m_macro_processor

internal::MacroProcessor Ark::Welder::m_macro_processor
private

Definition at line 98 of file Welder.hpp.

Referenced by computeAST().

◆ m_name_resolver

internal::NameResolutionPass Ark::Welder::m_name_resolver
private

Definition at line 100 of file Welder.hpp.

Referenced by computeAST(), and registerSymbol().

◆ m_parser

internal::Parser Ark::Welder::m_parser
private

Definition at line 96 of file Welder.hpp.

Referenced by computeAST().

◆ m_root_file

std::filesystem::path Ark::Welder::m_root_file
private

Definition at line 90 of file Welder.hpp.

Referenced by computeAST(), computeASTFromFile(), computeASTFromString(), and dumpIRToFile().


The documentation for this class was generated from the following files: