Skip to content
Snippets Groups Projects
Commit d825e3ad authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Merge branch 'feature/language' of /media/delpino/Transcend/repos/pugs into feature/language

parents f40de13a bfeba78f
No related branches found
No related tags found
1 merge request!37Feature/language
Showing
with 23 additions and 141 deletions
...@@ -46,7 +46,7 @@ ASTPrinter::_print(std::ostream& os, const ASTNode& node) const ...@@ -46,7 +46,7 @@ ASTPrinter::_print(std::ostream& os, const ASTNode& node) const
if (node.m_node_processor) { if (node.m_node_processor) {
os << ':'; os << ':';
os << rang::fgB::magenta; os << rang::fgB::magenta;
os << node.m_node_processor->describe(); os << node.m_node_processor->typeIdName();
os << rang::fg::reset; os << rang::fg::reset;
} }
} }
......
...@@ -3,19 +3,12 @@ ...@@ -3,19 +3,12 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class ASTNodeListProcessor final : public INodeProcessor class ASTNodeListProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
#include <SymbolTable.hpp> #include <SymbolTable.hpp>
#include <Demangle.hpp>
template <typename Op> template <typename Op>
struct AffOp; struct AffOp;
...@@ -71,12 +69,6 @@ class AffectationProcessor final : public INodeProcessor ...@@ -71,12 +69,6 @@ class AffectationProcessor final : public INodeProcessor
}()}; }()};
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
#include <SymbolTable.hpp> #include <SymbolTable.hpp>
#include <Demangle.hpp>
template <typename OperatorT, typename DataT> template <typename OperatorT, typename DataT>
class AffectationToStringProcessor final : public INodeProcessor class AffectationToStringProcessor final : public INodeProcessor
{ {
...@@ -15,12 +13,6 @@ class AffectationToStringProcessor final : public INodeProcessor ...@@ -15,12 +13,6 @@ class AffectationToStringProcessor final : public INodeProcessor
ASTNodeDataVariant* p_value{nullptr}; ASTNodeDataVariant* p_value{nullptr};
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,10 +3,6 @@ ...@@ -3,10 +3,6 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
#include <type_traits>
template <typename Op> template <typename Op>
struct BinOp; struct BinOp;
...@@ -197,12 +193,6 @@ class BinaryExpressionProcessor final : public INodeProcessor ...@@ -197,12 +193,6 @@ class BinaryExpressionProcessor final : public INodeProcessor
}()}; }()};
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,17 +3,9 @@ ...@@ -3,17 +3,9 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class BreakProcessor final : public INodeProcessor class BreakProcessor final : public INodeProcessor
{ {
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,13 +3,10 @@ ...@@ -3,13 +3,10 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
#include <type_traits>
template <typename B_DataT> template <typename B_DataT>
class ConcatExpressionProcessor final : public INodeProcessor class ConcatExpressionProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
PUGS_INLINE auto PUGS_INLINE auto
...@@ -23,12 +20,6 @@ class ConcatExpressionProcessor final : public INodeProcessor ...@@ -23,12 +20,6 @@ class ConcatExpressionProcessor final : public INodeProcessor
} }
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,17 +3,9 @@ ...@@ -3,17 +3,9 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class ContinueProcessor final : public INodeProcessor class ContinueProcessor final : public INodeProcessor
{ {
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,19 +3,12 @@ ...@@ -3,19 +3,12 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class DoWhileProcessor final : public INodeProcessor class DoWhileProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,19 +3,9 @@ ...@@ -3,19 +3,9 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
#include <PugsMacros.hpp>
class FakeProcessor final : public INodeProcessor class FakeProcessor final : public INodeProcessor
{ {
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
PUGS_INLINE
void void
execute(ExecUntilBreakOrContinue&) execute(ExecUntilBreakOrContinue&)
{ {
......
...@@ -3,19 +3,12 @@ ...@@ -3,19 +3,12 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class ForProcessor final : public INodeProcessor class ForProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
#ifndef I_NODE_PROCESSOR_HPP #ifndef I_NODE_PROCESSOR_HPP
#define I_NODE_PROCESSOR_HPP #define I_NODE_PROCESSOR_HPP
#include <Demangle.hpp>
#include <node_processor/ExecUntilBreakOrContinue.hpp> #include <node_processor/ExecUntilBreakOrContinue.hpp>
#include <string> #include <string>
#include <typeinfo>
struct INodeProcessor struct INodeProcessor
{ {
virtual void execute(ExecUntilBreakOrContinue& exec_policy) = 0; virtual void execute(ExecUntilBreakOrContinue& exec_policy) = 0;
virtual std::string describe() const = 0; std::string
typeIdName() const
{
return demangle(typeid(*this).name());
}
INodeProcessor(const INodeProcessor&) = delete; INodeProcessor(const INodeProcessor&) = delete;
......
...@@ -3,19 +3,12 @@ ...@@ -3,19 +3,12 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class IfProcessor final : public INodeProcessor class IfProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
#include <SymbolTable.hpp> #include <SymbolTable.hpp>
#include <Demangle.hpp>
template <typename Op> template <typename Op>
struct IncDecOp; struct IncDecOp;
...@@ -57,16 +55,11 @@ struct IncDecOp<language::post_plusplus> ...@@ -57,16 +55,11 @@ struct IncDecOp<language::post_plusplus>
template <typename IncDecOpT, typename DataT> template <typename IncDecOpT, typename DataT>
class IncDecExpressionProcessor final : public INodeProcessor class IncDecExpressionProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
ASTNodeDataVariant* p_value{nullptr}; ASTNodeDataVariant* p_value{nullptr};
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue&) execute(ExecUntilBreakOrContinue&)
{ {
......
...@@ -3,23 +3,16 @@ ...@@ -3,23 +3,16 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
#include <ASTNode.hpp> #include <ASTNode.hpp>
#include <SymbolTable.hpp> #include <SymbolTable.hpp>
class NameProcessor final : public INodeProcessor class NameProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
ASTNodeDataVariant* p_value{nullptr}; ASTNodeDataVariant* p_value{nullptr};
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue&) execute(ExecUntilBreakOrContinue&)
{ {
......
...@@ -3,20 +3,13 @@ ...@@ -3,20 +3,13 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class OStreamProcessor final : public INodeProcessor class OStreamProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
std::ostream& m_os; std::ostream& m_os;
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
#include <SymbolTable.hpp> #include <SymbolTable.hpp>
#include <Demangle.hpp>
template <typename Op> template <typename Op>
struct UnaryOp; struct UnaryOp;
...@@ -35,6 +33,7 @@ struct UnaryOp<language::unary_not> ...@@ -35,6 +33,7 @@ struct UnaryOp<language::unary_not>
template <typename UnaryOpT, typename ValueT, typename DataT> template <typename UnaryOpT, typename ValueT, typename DataT>
class UnaryExpressionProcessor final : public INodeProcessor class UnaryExpressionProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
PUGS_INLINE ValueT PUGS_INLINE ValueT
...@@ -44,12 +43,6 @@ class UnaryExpressionProcessor final : public INodeProcessor ...@@ -44,12 +43,6 @@ class UnaryExpressionProcessor final : public INodeProcessor
} }
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -3,19 +3,12 @@ ...@@ -3,19 +3,12 @@
#include <node_processor/INodeProcessor.hpp> #include <node_processor/INodeProcessor.hpp>
#include <Demangle.hpp>
class WhileProcessor final : public INodeProcessor class WhileProcessor final : public INodeProcessor
{ {
private:
ASTNode& m_node; ASTNode& m_node;
public: public:
std::string
describe() const
{
return demangle<decltype(*this)>();
}
void void
execute(ExecUntilBreakOrContinue& exec_policy) execute(ExecUntilBreakOrContinue& exec_policy)
{ {
......
...@@ -46,5 +46,5 @@ true; ...@@ -46,5 +46,5 @@ true;
REQUIRE(ast->children[1]->id == typeid(language::true_kw)); REQUIRE(ast->children[1]->id == typeid(language::true_kw));
REQUIRE(ast->children[2]->id == typeid(language::real)); REQUIRE(ast->children[2]->id == typeid(language::real));
REQUIRE(ast->m_node_processor->describe() == demangle<ASTNodeListProcessor>()); REQUIRE(ast->m_node_processor->typeIdName() == demangle<ASTNodeListProcessor>());
} }
...@@ -10,7 +10,7 @@ TEST_CASE("FakeProcessor", "[language]") ...@@ -10,7 +10,7 @@ TEST_CASE("FakeProcessor", "[language]")
rang::setControlMode(rang::control::Off); rang::setControlMode(rang::control::Off);
FakeProcessor fake_processor; FakeProcessor fake_processor;
REQUIRE(fake_processor.describe() == demangle<FakeProcessor>()); REQUIRE(fake_processor.typeIdName() == demangle<FakeProcessor>());
ExecUntilBreakOrContinue exec_policy; ExecUntilBreakOrContinue exec_policy;
REQUIRE_NOTHROW(fake_processor.execute(exec_policy)); REQUIRE_NOTHROW(fake_processor.execute(exec_policy));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment