⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 JLex词法分析生成器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	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.Jassert(null != m_spec);	      CUtility.Jassert(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;	  int size;	  int bogus_index;	  CAccept accept;	  	  if (CUtility.DEBUG)	    {	      CUtility.Jassert(m_spec.m_accept_vector.size() 			      == m_spec.m_anchor_array.length);	    }	  bogus_index = -2;	  size = m_spec.m_accept_vector.size();	  for (elem = 0; elem < size; ++elem)	    {	      accept = (CAccept) m_spec.m_accept_vector.elementAt(elem);	      if (null != accept) 		{		  m_outstream.println(tabs + "case " + elem 					 + ":");		  m_outstream.print(tabs + "\t");		  m_outstream.print(new String(accept.m_action,0,						    accept.m_action_read));		  m_outstream.println();		  m_outstream.println(tabs + "case " + bogus_index + ":");		  m_outstream.println(tabs + "\tbreak;");		  --bogus_index;		}	    }	}    /***************************************************************    Function: emit_footer    Description:         **************************************************************/  private void emit_footer    (     )      throws java.io.IOException      {	if (CUtility.DEBUG)	  {	    CUtility.Jassert(null != m_spec);	    CUtility.Jassert(null != m_outstream);	  }	m_outstream.println("}");      }}/***************************************************************  Class: CBunch  **************************************************************/class CBunch{  /***************************************************************    Member Variables    **************************************************************/  Vector m_nfa_set; /* Vector of CNfa states in dfa state. */  SparseBitSet m_nfa_bit; /* BitSet representation of CNfa labels. */  CAccept m_accept; /* Accepting actions, or null if nonaccepting state. */  int m_anchor; /* Anchors on regular expression. */  int m_accept_index; /* CNfa index corresponding to accepting actions. */  /***************************************************************    Function: CBunch    Description: Constructor.    **************************************************************/  CBunch    (     )      {	m_nfa_set = null;	m_nfa_bit = null;	m_accept = null;	m_anchor = CSpec.NONE;	m_accept_index = -1;      }}/***************************************************************  Class: CMakeNfa  **************************************************************/class CMakeNfa{  /***************************************************************    Member Variables    **************************************************************/  private CSpec m_spec;  private CLexGen m_lexGen;  private CInput m_input;  /***************************************************************    Function: CMakeNfa    Description: Constructor.    **************************************************************/  CMakeNfa    (     )      {	reset();      }  /***************************************************************    Function: reset    Description: Resets CMakeNfa member variables.    **************************************************************/  private void reset    (     )      {	m_input = null;	m_lexGen = null;	m_spec = null;      }  /***************************************************************    Function: set    Description: Sets CMakeNfa member variables.    **************************************************************/  private void set    (     CLexGen lexGen,     CSpec spec,     CInput input

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -