Package jflex.core
Class RegExps
- java.lang.Object
-
- jflex.core.RegExps
-
public class RegExps extends java.lang.ObjectStores all rules of the specification for later access in the RegExp to NFA conversion.- Version:
- JFlex 1.9.1
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<Action>actionsthe action of a regexpprivate java.util.List<java.lang.Boolean>BOLflag if it is a BOL regexp(package private) intgen_look_countCount of how many general lookahead expressions there are.private java.util.List<java.lang.Integer>linesthe spec line in which a regexp is usedprivate java.util.List<RegExp>lookthe lookahead expressionprivate java.util.List<java.lang.Integer>look_entrythe forward DFA entry point of the lookahead expressionprivate java.util.List<RegExp>regExpsthe regexpprivate java.util.List<java.util.List<java.lang.Integer>>statesthe lexical states in which the regexp is used
-
Constructor Summary
Constructors Constructor Description RegExps()Constructor for RegExps.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddStates(int regNum, java.util.List<java.lang.Integer> newStates)addStates.voidcheckActions()checkActions.voidcheckLookAheads()checkLookAheads.voiddump()Print the list of regExps to Out.dumpvoidexpandPreClasses(java.util.Map<java.lang.Integer,IntCharSet> preclassCache, CharClasses charClasses, boolean caseless)Replace all predefined character classes with primitive IntCharSet classes.ActiongetAction(int num)getAction.intgetLine(int num)getLine.RegExpgetLookAhead(int num)getLookAhead.intgetLookEntry(int num)getLookEntry.intgetNum()getNum.RegExpgetRegExp(int num)getRegExp.java.util.List<java.lang.Integer>getStates(int num)Getter for the fieldstates.intinsert(int line, java.util.List<java.lang.Integer> stateList, RegExp regExp, Action action, java.lang.Boolean isBOL, RegExp lookAhead)insert.intinsert(java.util.List<java.lang.Integer> stateList, Action action)insert.booleanisBOL(int num)isBOL.booleanisEOF(int num)isEOF.private voidlookAheadCase(int regExpNum)Determine which case of lookahead expression regExpNum points to (if any).voidmakeCCLs(CharClasses classes, boolean caseless)Make character class partitions for all classes mentioned in the spec.intNFASize(Macros macros)NFASize.voidnormaliseCCLs(java.io.File f)Normalise all character class expressions in regexp and lookahead rules.voidnormaliseMacros(Macros m)Expand all macro calls in regexp and lookahead rules.
-
-
-
Field Detail
-
lines
private final java.util.List<java.lang.Integer> lines
the spec line in which a regexp is used
-
states
private final java.util.List<java.util.List<java.lang.Integer>> states
the lexical states in which the regexp is used
-
regExps
private java.util.List<RegExp> regExps
the regexp
-
actions
private final java.util.List<Action> actions
the action of a regexp
-
BOL
private final java.util.List<java.lang.Boolean> BOL
flag if it is a BOL regexp
-
look
private java.util.List<RegExp> look
the lookahead expression
-
look_entry
private final java.util.List<java.lang.Integer> look_entry
the forward DFA entry point of the lookahead expression
-
gen_look_count
int gen_look_count
Count of how many general lookahead expressions there are. Need 2*gen_look_count additional DFA entry points.
-
-
Method Detail
-
insert
public int insert(int line, java.util.List<java.lang.Integer> stateList, RegExp regExp, Action action, java.lang.Boolean isBOL, RegExp lookAhead)insert.
-
insert
public int insert(java.util.List<java.lang.Integer> stateList, Action action)insert.- Parameters:
stateList- aListobject.action- aActionobject.- Returns:
- a int.
-
addStates
public void addStates(int regNum, java.util.List<java.lang.Integer> newStates)addStates.- Parameters:
regNum- a int.newStates- aListobject.
-
getNum
public int getNum()
getNum.- Returns:
- a int.
-
isBOL
public boolean isBOL(int num)
isBOL.- Parameters:
num- a int.- Returns:
- a boolean.
-
getLookAhead
public RegExp getLookAhead(int num)
getLookAhead.- Parameters:
num- a int.- Returns:
- a
RegExpobject.
-
isEOF
public boolean isEOF(int num)
isEOF.- Parameters:
num- a int.- Returns:
- a boolean.
-
getStates
public java.util.List<java.lang.Integer> getStates(int num)
Getter for the fieldstates.- Parameters:
num- a int.- Returns:
- a
Listobject.
-
getRegExp
public RegExp getRegExp(int num)
getRegExp.- Parameters:
num- a int.- Returns:
- a
RegExpobject.
-
getLine
public int getLine(int num)
getLine.- Parameters:
num- a int.- Returns:
- a int.
-
getLookEntry
public int getLookEntry(int num)
getLookEntry.- Parameters:
num- a int.- Returns:
- a int.
-
checkActions
public void checkActions()
checkActions.
-
getAction
public Action getAction(int num)
getAction.- Parameters:
num- a int.- Returns:
- a
Actionobject.
-
NFASize
public int NFASize(Macros macros)
NFASize.- Parameters:
macros- aMacrosobject.- Returns:
- a int.
-
checkLookAheads
public void checkLookAheads()
checkLookAheads.
-
lookAheadCase
private void lookAheadCase(int regExpNum)
Determine which case of lookahead expression regExpNum points to (if any). Set case data in corresponding action. Increment count of general lookahead expressions for entry points of the two additional DFAs. Register DFA entry point in RegExpsNeeds to be run before adding any regexps/rules to be able to reserve the correct amount of space of lookahead DFA entry points.
- Parameters:
regExpNum- the number of the regexp in RegExps.
-
normaliseMacros
public void normaliseMacros(Macros m)
Expand all macro calls in regexp and lookahead rules.
-
normaliseCCLs
public void normaliseCCLs(java.io.File f)
Normalise all character class expressions in regexp and lookahead rules.- Parameters:
f- the spec file for error reporting
-
expandPreClasses
public void expandPreClasses(java.util.Map<java.lang.Integer,IntCharSet> preclassCache, CharClasses charClasses, boolean caseless)
Replace all predefined character classes with primitive IntCharSet classes.Assumes normalised expressions.
-
dump
public void dump()
Print the list of regExps to Out.dump
-
makeCCLs
public void makeCCLs(CharClasses classes, boolean caseless)
Make character class partitions for all classes mentioned in the spec.Assumes normalised expressions.
-
-