Class Emitter

java.lang.Object
jflex.generator.Emitter

public final class Emitter extends 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 Details

    • JAVADOC_COMMENT_AND_MAYBE_ANNOTATIONS_PATTERN

      private static final Pattern JAVADOC_COMMENT_AND_MAYBE_ANNOTATIONS_PATTERN
    • FINAL

      private static final int FINAL
      See Also:
    • NOLOOK

      private static final int NOLOOK
      See Also:
    • inputFile

      private final File inputFile
    • outputFileName

      final String outputFileName
    • out

      private final PrintWriter out
    • skel

      private final Skeleton skel
    • scanner

      private final AbstractLexScan scanner
    • parser

      private final LexParse parser
    • 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 Map<Action,Integer> actionTable
      maps actions to their switch label
    • visibility

      private final String visibility
    • eofCode

      private String eofCode
    • eofThrow

      private String eofThrow
  • Constructor Details

    • Emitter

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

    • getBaseName

      static String getBaseName(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 File normalize(String name, 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(String line)
    • println

      private void println(int i)
    • print

      private void print(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(String functionName)
    • emitNoMatch

      private void emitNoMatch()
    • emitNextInput

      private void emitNextInput()
    • sourceFileString

      public static String sourceFileString(File file)
    • emitHeader

      private void emitHeader()
    • emitUserCode

      private void emitUserCode()
    • emitClassName

      private void emitClassName()
    • endsWithJavadoc

      static boolean endsWithJavadoc(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 invalid input: '<' 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(String functionName)
    • emitCMapAccess

      private void emitCMapAccess()
    • emitGetRowMapNext

      private void emitGetRowMapNext()
    • escapify

      private static String escapify(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.