Logic/Concepts.h: Add combinational logic expr classes

This commit is contained in:
2025-09-02 13:04:54 -04:00
parent 6362298016
commit d36d03dcc3
2 changed files with 106 additions and 2 deletions
+65
View File
@@ -0,0 +1,65 @@
#ifndef _LOGIC_H
#define _LOGIC_H
#include <memory>
#include <vector>
namespace smo {
namespace logic {
class ExpressionPart
{
};
class Operator
: public ExpressionPart
{
};
class OperatorAnd
: public Operator
{
};
class OperatorOr
: public Operator
{
};
class OperatorNot
: public Operator
{
};
class Operand
: public ExpressionPart
{
};
class UnaryExpression
: public ExpressionPart
{
public:
UnaryExpression(Operator &op, std::shared_ptr<Operand> &operand)
: parts(std::make_pair(op, operand))
{}
public:
std::pair<Operator, std::shared_ptr<Operand>> parts;
};
// Expressions can be chained as parts of a larger expression
class Expression
: public ExpressionPart
{
public:
// This will eventually take in some data to be evaluated for a match.
virtual bool evaluate(void) = 0;
public:
std::vector<std::shared_ptr<ExpressionPart>> parts;
};
} // namespace logic
} // namespace smo
#endif