Package jflex
Class Emitter
java.lang.Object
jflex.Emitter
This class manages the actual code generation, putting the scanner together, filling in skeleton
sections etc.
Table compression, String packing etc. is also done here.
- Version:
- JFlex 1.7.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionmaps actions to their switch labelprivate boolean[]private int[]private DFAprivate static final intprivate Fileprivate CharClassInterval[]private boolean[]private static final Patternprivate static final intprivate intprivate intprivate PrintWriterprivate LexParseprivate boolean[]private int[]private LexScanprivate Skeletonprivate String -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidemit()Main Emitter method.private voidvoidemitActionTable.private voidprivate intReturns the number of elements in the packed char map array, or zero if the char map array will be not be packed.private voidprivate voidemitCharMapInitFunction(int packedCharMapPairs) private voidprivate voidprivate voidprivate voidemitConstructorDecl(boolean printCtorArgs) private voidprivate voidprivate voidprivate voidprivate voidprivate voidprivate voidprivate voidprivate voidprivate voidemitMain()private voidprivate voidprivate voidprivate voidprivate voidstatic booleanendsWithJavadoc(StringBuilder usercode) Try to find out if user code ends with a javadoc comment, maybe followed by one or more annotationsprivate StringEscapes all " ' \ tabs and newlinesprivate voidstatic StringgetBaseName(String className) Computes base name of the class name.private booleanstatic FileConstructs a file in Options.getDir() or in the same directory as another file.private voidprint(int i) private voidprint(int i, int tab) private voidprivate voidprintln()private voidprintln(int i) private voidprivate voidprintUC(int c) Print number as octal/unicode escaped string character.private voidprivate voidprivate voidSet up EOF code section according to scanner.eofcode
-
Field Details
-
JAVADOC_COMMENT_AND_MAYBE_ANNOTATIONS_PATTERN
-
FINAL
private static final int FINAL- See Also:
-
NOLOOK
private static final int NOLOOK- See Also:
-
inputFile
-
out
-
skel
-
scanner
-
parser
-
dfa
-
isTransition
private boolean[] isTransition -
numRows
private int numRows -
rowMap
private int[] rowMap -
rowKilled
private boolean[] rowKilled -
numCols
private int numCols -
colMap
private int[] colMap -
colKilled
private boolean[] colKilled -
actionTable
maps actions to their switch label -
intervals
-
visibility
-
-
Constructor Details
-
Emitter
Emits the java code.- Parameters:
inputFile- input grammar.parser- aLexParse.dfa- aDFA.- Throws:
IOException- if any.
-
-
Method Details
-
getBaseName
Computes base name of the class name. Needs to take into account generics.- Parameters:
className- Class name for which to construct the base name- Returns:
- the
- See Also:
-
normalize
Constructs a file in Options.getDir() or in the same directory as another file. Makes a backup if the file already exists.- Parameters:
name- the name (without path) of the fileinput- fall back location if path = null (expected to be a file in the directory to write to)- Returns:
- The constructed File
-
println
private void println() -
println
-
println
private void println(int i) -
print
-
print
private void print(int i) -
print
private void print(int i, int tab) -
hasGenLookAhead
private boolean hasGenLookAhead() -
emitLookBuffer
private void emitLookBuffer() -
emitScanError
private void emitScanError() -
emitMain
private void emitMain() -
emitNoMatch
private void emitNoMatch() -
emitNextInput
private void emitNextInput() -
emitHeader
private void emitHeader() -
emitUserCode
private void emitUserCode() -
emitClassName
private void emitClassName() -
endsWithJavadoc
Try to find out if user code ends with a javadoc comment, maybe followed by one or more annotations- Parameters:
usercode- the user code- Returns:
- true if it ends with a javadoc comment and zero or more annotations
-
emitLexicalStates
private void emitLexicalStates() -
emitDynamicInit
private void emitDynamicInit() -
emitCharMapInitFunction
private void emitCharMapInitFunction(int packedCharMapPairs) -
emitCharMapArrayUnPacked
private void emitCharMapArrayUnPacked() -
emitCharMapArray
private int emitCharMapArray()Returns the number of elements in the packed char map array, or zero if the char map array will be not be packed.This will be more than intervals.length if the count for any of the values is more than 0xFFFF, since the number of char map array entries per value is ceil(count / 0xFFFF)
-
printUC
private void printUC(int c) Print number as octal/unicode escaped string character.- Parameters:
c- the value to print
-
emitRowMapArray
private void emitRowMapArray() -
emitAttributes
private void emitAttributes() -
emitClassCode
private void emitClassCode() -
emitConstructorDecl
private void emitConstructorDecl() -
emitConstructorDecl
private void emitConstructorDecl(boolean printCtorArgs) -
emitCtorArgs
private void emitCtorArgs() -
emitDoEOF
private void emitDoEOF() -
emitLexFunctHeader
private void emitLexFunctHeader() -
emitGetRowMapNext
private void emitGetRowMapNext() -
escapify
Escapes all " ' \ tabs and newlines- Parameters:
s- The string to escape- Returns:
- The escaped string
-
emitActionTable
public void emitActionTable()emitActionTable. -
emitActions
private void emitActions() -
emitEOFVal
private void emitEOFVal() -
findActionStates
private void findActionStates() -
reduceColumns
private void reduceColumns() -
reduceRows
private void reduceRows() -
setupEOFCode
private void setupEOFCode()Set up EOF code section according to scanner.eofcode -
emit
public void emit()Main Emitter method.
-