java.lang.Object | |
↳ | com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.compiler.EExpressionMatcher |
Match an IR expression against an IR template.
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
public static boolean | verbose |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
EExpressionMatcher(INode template, Map<Integer, Object> initmap)
Create an IRE matcher.
| |||||||||||
EExpressionMatcher(INode template)
Create an IRE matcher.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Map<IEGeneric, Integer> | getIRDepthsMap() | ||||||||||
Map<Integer, Object> |
getMatchMap()
Retrieve the match map:
- Key= leaf id - Value= matched IRE (IEgeneric) for leaves or operator (OperationType) for operator groups. | ||||||||||
boolean | isAllowDeepAssociativity() | ||||||||||
boolean | isMatch(IEGeneric e) | ||||||||||
void | reset() | ||||||||||
void | reset(boolean keepMatches) | ||||||||||
void |
setAllowDeepAssociativity(boolean allowDeepAssociativity)
Use an operator's associativity to achieve better matching.
| ||||||||||
void | setIRDepthsMap(Map<IEGeneric, Integer> IRDepthsMap) | ||||||||||
String | toString() |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
Create an IRE matcher.
template | the template to match an expression against |
---|---|
initmap | an optional, initial match map |
Create an IRE matcher.
template | the template to match an expression against |
---|
Retrieve the match map:
- Key= leaf id
- Value= matched IRE (IEgeneric) for leaves or operator (OperationType) for operator
groups.
Use an operator's associativity to achieve better matching. For example, matching
V0 * (#1 + $2)
on r0 * ((r1 + 4) + r2)
could match on:
V0 = r0 #1 = 4 $2 = (r1 + r2)even if (r1 + r2) does not exists in inner expression.