📄 main.java
字号:
m_init_code = null; m_init_read = 0; m_init_throw_code = null; m_init_throw_read = 0; m_yylex_throw_code = null; m_yylex_throw_read = 0; m_class_code = null; m_class_read = 0; m_eof_code = null; m_eof_read = 0; m_eof_value_code = null; m_eof_value_read = 0; m_eof_throw_code = null; m_eof_throw_read = 0; m_state_dtrans = null; m_state_rules = null; }}/*************************************************************** Class: CEmit**************************************************************/class CEmit{ /*************************************************************** Member Variables **************************************************************/ private CSpec m_spec; private java.io.PrintWriter m_outstream; /*************************************************************** Constants: Anchor Types **************************************************************/ private final int START = 1; private final int END = 2; private final int NONE = 4; /*************************************************************** Constants **************************************************************/ private final boolean EDBG = true; private final boolean NOT_EDBG = false; /*************************************************************** Function: CEmit Description: Constructor. **************************************************************/ CEmit ( ) { reset(); } /*************************************************************** Function: reset Description: Clears member variables. **************************************************************/ private void reset ( ) { m_spec = null; m_outstream = null; } /*************************************************************** Function: set Description: Initializes member variables. **************************************************************/ private void set ( CSpec spec, java.io.PrintWriter outstream ) { if (CUtility.DEBUG) { CUtility.assert(null != spec); CUtility.assert(null != outstream); } m_spec = spec; m_outstream = outstream; } /*************************************************************** Function: emit_imports Description: Emits import packages at top of generated source file. **************************************************************/ /*void emit_imports ( CSpec spec, OutputStream outstream ) throws java.io.IOException { set(spec,outstream); if (CUtility.DEBUG) { CUtility.assert(null != m_spec); CUtility.assert(null != m_outstream); }*/ /*m_outstream.println("import java.lang.String;"); m_outstream.println("import java.lang.System;"); m_outstream.println("import java.io.BufferedReader;"); m_outstream.println("import java.io.InputStream;");*/ /* reset(); }*/ /*************************************************************** Function: print_details Description: Debugging output. **************************************************************/ private void print_details ( ) { int i; int j; int next; int state; CDTrans dtrans; CAccept accept; boolean tr; System.out.println("---------------------- Transition Table " + "----------------------"); for (i = 0; i < m_spec.m_row_map.length; ++i) { System.out.print("State " + i); accept = (CAccept) m_spec.m_accept_vector.elementAt(i); if (null == accept) { System.out.println(" [nonaccepting]"); } else { System.out.println(" [accepting, line " + accept.m_line_number + " <" + (new java.lang.String(accept.m_action,0, accept.m_action_read)) + ">]"); } dtrans = (CDTrans) m_spec.m_dtrans_vector.elementAt(m_spec.m_row_map[i]); tr = false; state = dtrans.m_dtrans[m_spec.m_col_map[0]]; if (CDTrans.F != state) { tr = true; System.out.print("\tgoto " + state + " on [" + ((char) 0)); } for (j = 1; j < m_spec.m_dtrans_ncols; ++j) { next = dtrans.m_dtrans[m_spec.m_col_map[j]]; if (state == next) { if (CDTrans.F != state) { System.out.print((char) j); } } else { state = next; if (tr) { System.out.println("]"); tr = false; } if (CDTrans.F != state) { tr = true; System.out.print("\tgoto " + state + " on [" + ((char) j)); } } } if (tr) { System.out.println("]"); } } System.out.println("---------------------- Transition Table " + "----------------------"); } /*************************************************************** Function: emit Description: High-level access function to module. **************************************************************/ void emit ( CSpec spec, java.io.PrintWriter outstream ) throws java.io.IOException { set(spec,outstream); if (CUtility.DEBUG) { CUtility.assert(null != m_spec); CUtility.assert(null != m_outstream); } if (CUtility.OLD_DEBUG) { print_details(); } emit_header(); emit_construct(); emit_helpers(); emit_driver(); emit_footer(); reset(); } /*************************************************************** Function: emit_construct Description: Emits constructor, member variables, and constants. **************************************************************/ private void emit_construct ( ) throws java.io.IOException { if (CUtility.DEBUG) { CUtility.assert(null != m_spec); CUtility.assert(null != m_outstream); } /* Constants */ m_outstream.println("\tprivate final int YY_BUFFER_SIZE = 512;"); m_outstream.println("\tprivate final int YY_F = -1;"); m_outstream.println("\tprivate final int YY_NO_STATE = -1;"); m_outstream.println("\tprivate final int YY_NOT_ACCEPT = 0;"); m_outstream.println("\tprivate final int YY_START = 1;"); m_outstream.println("\tprivate final int YY_END = 2;"); m_outstream.println("\tprivate final int YY_NO_ANCHOR = 4;"); // internal m_outstream.println("\tprivate final int YY_BOL = "+m_spec.BOL+";"); m_outstream.println("\tprivate final int YY_EOF = "+m_spec.EOF+";"); // external if (m_spec.m_integer_type || true == m_spec.m_yyeof) m_outstream.println("\tpublic final int YYEOF = -1;"); /* User specified class code. */ if (null != m_spec.m_class_code) { m_outstream.print(new String(m_spec.m_class_code,0, m_spec.m_class_read)); } /* Member Variables */ m_outstream.println("\tprivate java.io.BufferedReader yy_reader;"); m_outstream.println("\tprivate int yy_buffer_index;"); m_outstream.println("\tprivate int yy_buffer_read;"); m_outstream.println("\tprivate int yy_buffer_start;"); m_outstream.println("\tprivate int yy_buffer_end;"); m_outstream.println("\tprivate char yy_buffer[];"); if (m_spec.m_count_chars) { m_outstream.println("\tprivate int yychar;"); } if (m_spec.m_count_lines) { m_outstream.println("\tprivate int yyline;"); } m_outstream.println("\tprivate boolean yy_at_bol;"); m_outstream.println("\tprivate int yy_lexical_state;"); /*if (m_spec.m_count_lines || true == m_spec.m_count_chars) { m_outstream.println("\tprivate int yy_buffer_prev_start;"); }*/ m_outstream.println(); /* Function: first constructor (Reader) */ m_outstream.print("\t"); if (true == m_spec.m_public) { m_outstream.print("public "); } m_outstream.print(new String(m_spec.m_class_name)); m_outstream.print(" (java.io.Reader reader)"); if (null != m_spec.m_init_throw_code) { m_outstream.println(); m_outstream.print("\t\tthrows "); m_outstream.print(new String(m_spec.m_init_throw_code,0, m_spec.m_init_throw_read)); m_outstream.println(); m_outstream.println("\t\t{"); } else { m_outstream.println(" {"); } m_outstream.println("\t\tthis ();"); m_outstream.println("\t\tif (null == reader) {"); m_outstream.println("\t\t\tthrow (new Error(\"Error: Bad input " + "stream initializer.\"));"); m_outstream.println("\t\t}"); m_outstream.println("\t\tyy_reader = new java.io.BufferedReader(reader);"); m_outstream.println("\t}"); m_outstream.println(); /* Function: second constructor (InputStream) */ m_outstream.print("\t"); if (true == m_spec.m_public) { m_outstream.print("public "); } m_outstream.print(new String(m_spec.m_class_name)); m_outstream.print(" (java.io.InputStream instream)"); if (null != m_spec.m_init_throw_code) { m_outstream.println(); m_outstream.print("\t\tthrows "); m_outstream.println(new String(m_spec.m_init_throw_code,0, m_spec.m_init_throw_read)); m_outstream.println("\t\t{"); } else { m_outstream.println(" {"); } m_outstream.println("\t\tthis ();"); m_outstream.println("\t\tif (null == instream) {"); m_outstream.println("\t\t\tthrow (new Error(\"Error: Bad input " + "stream initializer.\"));"); m_outstream.println("\t\t}"); m_outstream.println("\t\tyy_reader = new java.io.BufferedReader(new java.io.InputStreamReader(instream));"); m_outstream.println("\t}"); m_outstream.println(); /* Function: third, private constructor - only for internal use */ m_outstream.print("\tprivate "); m_outstream.print(new String(m_spec.m_class_name)); m_outstream.print(" ()"); if (null != m_spec.m_init_throw_code) { m_outstream.println(); m_outstream.print("\t\tthrows "); m_outstream.println(new String(m_spec.m_init_throw_code,0, m_spec.m_init_throw_read)); m_outstream.println("\t\t{"); } else { m_outstream.println(" {"); } m_outstream.println("\t\tyy_buffer = new char[YY_BUFFER_SIZE];"); m_outstream.println("\t\tyy_buffer_read = 0;"); m_outstream.println("\t\tyy_buffer_index = 0;"); m_outstream.println("\t\tyy_buffer_start = 0;"); m_outstream.println("\t\tyy_buffer_end = 0;"); if (m_spec.m_count_chars) { m_outstream.println("\t\tyychar = 0;");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -