Package java_cup

Class Main

java.lang.Object
java_cup.Main

public class Main extends Object
This class serves as the main driver for the JavaCup system. It accepts user options and coordinates overall control flow. The main flow of control includes the following activities:
  • Parse user supplied arguments and options.
  • Open output files.
  • Parse the specification from standard input.
  • Check for unused terminals, non-terminals, and productions.
  • Build the state machine, tables, etc.
  • Output the generated code.
  • Close output files.
  • Print a summary if requested.
Options to the main program include:
-package name
specify package generated classes go in [default none]
-parser name
specify parser class name [default "parser"]
-symbols name
specify name for symbol constant class [default "sym"]
-interface
emit symbol constant interface, rather than class
-nonterms
put non terminals in symbol constant class
-expect #
number of conflicts expected/allowed [default 0]
-compact_red
compact tables by defaulting to most frequent reduce
-nowarn
don't warn about useless productions, etc.
-nosummary
don't print the usual summary of parse states, etc.
-progress
print messages to indicate progress of the system
-time
print time usage summary
-dump_grammar
produce a dump of the symbols and grammar
-dump_states
produce a dump of parse state machine
-dump_tables
produce a dump of the parse tables
-dump
produce a dump of all of the above
-debug
turn on debugging messages within JavaCup
-nopositions
don't generate the positions code
-locations
generate handles xleft/xright for symbol positions in actions
-noscanner
don't refer to java_cup.runtime.Scanner in the parser (for compatibility with old runtimes)
-version
print version information for JavaCUP and halt.
Version:
last updated: 7/3/96
Author:
Frank Flannery
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static parse_action_table
    Resulting parse action table.
    protected static long
    Timing data -- when did we end state and table building
    protected static long
    Timing data -- when did we end checking
    protected static File
    Output directory.
    protected static long
    Timing data -- when did we end dumping
    protected static long
    Timing data -- when did we finish emitting code
    protected static int
    User option -- number of conflicts to expect
    protected static long
    Timing data -- when were we completely done
    protected static long
    Timing data -- when did we end first set calculation
    protected static boolean
     
    protected static boolean
    User option -- should we include non terminal symbol numbers in the symbol constant class.
    protected static BufferedInputStream
    Input file.
    protected static boolean
     
    protected static boolean
    User option -- should generator generate code for left/right values?
    protected static long
    Timing data -- when did we end state machine construction
    protected static boolean
    User option -- do not print a summary.
    protected static long
    Timing data -- when did we end nullability calculation
    protected static boolean
    User option -- do we compact tables by making most common reduce the default action
    protected static boolean
    User option -- do we run produce extra debugging messages
    protected static boolean
    User option -- do eclipse debug symbols
    protected static boolean
    User option -- do we produce a dump of the grammar
    protected static boolean
    User option -- do we produce a dump of the state machine
    protected static boolean
    User option -- do we produce a dump of the parse tables
    protected static boolean
    User option -- do we show timing information as a part of the summary
    protected static long
    Timing data -- when did we end parsing
    protected static PrintWriter
    Output file for the parser class.
    protected static long
    Timing data -- when did we end preliminaries
    protected static boolean
    User option -- do we print progress messages.
    protected static long
    Timing data -- when did we end checking for non-reduced productions
    protected static parse_reduce_table
    Resulting reduce-goto table.
    protected static lalr_state
    Start state in the overall state machine.
    protected static long
    Timing data -- when did we start
    protected static boolean
    User option -- should generator suppress references to java_cup.runtime.Scanner for compatibility with old runtimes?
    protected static boolean
    User option -- should symbols be put in a class or an interface? [CSA]
    protected static PrintWriter
    Output file for the symbol constant class.
    protected static long
    Timing data -- when did we end table construction
    protected static boolean
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected static void
    Build the (internal) parser from the previously parsed specification.
    protected static void
    Check for unused symbols.
    protected static void
    Close various files used by the system.
    static void
    Produce a human readable dump of the grammar.
    static void
    Produce a (semi-) human readable dump of the complete viable prefix recognition state machine.
    static void
    Produce a (semi-) human readable dumps of the parse tables
    protected static void
    Call the emit routines necessary to write out the generated parser.
    protected static void
    emit_summary(boolean output_produced)
    Emit a long summary message to standard error (System.err) which summarizes what was found in the specification, how many states were produced, how many conflicts were found, etc.
    static void
    main(String[] argv)
    The main driver for the system.
    protected static void
    Open various files used by the system.
    protected static void
    Parse command line options and arguments to set various user-option flags and variables.
    protected static void
    Parse the grammar specification from standard input.
    protected static String
    plural(int val)
    Helper routine to optionally return a plural or non-plural ending.
    protected static void
    Produce the optional timing summary as part of an overall summary.
    protected static String
    timestr(long time_val, long total_time)
    Helper routine to format a decimal based display of seconds and percentage of total time given counts of milliseconds.
    protected static void
    usage(String message)
    Print a "usage message" that described possible command line options, then exit.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • opt_dump_states

      protected static boolean opt_dump_states
      User option -- do we produce a dump of the state machine
    • opt_dump_tables

      protected static boolean opt_dump_tables
      User option -- do we produce a dump of the parse tables
    • opt_dump_grammar

      protected static boolean opt_dump_grammar
      User option -- do we produce a dump of the grammar
    • opt_show_timing

      protected static boolean opt_show_timing
      User option -- do we show timing information as a part of the summary
    • opt_do_debug

      protected static boolean opt_do_debug
      User option -- do we run produce extra debugging messages
    • opt_do_debugsymbols

      protected static boolean opt_do_debugsymbols
      User option -- do eclipse debug symbols
    • opt_compact_red

      protected static boolean opt_compact_red
      User option -- do we compact tables by making most common reduce the default action
    • include_non_terms

      protected static boolean include_non_terms
      User option -- should we include non terminal symbol numbers in the symbol constant class.
    • no_summary

      protected static boolean no_summary
      User option -- do not print a summary.
    • expect_conflicts

      protected static int expect_conflicts
      User option -- number of conflicts to expect
    • lr_values

      protected static boolean lr_values
      User option -- should generator generate code for left/right values?
    • locations

      protected static boolean locations
    • xmlactions

      protected static boolean xmlactions
    • genericlabels

      protected static boolean genericlabels
    • sym_interface

      protected static boolean sym_interface
      User option -- should symbols be put in a class or an interface? [CSA]
    • suppress_scanner

      protected static boolean suppress_scanner
      User option -- should generator suppress references to java_cup.runtime.Scanner for compatibility with old runtimes?
    • start_time

      protected static long start_time
      Timing data -- when did we start
    • prelim_end

      protected static long prelim_end
      Timing data -- when did we end preliminaries
    • parse_end

      protected static long parse_end
      Timing data -- when did we end parsing
    • check_end

      protected static long check_end
      Timing data -- when did we end checking
    • dump_end

      protected static long dump_end
      Timing data -- when did we end dumping
    • build_end

      protected static long build_end
      Timing data -- when did we end state and table building
    • nullability_end

      protected static long nullability_end
      Timing data -- when did we end nullability calculation
    • first_end

      protected static long first_end
      Timing data -- when did we end first set calculation
    • machine_end

      protected static long machine_end
      Timing data -- when did we end state machine construction
    • table_end

      protected static long table_end
      Timing data -- when did we end table construction
    • reduce_check_end

      protected static long reduce_check_end
      Timing data -- when did we end checking for non-reduced productions
    • emit_end

      protected static long emit_end
      Timing data -- when did we finish emitting code
    • final_time

      protected static long final_time
      Timing data -- when were we completely done
    • input_file

      protected static BufferedInputStream input_file
      Input file. This is a buffered version of System.in.
    • parser_class_file

      protected static PrintWriter parser_class_file
      Output file for the parser class.
    • symbol_class_file

      protected static PrintWriter symbol_class_file
      Output file for the symbol constant class.
    • dest_dir

      protected static File dest_dir
      Output directory.
    • start_state

      protected static lalr_state start_state
      Start state in the overall state machine.
    • action_table

      protected static parse_action_table action_table
      Resulting parse action table.
    • reduce_table

      protected static parse_reduce_table reduce_table
      Resulting reduce-goto table.
  • Method Details

    • main

      public static void main(String[] argv) throws internal_error, IOException, Exception
      The main driver for the system.
      Parameters:
      argv - an array of strings containing command line arguments.
      Throws:
      internal_error
      IOException
      Exception
    • usage

      protected static void usage(String message)
      Print a "usage message" that described possible command line options, then exit.
      Parameters:
      message - a specific error message to preface the usage message by.
    • parse_args

      protected static void parse_args(String[] argv)
      Parse command line options and arguments to set various user-option flags and variables.
      Parameters:
      argv - the command line arguments to be parsed.
    • open_files

      protected static void open_files()
      Open various files used by the system.
    • close_files

      protected static void close_files() throws IOException
      Close various files used by the system.
      Throws:
      IOException
    • parse_grammar_spec

      protected static void parse_grammar_spec() throws Exception
      Parse the grammar specification from standard input. This produces sets of terminal, non-terminals, and productions which can be accessed via static variables of the respective classes, as well as the setting of various variables (mostly in the emit class) for small user supplied items such as the code to scan with.
      Throws:
      Exception
    • check_unused

      protected static void check_unused()
      Check for unused symbols. Unreduced productions get checked when tables are created.
    • build_parser

      protected static void build_parser() throws internal_error
      Build the (internal) parser from the previously parsed specification. This includes:
      • Computing nullability of non-terminals.
      • Computing first sets of non-terminals and productions.
      • Building the viable prefix recognizer machine.
      • Filling in the (internal) parse tables.
      • Checking for unreduced productions.
      Throws:
      internal_error
    • emit_parser

      protected static void emit_parser() throws internal_error
      Call the emit routines necessary to write out the generated parser.
      Throws:
      internal_error
    • plural

      protected static String plural(int val)
      Helper routine to optionally return a plural or non-plural ending.
      Parameters:
      val - the numerical value determining plurality.
    • emit_summary

      protected static void emit_summary(boolean output_produced)
      Emit a long summary message to standard error (System.err) which summarizes what was found in the specification, how many states were produced, how many conflicts were found, etc. A detailed timing summary is also produced if it was requested by the user.
      Parameters:
      output_produced - did the system get far enough to generate code.
    • show_times

      protected static void show_times()
      Produce the optional timing summary as part of an overall summary.
    • timestr

      protected static String timestr(long time_val, long total_time)
      Helper routine to format a decimal based display of seconds and percentage of total time given counts of milliseconds. Note: this is broken for use with some instances of negative time (since we don't use any negative time here, we let if be for now).
      Parameters:
      time_val - the value being formatted (in ms).
      total_time - total time percentages are calculated against (in ms).
    • dump_grammar

      public static void dump_grammar() throws internal_error
      Produce a human readable dump of the grammar.
      Throws:
      internal_error
    • dump_machine

      public static void dump_machine()
      Produce a (semi-) human readable dump of the complete viable prefix recognition state machine.
    • dump_tables

      public static void dump_tables()
      Produce a (semi-) human readable dumps of the parse tables