|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--kmy.regex.compiler.RMachine | +--kmy.regex.jvm.RJavaClassMachine
This class is RMachine that compiles regex instructions into JVM bytecode.
Inner Class Summary | |
(package private) static class |
RJavaClassMachine.Label
|
(package private) static class |
RJavaClassMachine.Loader
|
Field Summary | |
private RLocalAllocator |
allocator
|
(package private) java.lang.String |
charArrArrType
|
(package private) java.lang.String |
charArrType
|
(package private) java.lang.String |
charType
|
(package private) java.lang.Class |
compiledClass
|
(package private) java.lang.String |
compiledFrom
|
(package private) static int |
counter
|
(package private) static java.lang.Object |
counterLock
|
private RJavaClassCustomizer |
customizer
|
(package private) boolean |
embed
|
(package private) boolean |
embedSearch
|
(package private) int |
extCells
|
(package private) int[] |
extVarRegs
|
(package private) AbstractMark |
failMark
|
(package private) int |
flags
|
(package private) CodeGenerator |
gen
|
static int |
I_BEGIN
|
static int |
I_CELLS
|
static int |
I_END
|
static int |
I_FORKPTR
|
static int |
I_FORKS
|
static int |
I_HEAD
|
static int |
I_MAXSTART
|
static int |
I_START
|
static int |
I_STRING
|
(package private) int |
initStackDepth
|
(package private) boolean |
loadClass
|
(package private) static RJavaClassMachine.Loader |
loader
|
(package private) AbstractMark |
matchFailedMark
|
(package private) AbstractMark |
matchSucceededMark
|
(package private) int |
maxLength
|
(package private) int |
maxLocalVariable
|
(package private) int |
mfHeadDecrement
|
(package private) int |
mfMinCount
|
(package private) AbstractMark |
mfSaveFailMark
|
(package private) AbstractMark |
mfStartMark
|
(package private) int |
minLength
|
private static java.lang.Integer |
MINUS_ONE
|
(package private) boolean |
noRefiller
|
static int |
NVARS
|
private static java.lang.Integer |
ONE
|
(package private) AbstractMark |
reallocMark
|
(package private) static java.lang.String |
refillerClass
|
(package private) static java.lang.String |
refillerType
|
(package private) AbstractMark |
refillMark
|
(package private) static java.lang.String |
refillSignature
|
(package private) boolean |
reportPosition
|
(package private) boolean |
saveBytecode
|
(package private) AbstractMark |
saveMark
|
(package private) AbstractMark |
startMark
|
(package private) java.lang.String |
stringRep
|
(package private) static java.lang.String |
stubClass
|
(package private) java.util.Vector |
switchTable
|
(package private) java.lang.String |
thisClass
|
(package private) java.lang.String |
thisType
|
private static java.lang.Integer |
THREE
|
private static java.lang.Integer |
TWO
|
(package private) int |
V_BEGIN
|
(package private) int |
V_CELLS
|
(package private) int |
V_END
|
(package private) int |
V_FORKPTR
|
(package private) int |
V_FORKS
|
(package private) int |
V_HEAD
|
(package private) int |
V_HEADINC
|
(package private) int |
V_MAXSTART
|
(package private) int |
V_MFCOUNT
|
(package private) int |
V_MFHEAD
|
(package private) int |
V_REFILLER
|
(package private) int |
V_RET1
|
(package private) int |
V_START
|
(package private) int |
V_STRING
|
(package private) int |
V_TMP1
|
(package private) int |
varCells
|
(package private) java.util.Hashtable |
vars
|
private static java.lang.Integer |
ZERO
|
Fields inherited from class kmy.regex.compiler.RMachine |
EXT_CONDJUMP,
EXT_HINT,
EXT_MULTIFORK,
EXT_SHIFTTBL,
extensions,
FLAG_DOT_IS_ANY,
HINT_CHAR_STAR_HEAD,
HINT_END_ANCHORED,
HINT_START_ANCHORED |
Fields inherited from interface kmy.regex.tree.CharClassCodes |
CLASS_ALL,
CLASS_DISABLED,
CLASS_LETTER,
CLASS_LOWERCASE,
CLASS_NONE,
CLASS_NONLETTER,
CLASS_NONLOWERCASE,
CLASS_NONUPPERCASE,
CLASS_UPPERCASE |
Constructor Summary | |
RJavaClassMachine()
|
Method Summary | |
void |
assert(char[] constStr)
|
void |
assert(int charClass,
char[] ranges)
Make sure that current character belongs to the given character class. |
void |
assert(java.lang.String varName,
boolean picked)
|
void |
boundary(int type)
Check if current position is on the certain type of boundary given by. |
private void |
checkSize(int n)
|
void |
condJump(char[] ranges,
RLabel label)
Jump if char is NOT in range |
void |
condJump(char c,
RLabel label)
Jump if char is NOT one that is given. |
void |
condJump(int atLeast,
int atMost,
RLabel label)
Jump if less then atLeast or more then atMost chars left. |
void |
decfail(RVariable var)
|
void |
decjump(RVariable var,
RLabel label)
|
void |
embed(boolean search,
CodeGenerator codeGen,
RLocalAllocator alloc,
int[] commVar,
int[] extVars,
AbstractMark fail,
AbstractMark success)
|
void |
fail()
|
void |
finish()
|
void |
forget(RVariable var)
|
void |
fork(RLabel forkLabel)
Add a fork record to backtracing stack. |
private void |
genRealloc()
|
java.lang.String |
getClassName()
|
int |
getExtVariableHandle(java.lang.String var)
|
int |
getNVars()
|
boolean |
getReportPosition()
|
boolean |
getSaveBytecode()
|
int |
getVariableHandle(java.lang.String var,
boolean begin)
|
void |
hardAssign(RVariable v,
int value)
|
void |
hint(int flags,
int minLength,
int maxLength)
|
void |
init()
|
void |
jump(RLabel label)
|
private void |
jumpIfInRange(char[] ranges,
AbstractMark inRange,
AbstractMark notInRange)
|
Regex |
makeRegex()
|
void |
mark(RLabel label)
Makes the given label to refer to the next RMachine instruction. |
private void |
maskJumpIfInRange(char[] ranges,
int first,
int last,
AbstractMark inRange,
AbstractMark notInRange)
|
void |
mfEnd(int maxCount)
maxCount got minCount subtracted from it! |
void |
mfStart(int headDecrement,
int minCount)
|
RLabel |
newLabel()
Creates a new RMachine label. |
RVariable |
newTmpVar(int init)
Creates a new RMachine temporary variable. |
RVariable |
newVar(java.lang.String name,
boolean begin)
Creates a new RMachine named variable. |
void |
pick(RVariable v)
Store current character position (in the main buffer) into a given variable. |
private void |
refillIfHaveTo(AbstractMark refilled)
|
private void |
refillIfHaveTo(int op,
AbstractMark refilled,
AbstractMark onFail)
|
private void |
saveFields()
|
void |
setClassName(java.lang.String name)
|
void |
setCodeGenerator(CodeGenerator gen)
|
void |
setCustomizer(RJavaClassCustomizer c)
|
void |
setLoadClass(boolean needToLoadClass)
|
void |
setNoRefiller(boolean noRefiller)
|
void |
setReportPosition(boolean b)
|
void |
setSaveBytecode(boolean b)
|
void |
shiftTable(boolean beginning,
int charsAhead,
char[] chars,
int[] shifts)
|
private void |
simpleJumpIfInRange(char[] ranges,
AbstractMark inRange,
AbstractMark notInRange)
|
private void |
simpleLocalAlloc()
|
void |
skip()
Increment current position by 1 (skip a character). |
void |
tellName(java.lang.String name)
Provides string representation of this regular expression. |
void |
tellPosition(int pos)
Informs RMachine about current character position in the regex. |
java.util.Enumeration |
variables()
|
Methods inherited from class kmy.regex.compiler.RMachine |
getExtensions,
setExtensions |
Methods inherited from class java.lang.Object |
|
Field Detail |
java.lang.String stringRep
java.util.Hashtable vars
int varCells
int extCells
int[] extVarRegs
int minLength
int maxLength
int flags
CodeGenerator gen
java.util.Vector switchTable
AbstractMark reallocMark
AbstractMark failMark
AbstractMark refillMark
AbstractMark startMark
AbstractMark saveMark
AbstractMark mfStartMark
AbstractMark mfSaveFailMark
int mfHeadDecrement
int mfMinCount
AbstractMark matchFailedMark
AbstractMark matchSucceededMark
int initStackDepth
int V_HEAD
int V_STRING
int V_CELLS
int V_FORKS
int V_FORKPTR
int V_END
int V_REFILLER
int V_RET1
int V_TMP1
int V_MFCOUNT
int V_MFHEAD
int V_HEADINC
int V_START
int V_BEGIN
int V_MAXSTART
public static int I_HEAD
public static int I_STRING
public static int I_CELLS
public static int I_FORKS
public static int I_FORKPTR
public static int I_BEGIN
public static int I_START
public static int I_END
public static int I_MAXSTART
public static int NVARS
static java.lang.Object counterLock
static int counter
static RJavaClassMachine.Loader loader
static java.lang.String refillSignature
static java.lang.String stubClass
static java.lang.String refillerClass
static java.lang.String refillerType
java.lang.String charType
java.lang.String thisClass
java.lang.String thisType
java.lang.String charArrType
java.lang.String charArrArrType
boolean saveBytecode
boolean loadClass
java.lang.Class compiledClass
java.lang.String compiledFrom
boolean embedSearch
boolean embed
boolean noRefiller
boolean reportPosition
private static java.lang.Integer ZERO
private static java.lang.Integer ONE
private static java.lang.Integer TWO
private static java.lang.Integer THREE
private static java.lang.Integer MINUS_ONE
int maxLocalVariable
private RJavaClassCustomizer customizer
private RLocalAllocator allocator
Constructor Detail |
public RJavaClassMachine()
Method Detail |
private void simpleLocalAlloc()
public void setNoRefiller(boolean noRefiller)
public void setCustomizer(RJavaClassCustomizer c)
public void setCodeGenerator(CodeGenerator gen)
public void setClassName(java.lang.String name)
public java.lang.String getClassName()
public void setLoadClass(boolean needToLoadClass)
public void setSaveBytecode(boolean b)
public boolean getSaveBytecode()
public void setReportPosition(boolean b)
public boolean getReportPosition()
public int getVariableHandle(java.lang.String var, boolean begin)
public java.util.Enumeration variables()
public int getExtVariableHandle(java.lang.String var)
public void embed(boolean search, CodeGenerator codeGen, RLocalAllocator alloc, int[] commVar, int[] extVars, AbstractMark fail, AbstractMark success)
public void init()
public void tellPosition(int pos)
private void checkSize(int n) throws java.io.IOException
private void saveFields() throws java.io.IOException
private void simpleJumpIfInRange(char[] ranges, AbstractMark inRange, AbstractMark notInRange) throws java.io.IOException
private void maskJumpIfInRange(char[] ranges, int first, int last, AbstractMark inRange, AbstractMark notInRange) throws java.io.IOException
private void jumpIfInRange(char[] ranges, AbstractMark inRange, AbstractMark notInRange) throws java.io.IOException
private void refillIfHaveTo(AbstractMark refilled) throws java.io.IOException
private void refillIfHaveTo(int op, AbstractMark refilled, AbstractMark onFail) throws java.io.IOException
private void genRealloc() throws java.io.IOException
public void finish()
public Regex makeRegex()
public int getNVars()
public void tellName(java.lang.String name)
public RVariable newVar(java.lang.String name, boolean begin)
public RLabel newLabel()
public RVariable newTmpVar(int init)
init
- initial value for the variablepublic void hardAssign(RVariable v, int value)
public void mark(RLabel label)
public void pick(RVariable v)
public void fork(RLabel forkLabel)
public void skip()
public void boundary(int type)
public void assert(int charClass, char[] ranges)
public void assert(char[] constStr)
public void assert(java.lang.String varName, boolean picked)
public void decjump(RVariable var, RLabel label)
public void decfail(RVariable var)
public void forget(RVariable var)
public void jump(RLabel label)
public void fail()
public void hint(int flags, int minLength, int maxLength)
public void mfStart(int headDecrement, int minCount)
public void mfEnd(int maxCount)
public void condJump(char[] ranges, RLabel label)
public void condJump(int atLeast, int atMost, RLabel label)
public void condJump(char c, RLabel label)
public void shiftTable(boolean beginning, int charsAhead, char[] chars, int[] shifts)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |