# Class: com.pnfsoftware.jeb.core.units.code.android.ir.compiler.DPatternCompiler
- Super class: `java.lang.Object`

IR expression pattern compiler. \(Do not confuse this class with the IR compiler\!\)  

  This compiler takes a pattern as a string and compiles it to a pattern. A pattern is essentially  is a [template tree](com.pnfsoftware.jeb.core.units.code.android.ir.compiler.INode.md).  

  Rules: see [DPattern](com.pnfsoftware.jeb.core.units.code.android.ir.compiler.DPatternCompiler.DPattern.md).

## Constructor: DPatternCompiler
- parameter: `flags`, type: `int`

Description: Create a pattern compiler.
parameter: flags: compiler flags

## Constructor: DPatternCompiler (no-arg)

Description: Create a pattern compiler using default settings.

## Static Final Field: DEFAULT_COMPILER
Type: `com.pnfsoftware.jeb.core.units.code.android.ir.compiler.DPatternCompiler`
Description: A static pattern compiler using default settings \(no flags\).

## Static Final Field: FLAG_INVALIDATE_DFA
Type: `int`

Constant value: `256`
Description: This client\-side flag indicates that a successfully generated output \(replacing a matched  input\) should be followed by the invalidation of all data\-flow analysis.  

  This flag is not honored by the matcher. It is up to the client to take action and honor this  flag on a successful matching.

## Static Final Field: FLAG_NO_VARIABLE_LEAF_OVERLAP
Type: `int`

Constant value: `1`
Description: This flag is used to indicate that input patterns leaves matching EVar should not map to  overlapped IR elements.  

  Example:   

```

 Pattern: V0 = V1
 IR:      r5 = r5
 
```
   If this flag is specified, the pattern will not match on the IR since leaves ids 0 and 1  would map to the same underlying IR EVar r5.

## Static Final Field: FLAG_SAME_BITSIZE_FOR_LEAVES
Type: `int`

Constant value: `2`
Description: This flag indicates that all leaves in the input pattern must have the same bitsize.  

  If some leaves in the pattern have specified \(required\) bitsizes, then those bitsizes must be  the same and other leaves with unspecified bitsizes must have that same bitsize as well, else  matching will fail.

## Method: compile
- parameter: `pattern`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.compiler.DPatternCompiler.DPattern`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.compiler.DPatternCompiler.DPattern`

Description: Compile an IR pattern.
parameter: pattern: a non\-compiled pattern; attempting to compile an already\-compiled pattern will             raise an [IllegalStateException](java.lang.IllegalStateException)
return: this pattern, compiled

## Method: getFlags
- return type: `int`

Description: Retrieve the compiler flags.
return: the compiler flags

