Package java_cup
Class Main
- java.lang.Object
-
- java_cup.Main
-
public class Main extends java.lang.ObjectThis 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.
- -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"]
- -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
-
-
Field Summary
Fields Modifier and Type Field Description protected static parse_action_tableaction_tableResulting parse action table.protected static longbuild_endTiming data -- when did we end state and table buildingprotected static longcheck_endTiming data -- when did we end checkingprotected static longdump_endTiming data -- when did we end dumpingprotected static longemit_endTiming data -- when did we finish emitting codeprotected static intexpect_conflictsUser option -- number of conflicts to expectprotected static longfinal_timeTiming data -- when were we completely doneprotected static longfirst_endTiming data -- when did we end first set calculationprotected static booleaninclude_non_termsUser option -- should we include non terminal symbol numbers in the symbol constant class.protected static java.io.BufferedInputStreaminput_fileInput file.protected static longmachine_endTiming data -- when did we end state machine constructionprotected static booleanno_summaryUser option -- do not print a summary.protected static longnullability_endTiming data -- when did we end nullability calculationprotected static booleanopt_compact_redUser option -- do we compact tables by making most common reduce the default actionprotected static booleanopt_do_debugUser option -- do we run produce extra debugging messagesprotected static booleanopt_dump_grammarUser option -- do we produce a dump of the grammarprotected static booleanopt_dump_statesUser option -- do we produce a dump of the state machineprotected static booleanopt_dump_tablesUser option -- do we produce a dump of the parse tablesprotected static booleanopt_show_timingUser option -- do we show timing information as a part of the summaryprotected static longparse_endTiming data -- when did we end parsingprotected static java.io.PrintStreamparser_class_fileOutput file for the parser class.protected static longprelim_endTiming data -- when did we end preliminariesprotected static booleanprint_progressUser option -- do we print progress messages.protected static longreduce_check_endTiming data -- when did we end checking for non-reduced productionsprotected static parse_reduce_tablereduce_tableResulting reduce-goto table.protected static lalr_statestart_stateStart state in the overall state machine.protected static longstart_timeTiming data -- when did we startprotected static java.io.PrintStreamsymbol_class_fileOutput file for the symbol constant class.protected static longtable_endTiming data -- when did we end table construction
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static voidbuild_parser()Build the (internal) parser from the previously parsed specification.protected static voidcheck_unused()Check for unused symbols.protected static voidclose_files()Close various files used by the system.static voiddump_grammar()Produce a human readable dump of the grammar.static voiddump_machine()Produce a (semi-) human readable dump of the complete viable prefix recognition state machine.static voiddump_tables()Produce a (semi-) human readable dumps of the parse tablesprotected static voidemit_parser()Call the emit routines necessary to write out the generated parser.protected static voidemit_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 voidmain(java.lang.String[] argv)The main driver for the system.protected static voidopen_files()Open various files used by the system.protected static voidparse_args(java.lang.String[] argv)Parse command line options and arguments to set various user-option flags and variables.protected static voidparse_grammar_spec()Parse the grammar specification from standard input.protected static java.lang.Stringplural(int val)Helper routine to optionally return a plural or non-plural ending.protected static voidshow_times()Produce the optional timing summary as part of an overall summary.protected static java.lang.Stringtimestr(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 voidusage(java.lang.String message)Print a "usage message" that described possible command line options, then exit.
-
-
-
Field Detail
-
print_progress
protected static boolean print_progress
User option -- do we print progress messages.
-
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_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
-
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 java.io.BufferedInputStream input_file
Input file. This is a buffered version of System.in.
-
parser_class_file
protected static java.io.PrintStream parser_class_file
Output file for the parser class.
-
symbol_class_file
protected static java.io.PrintStream symbol_class_file
Output file for the symbol constant class.
-
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 Detail
-
main
public static void main(java.lang.String[] argv) throws internal_error, java.io.IOException, java.lang.ExceptionThe main driver for the system.- Parameters:
argv- an array of strings containing command line arguments.- Throws:
internal_errorjava.io.IOExceptionjava.lang.Exception
-
usage
protected static void usage(java.lang.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(java.lang.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 java.io.IOExceptionClose various files used by the system.- Throws:
java.io.IOException
-
parse_grammar_spec
protected static void parse_grammar_spec() throws java.lang.ExceptionParse 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:
java.lang.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_errorBuild 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_errorCall the emit routines necessary to write out the generated parser.- Throws:
internal_error
-
plural
protected static java.lang.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 java.lang.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_errorProduce 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
-
-