private void emitEOFVal()

in jflex/src/main/java/jflex/generator/Emitter.java [1166:1229]


  private void emitEOFVal() {
    EOFActions eofActions = parser.getEOFActions();

    if (eofCode != null) println("            zzDoEOF();");

    if (eofActions.numActions() > 0) {
      println("            switch (zzLexicalState) {");

      // pick a start value for break case labels.
      // must be larger than any value of a lex state:
      int last = dfa.numStates();

      for (String name : scanner.stateNames()) {
        int num = scanner.getStateNumber(name);
        Action action = eofActions.getAction(num);

        if (action != null) {
          println("            case " + name + ": {");
          if (scanner.debugOption()) {
            print("              System.out.println(");
            if (scanner.lineCount()) print("\"line: \"+(yyline+1)+\" \"+");
            if (scanner.columnCount()) print("\"col: \"+(yycolumn+1)+\" \"+");
            if (scanner.charCount()) print("\"char: \"+yychar+\" \"+");
            println("\"match: <<EOF>>\");");
            print("              System.out.println(\"action [" + action.priority + "] { ");
            print(escapify(action.content));
            println(" }\");");
          }
          println("              " + action.content);
          println("            }  // fall though");
          println("            case " + (++last) + ": break;");
        }
      }

      println("            default:");
    }

    Action defaultAction = eofActions.getDefault();

    if (defaultAction != null) {
      println("              {");
      if (scanner.debugOption()) {
        print("                System.out.println(");
        if (scanner.lineCount()) print("\"line: \"+(yyline+1)+\" \"+");
        if (scanner.columnCount()) print("\"col: \"+(yycolumn+1)+\" \"+");
        if (scanner.charCount()) print("\"char: \"+yychar+\" \"+");
        println("\"match: <<EOF>>\");");
        print("                System.out.println(\"action [" + defaultAction.priority + "] { ");
        print(escapify(defaultAction.content));
        println(" }\");");
      }
      println("                " + defaultAction.content);
      println("              }");
    } else if (scanner.eofVal() != null) println("          { " + scanner.eofVal() + " }");
    else if (scanner.isInteger()) {
      if (scanner.tokenType() != null) {
        Out.error(ErrorMessages.INT_AND_TYPE);
        throw new GeneratorException();
      }
      println("        return YYEOF;");
    } else println("        return null;");

    if (eofActions.numActions() > 0) println("        }");
  }