Class Emitter


  • public final class Emitter
    extends java.lang.Object
    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.8.2
    • Field Detail

      • JAVADOC_COMMENT_AND_MAYBE_ANNOTATIONS_PATTERN

        private static final java.util.regex.Pattern JAVADOC_COMMENT_AND_MAYBE_ANNOTATIONS_PATTERN
      • inputFile

        private final java.io.File inputFile
      • outputFileName

        final java.lang.String outputFileName
      • out

        private final java.io.PrintWriter out
      • dfa

        private final DFA dfa
      • isTransition

        private boolean[] isTransition
      • rowMap

        private int[] rowMap
      • rowKilled

        private boolean[] rowKilled
      • numCols

        private int numCols
      • colMap

        private int[] colMap
      • colKilled

        private boolean[] colKilled
      • actionTable

        private final java.util.Map<Action,​java.lang.Integer> actionTable
        maps actions to their switch label
      • visibility

        private final java.lang.String visibility
      • eofCode

        private java.lang.String eofCode
      • eofThrow

        private java.lang.String eofThrow
    • Constructor Detail

      • Emitter

        Emitter​(java.lang.String outputFileName,
                java.io.File inputFile,
                LexParse parser,
                DFA dfa,
                java.io.PrintWriter writer)
        Emits the java code.
        Parameters:
        inputFile - input grammar.
        parser - a LexParse.
        dfa - a DFA.
        writer - output file.
    • Method Detail

      • getBaseName

        static java.lang.String getBaseName​(java.lang.String className)
        Computes base name of the class name. Needs to take into account generics.
        Parameters:
        className - Class name for which to construct the base name
      • normalize

        public static java.io.File normalize​(java.lang.String name,
                                             java.io.File input)
        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 file
        input - 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

        private void println​(java.lang.String line)
      • println

        private void println​(int i)
      • print

        private void print​(java.lang.String line)
      • 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​(java.lang.String functionName)
      • emitNoMatch

        private void emitNoMatch()
      • emitNextInput

        private void emitNextInput()
      • sourceFileString

        public static java.lang.String sourceFileString​(java.io.File file)
      • emitHeader

        private void emitHeader()
      • emitUserCode

        private void emitUserCode()
      • emitClassName

        private void emitClassName()
      • endsWithJavadoc

        static boolean endsWithJavadoc​(java.lang.CharSequence usercode)
        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()
      • emitCharMapArrayUnPacked

        private void emitCharMapArrayUnPacked()
      • mapColMap

        private void mapColMap​(int[] blocks)
        Performs an in-place update to map the colMap translation over the char classes in the second-level cmap table.
      • emitCharMapTables

        private void emitCharMapTables()
        Emits two-level character translation tables. The translation is from raw input codepoint to the column in the generated DFA table.

        For maxCharCode < 256, a single-level unpacked array is used instead.

      • 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​(java.lang.String functionName)
      • emitCMapAccess

        private void emitCMapAccess()
      • emitGetRowMapNext

        private void emitGetRowMapNext()
      • escapify

        private static java.lang.String escapify​(java.lang.String s)
        Escapes all " ' \ tabs and newlines
        Parameters:
        s - The string to escape
        Returns:
        The escaped string
      • emitActionTable

        private 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
      • emitVarDefs

        private void emitVarDefs()
        Emit yychar, yycolumn, zzAtBOL, zzEOFDone with warning suppression when needed.
      • emit

        public void emit()
        Main Emitter method.