MimIR 0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
mim::Rewriter Class Reference

Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map. More...

#include <mim/rewrite.h>

Inheritance diagram for mim::Rewriter:
[legend]

Public Member Functions

 Rewriter (std::unique_ptr< World > &&ptr)
 
 Rewriter (World &world)
 
void reset (std::unique_ptr< World > &&ptr)
 
void reset ()
 
Worldworld ()
 
Stack of Maps
virtual void push ()
 
virtual void pop ()
 
const Defmap (const Def *old_def, const Def *new_def)
 Map old_def to new_def and returns new_def.
 
const Deflookup (const Def *old_def)
 Lookup old_def by searching in reverse through the stack of maps.
 
rewrite

Recursively rewrite old Defs.

virtual const Defrewrite (const Def *)
 
virtual const Defrewrite_imm (const Def *)
 
virtual const Defrewrite_mut (Def *)
 
virtual const Defrewrite_stub (Def *, Def *)
 
virtual DefVec rewrite (Defs)
 
virtual const Defrewrite_imm_Seq (const Seq *seq)
 
virtual const Defrewrite_mut_Seq (Seq *seq)
 

Detailed Description

Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map.

This World may be different than the World we started with.

Definition at line 11 of file rewrite.h.

Constructor & Destructor Documentation

◆ Rewriter() [1/2]

mim::Rewriter::Rewriter ( std::unique_ptr< World > && ptr)
inline

◆ Rewriter() [2/2]

mim::Rewriter::Rewriter ( World & world)
inline

Definition at line 19 of file rewrite.h.

References push(), and world().

Member Function Documentation

◆ lookup()

const Def * mim::Rewriter::lookup ( const Def * old_def)
inline

Lookup old_def by searching in reverse through the stack of maps.

Returns
nullptr if nothing was found.

Definition at line 49 of file rewrite.h.

Referenced by rewrite(), and mim::VarRewriter::rewrite().

◆ map()

const Def * mim::Rewriter::map ( const Def * old_def,
const Def * new_def )
inline

Map old_def to new_def and returns new_def.

Returns
new_def

Definition at line 45 of file rewrite.h.

Referenced by mim::VarRewriter::add(), rewrite_imm(), mim::BetaRedPhase::rewrite_imm_App(), rewrite_mut_Seq(), and rewrite_stub().

◆ pop()

virtual void mim::Rewriter::pop ( )
inlinevirtual

Reimplemented in mim::VarRewriter.

Definition at line 41 of file rewrite.h.

Referenced by mim::VarRewriter::pop(), reset(), mim::BetaRedPhase::rewrite_imm_App(), and rewrite_mut_Seq().

◆ push()

virtual void mim::Rewriter::push ( )
inlinevirtual

◆ reset() [1/2]

void mim::Rewriter::reset ( )
inline

Definition at line 30 of file rewrite.h.

References pop(), and push().

Referenced by reset(), and mim::RWPhase::reset().

◆ reset() [2/2]

void mim::Rewriter::reset ( std::unique_ptr< World > && ptr)
inline

Definition at line 24 of file rewrite.h.

References reset().

◆ rewrite() [1/2]

◆ rewrite() [2/2]

DefVec mim::Rewriter::rewrite ( Defs ops)
virtual

Definition at line 47 of file rewrite.cpp.

References rewrite().

◆ rewrite_imm()

const Def * mim::Rewriter::rewrite_imm ( const Def * old_def)
virtual

Definition at line 26 of file rewrite.cpp.

References CODE_IMM, map(), MIM_IMM_NODE, and mim::Def::node().

Referenced by rewrite(), and mim::VarRewriter::rewrite().

◆ rewrite_imm_Seq()

const Def * mim::Rewriter::rewrite_imm_Seq ( const Seq * seq)
virtual

◆ rewrite_mut()

const Def * mim::Rewriter::rewrite_mut ( Def * old_mut)
virtual

Reimplemented in mim::VarRewriter.

Definition at line 35 of file rewrite.cpp.

References CODE_MUT, MIM_MUT_NODE, and mim::Def::node().

Referenced by rewrite(), and mim::VarRewriter::rewrite_mut().

◆ rewrite_mut_Seq()

◆ rewrite_stub()

const Def * mim::Rewriter::rewrite_stub ( Def * old_mut,
Def * new_mut )
virtual

◆ world()


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