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

📄 main.java

📁 JLex词法分析生成器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
{  /***************************************************************    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.Jassert(null != spec);	    CUtility.Jassert(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.Jassert(null != m_spec);	      CUtility.Jassert(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.Jassert(null != m_spec);	      CUtility.Jassert(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.Jassert(null != m_spec);	    CUtility.Jassert(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;");	    }	  if (m_spec.m_count_lines)	    {	      m_outstream.println("\t\tyyline = 0;");	    }	  m_outstream.println("\t\tyy_at_bol = true;");	  m_outstream.println("\t\tyy_lexical_state = YYINITIAL;");	  /*if (m_spec.m_count_lines || true == m_spec.m_count_chars)	    {	      m_outstream.println("\t\tyy_buffer_prev_start = 0;");	    }*/	  /* User specified constructor code. */	  if (null != m_spec.m_init_code)	    {	      m_outstream.print(new String(m_spec.m_init_code,0,						m_spec.m_init_read));	    }	  m_outstream.println("\t}");	  m_outstream.println();	}  /***************************************************************    Function: emit_states    Description: Emits constants that serve as lexical states,    including YYINITIAL.    **************************************************************/  private void emit_states    (     )      throws java.io.IOException	{	  Enumeration states;	  String state;	  int index;	  states = m_spec.m_states.keys();	  /*index = 0;*/	  while (states.hasMoreElements())	    {	      state = (String) states.nextElement();	      	      if (CUtility.DEBUG)		{		  CUtility.Jassert(null != state);		}	      	      m_outstream.println("\tprivate final int " 				     + state 				     + " = " 				     + (m_spec.m_states.get(state)).toString() 				     + ";");	      /*++index;*/	    }	  m_outstream.println("\tprivate final int yy_state_dtrans[] = {");	  for (index = 0; index < m_spec.m_state_dtrans.length; ++index)	    {	      m_outstream.print("\t\t" + m_spec.m_state_dtrans[index]);	      if (index < m_spec.m_state_dtrans.length - 1)

⌨️ 快捷键说明

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