📄 main.java
字号:
m_outstream.println("\tprivate int yy_acpt[] = {"); size = m_spec.m_accept_vector.size(); for (elem = 0; elem < size; ++elem) { accept = (CAccept) m_spec.m_accept_vector.elementAt(elem); m_outstream.print("\t\t/* "+elem+" */ "); if (null != accept) { is_start = (0 != (m_spec.m_anchor_array[elem] & CSpec.START)); is_end = (0 != (m_spec.m_anchor_array[elem] & CSpec.END)); if (is_start && true == is_end) { m_outstream.print("YY_START | YY_END"); } else if (is_start) { m_outstream.print("YY_START"); } else if (is_end) { m_outstream.print("YY_END"); } else { m_outstream.print("YY_NO_ANCHOR"); } } else { m_outstream.print("YY_NOT_ACCEPT"); } if (elem < size - 1) { m_outstream.print(","); } m_outstream.println(); } m_outstream.println("\t};"); // CSA: modified yy_cmap to use string packing 9-Aug-1999 int[] yy_cmap = new int[m_spec.m_ccls_map.length]; for (i = 0; i < m_spec.m_ccls_map.length; ++i) yy_cmap[i] = m_spec.m_col_map[m_spec.m_ccls_map[i]]; m_outstream.print("\tprivate int yy_cmap[] = unpackFromString("); emit_table_as_string(new int[][] { yy_cmap }); m_outstream.println(")[0];"); m_outstream.println(); // CSA: modified yy_rmap to use string packing 9-Aug-1999 m_outstream.print("\tprivate int yy_rmap[] = unpackFromString("); emit_table_as_string(new int[][] { m_spec.m_row_map }); m_outstream.println(")[0];"); m_outstream.println(); // 6/24/98 Raimondas Lencevicius // modified to use // int[][] unpackFromString(int size1, int size2, String st) size = m_spec.m_dtrans_vector.size(); int[][] yy_nxt = new int[size][]; for (elem=0; elem<size; elem++) { dtrans = (CDTrans) m_spec.m_dtrans_vector.elementAt(elem); CUtility.assert(dtrans.m_dtrans.length==m_spec.m_dtrans_ncols); yy_nxt[elem] = dtrans.m_dtrans; } m_outstream.print ("\tprivate int yy_nxt[][] = unpackFromString("); emit_table_as_string(yy_nxt); m_outstream.println(");"); m_outstream.println(); } /*************************************************************** Function: emit_driver Description: Output an integer table as a string. Written by Raimondas Lencevicius 6/24/98; reorganized by CSA 9-Aug-1999. From his original comments: yy_nxt[][] values are coded into a string by printing integers and representing integer sequences as "value:length" pairs. **************************************************************/ private void emit_table_as_string(int[][] ia) { int sequenceLength = 0; // RL - length of the number sequence boolean sequenceStarted = false; // RL - has number sequence started? int previousInt = -20; // RL - Bogus -20 state. // RL - Output matrix size m_outstream.print(ia.length); m_outstream.print(","); m_outstream.print(ia.length>0?ia[0].length:0); m_outstream.println(","); StringBuffer outstr = new StringBuffer(); // RL - Output matrix for (int elem = 0; elem < ia.length; ++elem) { for (int i = 0; i < ia[elem].length; ++i) { int writeInt = ia[elem][i]; if (writeInt == previousInt) // RL - sequence? { if (sequenceStarted) { sequenceLength++; } else { outstr.append(writeInt); outstr.append(":"); sequenceLength = 2; sequenceStarted = true; } } else // RL - no sequence or end sequence { if (sequenceStarted) { outstr.append(sequenceLength); outstr.append(","); sequenceLength = 0; sequenceStarted = false; } else { if (previousInt != -20) { outstr.append(previousInt); outstr.append(","); } } } previousInt = writeInt; // CSA: output in 75 character chunks. if (outstr.length() > 75) { String s = outstr.toString(); m_outstream.println("\""+s.substring(0,75)+"\" +"); outstr = new StringBuffer(s.substring(75)); } } } if (sequenceStarted) { outstr.append(sequenceLength); } else { outstr.append(previousInt); } // CSA: output in 75 character chunks. if (outstr.length() > 75) { String s = outstr.toString(); m_outstream.println("\""+s.substring(0,75)+"\" +"); outstr = new StringBuffer(s.substring(75)); } m_outstream.print("\""+outstr+"\""); } /*************************************************************** Function: emit_driver Description: **************************************************************/ private void emit_driver ( ) throws java.io.IOException { if (CUtility.DEBUG) { CUtility.assert(null != m_spec); CUtility.assert(null != m_outstream); } emit_table(); if (m_spec.m_integer_type) { m_outstream.print("\tpublic int "); m_outstream.print(new String(m_spec.m_function_name)); m_outstream.println(" ()"); } else if (m_spec.m_intwrap_type) { m_outstream.print("\tpublic java.lang.Integer "); m_outstream.print(new String(m_spec.m_function_name)); m_outstream.println(" ()"); } else { m_outstream.print("\tpublic "); m_outstream.print(new String(m_spec.m_type_name)); m_outstream.print(" "); m_outstream.print(new String(m_spec.m_function_name)); m_outstream.println(" ()"); } /*m_outstream.println("\t\tthrows java.io.IOException {");*/ m_outstream.print("\t\tthrows java.io.IOException"); if (null != m_spec.m_yylex_throw_code) { m_outstream.print(", "); m_outstream.print(new String(m_spec.m_yylex_throw_code,0, m_spec.m_yylex_throw_read)); m_outstream.println(); m_outstream.println("\t\t{"); } else { m_outstream.println(" {"); } m_outstream.println("\t\tint yy_lookahead;"); m_outstream.println("\t\tint yy_anchor = YY_NO_ANCHOR;"); /*m_outstream.println("\t\tint yy_state " + "= yy_initial_dtrans(yy_lexical_state);");*/ m_outstream.println("\t\tint yy_state " + "= yy_state_dtrans[yy_lexical_state];"); m_outstream.println("\t\tint yy_next_state = YY_NO_STATE;"); /*m_outstream.println("\t\tint yy_prev_stave = YY_NO_STATE;");*/ m_outstream.println("\t\tint yy_last_accept_state = YY_NO_STATE;"); m_outstream.println("\t\tboolean yy_initial = true;"); m_outstream.println("\t\tint yy_this_accept;"); m_outstream.println(); m_outstream.println("\t\tyy_mark_start();"); /*m_outstream.println("\t\tyy_this_accept = yy_accept(yy_state);");*/ m_outstream.println("\t\tyy_this_accept = yy_acpt[yy_state];"); m_outstream.println("\t\tif (YY_NOT_ACCEPT != yy_this_accept) {"); m_outstream.println("\t\t\tyy_last_accept_state = yy_state;"); m_outstream.println("\t\t\tyy_mark_end();"); m_outstream.println("\t\t}"); if (NOT_EDBG) { m_outstream.println("\t\tjava.lang.System.out.println(\"Begin\");"); } m_outstream.println("\t\twhile (true) {"); m_outstream.println("\t\t\tif (yy_initial && yy_at_bol) "+ "yy_lookahead = YY_BOL;"); m_outstream.println("\t\t\telse yy_lookahead = yy_advance();"); m_outstream.println("\t\t\tyy_next_state = YY_F;"); /*m_outstream.println("\t\t\t\tyy_next_state = " + "yy_next(yy_state,yy_lookahead);");*/ m_outstream.println("\t\t\tyy_next_state = " + "yy_nxt[yy_rmap[yy_state]][yy_cmap[yy_lookahead]];"); if (NOT_EDBG) { m_outstream.println("java.lang.System.out.println(\"Current state: \"" + " + yy_state"); m_outstream.println("+ \"\tCurrent input: \""); m_outstream.println(" + ((char) yy_lookahead));"); } if (NOT_EDBG) { m_outstream.println("\t\t\tjava.lang.System.out.println(\"State = \"" + "+ yy_state);"); m_outstream.println("\t\t\tjava.lang.System.out.println(\"Accepting status = \"" + "+ yy_this_accept);"); m_outstream.println("\t\t\tjava.lang.System.out.println(\"Last accepting state = \"" + "+ yy_last_accept_state);"); m_outstream.println("\t\t\tjava.lang.System.out.println(\"Next state = \"" + "+ yy_next_state);"); m_outstream.println("\t\t\tjava.lang.System.out.println(\"Lookahead input = \"" + "+ ((char) yy_lookahead));"); } // handle bare EOF. m_outstream.println("\t\t\tif (YY_EOF == yy_lookahead " + "&& true == yy_initial) {"); if (null != m_spec.m_eof_code) { m_outstream.println("\t\t\t\tyy_do_eof();"); } if (true == m_spec.m_integer_type) { m_outstream.println("\t\t\t\treturn YYEOF;"); } else if (null != m_spec.m_eof_value_code) { m_outstream.print(new String(m_spec.m_eof_value_code,0, m_spec.m_eof_value_read)); } else { m_outstream.println("\t\t\t\treturn null;"); } m_outstream.println("\t\t\t}"); m_outstream.println("\t\t\tif (YY_F != yy_next_state) {"); m_outstream.println("\t\t\t\tyy_state = yy_next_state;"); m_outstream.println("\t\t\t\tyy_initial = false;"); /*m_outstream.println("\t\t\t\tyy_this_accept = yy_accept(yy_state);");*/ m_outstream.println("\t\t\t\tyy_this_accept = yy_acpt[yy_state];"); m_outstream.println("\t\t\t\tif (YY_NOT_ACCEPT != yy_this_accept) {"); m_outstream.println("\t\t\t\t\tyy_last_accept_state = yy_state;"); m_outstream.println("\t\t\t\t\tyy_mark_end();"); m_outstream.println("\t\t\t\t}"); /*m_outstream.println("\t\t\t\tyy_prev_state = yy_state;");*/ /*m_outstream.println("\t\t\t\tyy_state = yy_next_state;");*/ m_outstream.println("\t\t\t}"); m_outstream.println("\t\t\telse {"); m_outstream.println("\t\t\t\tif (YY_NO_STATE == yy_last_accept_state) {"); /*m_outstream.println("\t\t\t\t\tyy_error(YY_E_MATCH,false);"); m_outstream.println("\t\t\t\t\tyy_initial = true;"); m_outstream.println("\t\t\t\t\tyy_state " + "= yy_state_dtrans[yy_lexical_state];"); m_outstream.println("\t\t\t\t\tyy_next_state = YY_NO_STATE;");*/ /*m_outstream.println("\t\t\t\t\tyy_prev_state = YY_NO_STATE;");*/ /*m_outstream.println("\t\t\t\t\tyy_last_accept_state = YY_NO_STATE;"); m_outstream.println("\t\t\t\t\tyy_mark_start();");*/ /*m_outstream.println("\t\t\t\t\tyy_this_accept = yy_accept(yy_state);");*/ /*m_outstream.println("\t\t\t\t\tyy_this_accept = yy_acpt[yy_state];"); m_outstream.println("\t\t\t\t\tif (YY_NOT_ACCEPT != yy_this_accept) {"); m_outstream.println("\t\t\t\t\t\tyy_last_accept_state = yy_state;"); m_outstream.println("\t\t\t\t\t}");*/ m_outstream.println("\t\t\t\t\tthrow (new Error(\"Lexical Error: Unmatched Input.\"));"); m_outstream.println("\t\t\t\t}"); m_outstream.println("\t\t\t\telse {"); m_outstream.println("\t\t\t\t\tyy_anchor = yy_acpt[yy_last_accept_state];"); /*m_outstream.println("\t\t\t\t\tyy_anchor " + "= yy_accept(yy_last_accept_state);");*/ m_outstream.println("\t\t\t\t\tif (0 != (YY_END & yy_anchor)) {"); m_outstream.println("\t\t\t\t\t\tyy_move_end();"); m_outstream.println("\t\t\t\t\t}"); m_outstream.println("\t\t\t\t\tyy_to_mark();"); m_outstream.println("\t\t\t\t\tswitch (yy_last_accept_state) {"); emit_actions("\t\t\t\t\t"); m_outstream.println("\t\t\t\t\tdefault:"); m_outstream.println("\t\t\t\t\t\tyy_error(YY_E_INTERNAL,false);"); /*m_outstream.println("\t\t\t\t\t\treturn null;");*/ m_outstream.println("\t\t\t\t\tcase -1:"); m_outstream.println("\t\t\t\t\t}"); m_outstream.println("\t\t\t\t\tyy_initial = true;"); m_outstream.println("\t\t\t\t\tyy_state " + "= yy_state_dtrans[yy_lexical_state];"); m_outstream.println("\t\t\t\t\tyy_next_state = YY_NO_STATE;"); /*m_outstream.println("\t\t\t\t\tyy_prev_state = YY_NO_STATE;");*/ m_outstream.println("\t\t\t\t\tyy_last_accept_state = YY_NO_STATE;"); m_outstream.println("\t\t\t\t\tyy_mark_start();"); /*m_outstream.println("\t\t\t\t\tyy_this_accept = yy_accept(yy_state);");*/ m_outstream.println("\t\t\t\t\tyy_this_accept = yy_acpt[yy_state];"); m_outstream.println("\t\t\t\t\tif (YY_NOT_ACCEPT != yy_this_accept) {"); m_outstream.println("\t\t\t\t\t\tyy_last_accept_state = yy_state;"); m_outstream.println("\t\t\t\t\t\tyy_mark_end();"); m_outstream.println("\t\t\t\t\t}"); m_outstream.println("\t\t\t\t}"); m_outstream.println("\t\t\t}"); m_outstream.println("\t\t}"); m_outstream.println("\t}"); /*m_outstream.println("\t\t\t\t"); m_outstream.println("\t\t\t"); m_outstream.println("\t\t\t"); m_outstream.println("\t\t\t"); m_outstream.println("\t\t\t"); m_outstream.println("\t\t}");*/ } /*************************************************************** Function: emit_actions Description: **************************************************************/ private void emit_actions ( String tabs ) throws java.io.IOException { int elem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -