FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
freetensor::MatchVisitor Class Reference

#include <match_ast.h>

Inheritance diagram for freetensor::MatchVisitor:
Inheritance graph
[legend]
Collaboration diagram for freetensor::MatchVisitor:
Collaboration graph
[legend]

Public Member Functions

 MatchVisitor (const AST &instance)
 
bool isMatched () const
 
bool matchName (const std::string &thisName, const std::string &otherName)
 
void clearName (const std::string &thisName)
 
- Public Member Functions inherited from freetensor::Visitor
virtual ~Visitor ()
 
virtual void operator() (const AST &op) final
 

Protected Member Functions

void visit (const StmtSeq &op) override
 
void visit (const VarDef &op) override
 
void visit (const Alloc &op) override
 
void visit (const Free &op) override
 
void visit (const Var &op) override
 
void visit (const Store &op) override
 
void visit (const Load &op) override
 
void visit (const ReduceTo &op) override
 
void visit (const IntConst &op) override
 
void visit (const FloatConst &op) override
 
void visit (const BoolConst &op) override
 
void visit (const Add &op) override
 
void visit (const Sub &op) override
 
void visit (const Mul &op) override
 
void visit (const RealDiv &op) override
 
void visit (const FloorDiv &op) override
 
void visit (const CeilDiv &op) override
 
void visit (const RoundTowards0Div &op) override
 
void visit (const Mod &op) override
 
void visit (const Remainder &op) override
 
void visit (const Min &op) override
 
void visit (const Max &op) override
 
void visit (const LT &op) override
 
void visit (const LE &op) override
 
void visit (const GT &op) override
 
void visit (const GE &op) override
 
void visit (const EQ &op) override
 
void visit (const NE &op) override
 
void visit (const LAnd &op) override
 
void visit (const LOr &op) override
 
void visit (const LNot &op) override
 
void visit (const Sqrt &op) override
 
void visit (const Exp &op) override
 
void visit (const Ln &op) override
 
void visit (const Square &op) override
 
void visit (const Sigmoid &op) override
 
void visit (const Sin &op) override
 
void visit (const Cos &op) override
 
void visit (const Tan &op) override
 
void visit (const Tanh &op) override
 
void visit (const Abs &op) override
 
void visit (const Floor &op) override
 
void visit (const Ceil &op) override
 
void visit (const Unbound &op) override
 
void visit (const IfExpr &op) override
 
void visit (const Cast &op) override
 
void visit (const For &op) override
 
void visit (const If &op) override
 
void visit (const Assert &op) override
 
void visit (const Intrinsic &op) override
 
void visit (const Eval &op) override
 
void visit (const MatMul &op) override
 
void visit (const MarkVersion &op) override
 
void visit (const LoadAtVersion &op) override
 
- Protected Member Functions inherited from freetensor::Visitor
virtual void visitExpr (const Expr &op)
 
virtual void visitStmt (const Stmt &op)
 
virtual void visit (const Any &op)
 
virtual void visit (const AnyExpr &op)
 
virtual void visit (const Func &op)
 
virtual void visit (const StmtSeq &op)
 
virtual void visit (const VarDef &op)
 
virtual void visit (const Var &op)
 
virtual void visit (const Store &op)
 
virtual void visit (const Alloc &op)
 
virtual void visit (const Free &op)
 
virtual void visit (const Load &op)
 
virtual void visit (const ReduceTo &op)
 
virtual void visit (const IntConst &op)
 
virtual void visit (const FloatConst &op)
 
virtual void visit (const BoolConst &op)
 
virtual void visit (const Add &op)
 
virtual void visit (const Sub &op)
 
virtual void visit (const Mul &op)
 
virtual void visit (const RealDiv &op)
 
virtual void visit (const FloorDiv &op)
 
virtual void visit (const CeilDiv &op)
 
virtual void visit (const RoundTowards0Div &op)
 
virtual void visit (const Mod &op)
 
virtual void visit (const Remainder &op)
 
virtual void visit (const Min &op)
 
virtual void visit (const Max &op)
 
virtual void visit (const LT &op)
 
virtual void visit (const LE &op)
 
virtual void visit (const GT &op)
 
virtual void visit (const GE &op)
 
virtual void visit (const EQ &op)
 
virtual void visit (const NE &op)
 
virtual void visit (const LAnd &op)
 
virtual void visit (const LOr &op)
 
virtual void visit (const LNot &op)
 
virtual void visit (const Sqrt &op)
 
virtual void visit (const Exp &op)
 
virtual void visit (const Ln &op)
 
virtual void visit (const Square &op)
 
virtual void visit (const Sigmoid &op)
 
virtual void visit (const Sin &op)
 
virtual void visit (const Cos &op)
 
virtual void visit (const Tan &op)
 
virtual void visit (const Tanh &op)
 
virtual void visit (const Abs &op)
 
virtual void visit (const Floor &op)
 
virtual void visit (const Ceil &op)
 
virtual void visit (const Unbound &op)
 
virtual void visit (const For &op)
 
virtual void visit (const If &op)
 
virtual void visit (const Assert &op)
 
virtual void visit (const Assume &op)
 
virtual void visit (const IfExpr &op)
 
virtual void visit (const Cast &op)
 
virtual void visit (const Intrinsic &op)
 
virtual void visit (const Eval &op)
 
virtual void visit (const MatMul &op)
 
virtual void visit (const MarkVersion &op)
 
virtual void visit (const LoadAtVersion &op)
 

Additional Inherited Members

- Public Types inherited from freetensor::Visitor
typedef void ExprRetType
 
typedef void StmtRetType
 

Detailed Description

Check whether an AST strictly matches a pattern

Names of the variables can be different between the two ASTs, but there must be an one-to-one mapping

MatchVisitor can tolerate some difference such as a + b will match b + a, but more complex ones such as (a - b) + c does not match a - (b - c)

Constructor & Destructor Documentation

◆ MatchVisitor()

freetensor::MatchVisitor::MatchVisitor ( const AST instance)
inline

Member Function Documentation

◆ clearName()

void freetensor::MatchVisitor::clearName ( const std::string &  thisName)

◆ isMatched()

bool freetensor::MatchVisitor::isMatched ( ) const
inline

◆ matchName()

bool freetensor::MatchVisitor::matchName ( const std::string &  thisName,
const std::string &  otherName 
)

◆ visit() [1/54]

void freetensor::MatchVisitor::visit ( const Abs op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [2/54]

void freetensor::MatchVisitor::visit ( const Add op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [3/54]

void freetensor::MatchVisitor::visit ( const Alloc op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [4/54]

void freetensor::MatchVisitor::visit ( const Assert op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [5/54]

void freetensor::MatchVisitor::visit ( const BoolConst op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [6/54]

void freetensor::MatchVisitor::visit ( const Cast op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [7/54]

void freetensor::MatchVisitor::visit ( const Ceil op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [8/54]

void freetensor::MatchVisitor::visit ( const CeilDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [9/54]

void freetensor::MatchVisitor::visit ( const Cos op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [10/54]

void freetensor::MatchVisitor::visit ( const EQ op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [11/54]

void freetensor::MatchVisitor::visit ( const Eval op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [12/54]

void freetensor::MatchVisitor::visit ( const Exp op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [13/54]

void freetensor::MatchVisitor::visit ( const FloatConst op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [14/54]

void freetensor::MatchVisitor::visit ( const Floor op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [15/54]

void freetensor::MatchVisitor::visit ( const FloorDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [16/54]

void freetensor::MatchVisitor::visit ( const For op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [17/54]

void freetensor::MatchVisitor::visit ( const Free op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [18/54]

void freetensor::MatchVisitor::visit ( const GE op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [19/54]

void freetensor::MatchVisitor::visit ( const GT op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [20/54]

void freetensor::MatchVisitor::visit ( const If op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [21/54]

void freetensor::MatchVisitor::visit ( const IfExpr op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [22/54]

void freetensor::MatchVisitor::visit ( const IntConst op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [23/54]

void freetensor::MatchVisitor::visit ( const Intrinsic op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [24/54]

void freetensor::MatchVisitor::visit ( const LAnd op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [25/54]

void freetensor::MatchVisitor::visit ( const LE op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [26/54]

void freetensor::MatchVisitor::visit ( const Ln op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [27/54]

void freetensor::MatchVisitor::visit ( const LNot op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [28/54]

void freetensor::MatchVisitor::visit ( const Load op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [29/54]

void freetensor::MatchVisitor::visit ( const LoadAtVersion op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [30/54]

void freetensor::MatchVisitor::visit ( const LOr op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [31/54]

void freetensor::MatchVisitor::visit ( const LT op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [32/54]

void freetensor::MatchVisitor::visit ( const MarkVersion op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [33/54]

void freetensor::MatchVisitor::visit ( const MatMul op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [34/54]

void freetensor::MatchVisitor::visit ( const Max op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [35/54]

void freetensor::MatchVisitor::visit ( const Min op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [36/54]

void freetensor::MatchVisitor::visit ( const Mod op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [37/54]

void freetensor::MatchVisitor::visit ( const Mul op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [38/54]

void freetensor::MatchVisitor::visit ( const NE op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [39/54]

void freetensor::MatchVisitor::visit ( const RealDiv op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [40/54]

void freetensor::MatchVisitor::visit ( const ReduceTo op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [41/54]

void freetensor::MatchVisitor::visit ( const Remainder op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [42/54]

void freetensor::MatchVisitor::visit ( const RoundTowards0Div op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [43/54]

void freetensor::MatchVisitor::visit ( const Sigmoid op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [44/54]

void freetensor::MatchVisitor::visit ( const Sin op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [45/54]

void freetensor::MatchVisitor::visit ( const Sqrt op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [46/54]

void freetensor::MatchVisitor::visit ( const Square op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [47/54]

void freetensor::MatchVisitor::visit ( const StmtSeq op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [48/54]

void freetensor::MatchVisitor::visit ( const Store op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [49/54]

void freetensor::MatchVisitor::visit ( const Sub op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [50/54]

void freetensor::MatchVisitor::visit ( const Tan op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [51/54]

void freetensor::MatchVisitor::visit ( const Tanh op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [52/54]

void freetensor::MatchVisitor::visit ( const Unbound op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [53/54]

void freetensor::MatchVisitor::visit ( const Var op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.

◆ visit() [54/54]

void freetensor::MatchVisitor::visit ( const VarDef op)
overrideprotectedvirtual

Reimplemented from freetensor::Visitor.


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