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 (World &world)
 
Worldworld ()
 
Stack of Maps
void push ()
 
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_arr (const Arr *arr)
 
virtual const Defrewrite_pack (const Pack *pack)
 
virtual const Defrewrite_seq (const Seq *)
 
virtual const Defrewrite_extract (const Extract *)
 
virtual const Defrewrite_hole (Hole *)
 

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()

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

Definition at line 13 of file rewrite.h.

References push(), and world().

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

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 31 of file rewrite.h.

Referenced by 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 27 of file rewrite.h.

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

◆ pop()

void mim::Rewriter::pop ( )
inline

Definition at line 23 of file rewrite.h.

Referenced by rewrite_seq().

◆ push()

void mim::Rewriter::push ( )
inline

Definition at line 22 of file rewrite.h.

Referenced by rewrite_seq(), and Rewriter().

◆ rewrite()

◆ rewrite_arr()

virtual const Def * mim::Rewriter::rewrite_arr ( const Arr * arr)
inlinevirtual

Definition at line 44 of file rewrite.h.

References rewrite_seq().

Referenced by rewrite().

◆ rewrite_extract()

const Def * mim::Rewriter::rewrite_extract ( const Extract * ex)
virtual

◆ rewrite_hole()

const Def * mim::Rewriter::rewrite_hole ( Hole * hole)
virtual

Definition at line 87 of file rewrite.cpp.

References mim::Hole::find(), rewrite(), and rewrite_mut().

Referenced by rewrite().

◆ rewrite_imm()

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

◆ rewrite_mut()

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

◆ rewrite_pack()

virtual const Def * mim::Rewriter::rewrite_pack ( const Pack * pack)
inlinevirtual

Definition at line 45 of file rewrite.h.

References rewrite_seq().

Referenced by rewrite().

◆ rewrite_seq()

◆ world()


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