亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lr_parser.java

?? 有關JDBC的使用一些編程實例,有關與數據庫連接的代碼
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Fetch an action from the action table.  The table is broken up into   *  rows, one per state (rows are indexed directly by state number).     *  Within each row, a list of index, value pairs are given (as sequential   *  entries in the table), and the list is terminated by a default entry    *  (denoted with a symbol index of -1).  To find the proper entry in a row    *  we do a linear or binary search (depending on the size of the row).     *   * @param state the state index of the action being accessed.   * @param sym   the symbol index of the action being accessed.   */  protected final short get_action(int state, int sym)    {      short tag;      int first, last, probe;      short[] row = action_tab[state];      /* linear search if we are < 10 entries */      if (row.length < 20)        for (probe = 0; probe < row.length; probe++)	  {	    /* is this entry labeled with our symbol or the default? */	    tag = row[probe++];	    if (tag == sym || tag == -1)	      {	        /* return the next entry */	        return row[probe];	      }	  }      /* otherwise binary search */      else	{	  first = 0; 	  last = (row.length-1)/2 - 1;  /* leave out trailing default entry */	  while (first <= last)	    {	      probe = (first+last)/2;	      if (sym == row[probe*2])		return row[probe*2+1];	      else if (sym > row[probe*2])		first = probe+1;	      else	        last = probe-1;	    }	  /* not found, use the default at the end */	  return row[row.length-1];	}      /* shouldn't happened, but if we run off the end we return the 	 default (error == 0) */      return 0;    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Fetch a state from the reduce-goto table.  The table is broken up into   *  rows, one per state (rows are indexed directly by state number).     *  Within each row, a list of index, value pairs are given (as sequential   *  entries in the table), and the list is terminated by a default entry    *  (denoted with a symbol index of -1).  To find the proper entry in a row    *  we do a linear search.     *   * @param state the state index of the entry being accessed.   * @param sym   the symbol index of the entry being accessed.   */  protected final short get_reduce(int state, int sym)    {      short tag;      short[] row = reduce_tab[state];      /* if we have a null row we go with the default */      if (row == null)        return -1;      for (int probe = 0; probe < row.length; probe++)	{	  /* is this entry labeled with our symbol or the default? */	  tag = row[probe++];	  if (tag == sym || tag == -1)	    {	      /* return the next entry */	      return row[probe];	    }	}      /* if we run off the end we return the default (error == -1) */      return -1;    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** This method provides the main parsing routine.  It returns only when    *  done_parsing() has been called (typically because the parser has    *  accepted, or a fatal error has been reported).  See the header    *  documentation for the class regarding how shift/reduce parsers operate   *  and how the various tables are used.   */  public void parse() throws java.lang.Exception    {      /* the current action code */      int act;      /* the symbol/stack element returned by a reduce */      symbol lhs_sym;      /* information about production being reduced with */      short handle_size, lhs_sym_num;      /* set up direct reference to tables to drive the parser */      production_tab = production_table();      action_tab     = action_table();      reduce_tab     = reduce_table();      /* initialize the action encapsulation object */      init_actions();      /* do user initialization */      user_init();      /* get the first token */      cur_token = scan();       /* push dummy symbol with start state to get us underway */      stack.push(new symbol(0, start_state()));      tos = 0;      /* continue until we are told to stop */      for (_done_parsing = false; !_done_parsing; )	{	  /* current state is always on the top of the stack */	  /* look up action out of the current state with the current input */	  act = get_action(((symbol)stack.peek()).parse_state, cur_token.sym);	  /* decode the action -- > 0 encodes shift */	  if (act > 0)	    {	      /* shift to the encoded state by pushing it on the stack */	      cur_token.parse_state = act-1;	      stack.push(cur_token);	      tos++;	      /* advance to the next token */	      cur_token = scan();	    }	  /* if its less than zero, then it encodes a reduce action */	  else if (act < 0)	    {	      /* perform the action for the reduce */	      lhs_sym = do_action((-act)-1, this, stack, tos);	      /* look up information about the production */	      lhs_sym_num = production_tab[(-act)-1][0];	      handle_size = production_tab[(-act)-1][1];	      /* pop the handle off the stack */	      for (int i = 0; i < handle_size; i++)		{		  stack.pop();		  tos--;		}	      	      /* look up the state to go to from the one popped back to */	      act = get_reduce(((symbol)stack.peek()).parse_state, lhs_sym_num);	      /* shift to that state */	      lhs_sym.parse_state = act;	      stack.push(lhs_sym);	      tos++;	    }	  /* finally if the entry is zero, we have an error */	  else if (act == 0)	    {	      /* call user syntax error reporting routine */	      syntax_error(cur_token);	      /* try to error recover */	      if (!error_recovery(false))		{		  /* if that fails give up with a fatal syntax error */		  unrecovered_syntax_error(cur_token);		  /* just in case that wasn't fatal enough, end parse */		  done_parsing();		}	    }	}    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Write a debugging message to System.err for the debugging version    *  of the parser.    *   * @param mess the text of the debugging message.   */  public void debug_message(String mess)    {      System.err.println(mess);    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Dump the parse stack for debugging purposes. */  public void dump_stack()    {      if (stack == null)	{	  debug_message("# Stack dump requested, but stack is null");	  return;	}      debug_message("============ Parse Stack Dump ============");      /* dump the stack */      for (int i=0; i<stack.size(); i++)	{	  debug_message("Symbol: " + ((symbol)stack.elementAt(i)).sym +			" State: " + ((symbol)stack.elementAt(i)).parse_state);	}      debug_message("==========================================");    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Do debug output for a reduce.    *   * @param prod_num  the production we are reducing with.   * @param nt_num    the index of the LHS non terminal.   * @param rhs_size  the size of the RHS.   */  public void debug_reduce(int prod_num, int nt_num, int rhs_size)    {      debug_message("# Reduce with prod #" + prod_num + " [NT=" + nt_num + 	            ", " + "SZ=" + rhs_size + "]");    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Do debug output for shift.    *   * @param shift_tkn the token being shifted onto the stack.   */  public void debug_shift(token shift_tkn)    {      debug_message("# Shift under term #" + shift_tkn.sym + 		    " to state #" + shift_tkn.parse_state);    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Perform a parse with debugging output.  This does exactly the   *  same things as parse(), except that it calls debug_shift() and   *  debug_reduce() when shift and reduce moves are taken by the parser   *  and produces various other debugging messages.     */  public void debug_parse()    throws java.lang.Exception    {      /* the current action code */      int act;      /* the symbol/stack element returned by a reduce */      symbol lhs_sym;      /* information about production being reduced with */      short handle_size, lhs_sym_num;      /* set up direct reference to tables to drive the parser */      production_tab = production_table();      action_tab     = action_table();      reduce_tab     = reduce_table();      debug_message("# Initializing parser");      /* initialize the action encapsulation object */      init_actions();      /* do user initialization */      user_init();      /* the current token */      cur_token = scan();       debug_message("# Current token is #" + cur_token.sym);      /* push dummy symbol with start state to get us underway */      stack.push(new symbol(0, start_state()));      tos = 0;      /* continue until we are told to stop */      for (_done_parsing = false; !_done_parsing; )	{	  /* current state is always on the top of the stack */	  /* look up action out of the current state with the current input */	  act = get_action(((symbol)stack.peek()).parse_state, cur_token.sym);	  /* decode the action -- > 0 encodes shift */	  if (act > 0)	    {	      /* shift to the encoded state by pushing it on the stack */	      cur_token.parse_state = act-1;	      debug_shift(cur_token);	      stack.push(cur_token);	      tos++;	      /* advance to the next token */	      cur_token = scan();              debug_message("# Current token is #" + cur_token.sym);	    }	  /* if its less than zero, then it encodes a reduce action */	  else if (act < 0)	    {	      /* perform the action for the reduce */	      lhs_sym = do_action((-act)-1, this, stack, tos);	      /* look up information about the production */	      lhs_sym_num = production_tab[(-act)-1][0];	      handle_size = production_tab[(-act)-1][1];	      debug_reduce((-act)-1, lhs_sym_num, handle_size);	      /* pop the handle off the stack */	      for (int i = 0; i < handle_size; i++)		{		  stack.pop();		  tos--;		}	      	      /* look up the state to go to from the one popped back to */	      act = get_reduce(((symbol)stack.peek()).parse_state, lhs_sym_num);	      /* shift to that state */	      lhs_sym.parse_state = act;	      stack.push(lhs_sym);	      tos++;	      debug_message("# Goto state #" + act);	    }	  /* finally if the entry is zero, we have an error */	  else if (act == 0)	    {	      /* call user syntax error reporting routine */	      syntax_error(cur_token);	      /* try to error recover */	      if (!error_recovery(true))		{		  /* if that fails give up with a fatal syntax error */		  unrecovered_syntax_error(cur_token);		  /* just in case that wasn't fatal enough, end parse */		  done_parsing();		}	    }	}    }  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /* Error recovery code */  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** Attempt to recover from a syntax error.  This returns false if recovery    *  fails, true if it succeeds.  Recovery happens in 4 steps.  First we   *  pop the parse stack down to a point at which we have a shift out   *  of the top-most state on the error symbol.  This represents the   *  initial error recovery configuration.  If no such configuration is   *  found, then we fail.  Next a small number of "lookahead" or "parse   *  ahead" tokens are read into a buffer.  The size of this buffer is    *  determined by error_sync_size() and determines how many tokens beyond   *  the error must be matched to consider the recovery a success.  Next, 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产色综合久久不卡电影 | 精品国产凹凸成av人网站| 93久久精品日日躁夜夜躁欧美| 免费人成在线不卡| 蜜臀久久久99精品久久久久久| 午夜精品久久久久久| 亚洲韩国精品一区| 污片在线观看一区二区| 丝袜诱惑亚洲看片| 视频在线观看一区| 蜜臀久久久99精品久久久久久| 久久av资源站| 国产99精品视频| 国产电影一区二区三区| 国产99久久久国产精品免费看| 国产成人综合自拍| 99久久免费视频.com| 色婷婷综合久久久久中文一区二区| 色婷婷亚洲一区二区三区| 91免费视频网| 91精品国产色综合久久ai换脸 | 色综合天天综合网天天看片| 91偷拍与自偷拍精品| 欧美性欧美巨大黑白大战| 欧美巨大另类极品videosbest | 精品国产免费人成电影在线观看四季| 日韩一区二区在线免费观看| 欧美激情自拍偷拍| 亚洲欧美日韩一区二区| 午夜精彩视频在线观看不卡| 日本成人在线看| 国产不卡在线播放| 欧美日韩在线直播| 久久久综合精品| 亚洲人妖av一区二区| 日韩在线a电影| 国产高清不卡一区二区| 欧美亚洲高清一区| 久久亚洲春色中文字幕久久久| 综合精品久久久| 美女精品自拍一二三四| 国产成人免费xxxxxxxx| 欧美天堂亚洲电影院在线播放| 精品国产电影一区二区| 亚洲成人在线免费| 成人h动漫精品一区二| 欧美一二三在线| 一区二区三区自拍| 国产精品综合一区二区三区| 678五月天丁香亚洲综合网| 国产精品青草久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人aa视频在线观看| 欧美一区二区三区婷婷月色| 亚洲日本免费电影| 国产成人啪午夜精品网站男同| 欧美日本一区二区| 中文字幕欧美一| 国产成人激情av| 欧美草草影院在线视频| 日韩国产精品久久久| 91极品视觉盛宴| 1000精品久久久久久久久| 国产成人亚洲精品狼色在线| 精品久久久久久久久久久久包黑料| 亚洲精选在线视频| 99国产欧美另类久久久精品| 国产色一区二区| 国产在线日韩欧美| 日韩午夜av一区| 免费看欧美女人艹b| 欧美三级一区二区| 亚洲主播在线播放| 欧美亚洲国产一区二区三区| 亚洲宅男天堂在线观看无病毒| 色综合天天性综合| 亚洲精选一二三| 精品视频一区二区三区免费| 亚洲制服欧美中文字幕中文字幕| 欧美视频三区在线播放| 亚洲高清不卡在线| 678五月天丁香亚洲综合网| 秋霞电影一区二区| 亚洲精品在线免费播放| 国产精品资源在线| 国产精品久久久久久久岛一牛影视 | 日本久久电影网| 一区二区日韩av| 欧美日韩免费不卡视频一区二区三区| 亚洲一区精品在线| 日韩欧美视频在线| 国产999精品久久久久久绿帽| 欧美高清视频在线高清观看mv色露露十八 | 久久99蜜桃精品| 日韩三区在线观看| 久久99在线观看| 国产日韩欧美激情| 99re亚洲国产精品| 一区二区高清免费观看影视大全| 欧美日韩在线播| 狠狠色丁香婷婷综合久久片| 国产精品系列在线| 91久久线看在观草草青青| 亚洲成a天堂v人片| 亚洲精品一区二区在线观看| 成人午夜免费视频| 亚洲综合久久av| 日韩欧美不卡在线观看视频| 国v精品久久久网| 亚洲va欧美va国产va天堂影院| 2022国产精品视频| av午夜一区麻豆| 蜜桃视频一区二区三区在线观看| 国产亚洲精品7777| 欧美在线短视频| 国产美女精品一区二区三区| 亚洲男人的天堂网| 精品捆绑美女sm三区| 91麻豆自制传媒国产之光| 全国精品久久少妇| 亚洲欧美欧美一区二区三区| 精品欧美久久久| 91电影在线观看| 成人午夜av电影| 另类小说图片综合网| 亚洲精品国产无套在线观| 日韩欧美色综合| 欧美日韩另类国产亚洲欧美一级| 韩国视频一区二区| 亚洲日本在线视频观看| 制服丝袜av成人在线看| 国产成人亚洲精品青草天美| 亚洲在线免费播放| 国产亚洲欧美在线| 欧美性xxxxxx少妇| 国产中文字幕精品| 亚洲午夜久久久久中文字幕久| 久久久久久久综合色一本| 国产欧美中文在线| 国产91在线看| 国产伦精一区二区三区| 蜜臀久久99精品久久久久久9| 亚洲一区二区高清| 亚洲欧美激情一区二区| 国产目拍亚洲精品99久久精品| 精品91自产拍在线观看一区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲成人激情自拍| 亚洲日本在线a| 亚洲图片激情小说| 国产精品女人毛片| 国产欧美日韩在线观看| 久久久亚洲欧洲日产国码αv| 日韩一区二区在线看| 日韩三区在线观看| 欧美一级精品大片| 精品欧美一区二区在线观看| 精品国产一区二区三区av性色| 91精品国产综合久久福利| 91精品国产综合久久精品图片| 88在线观看91蜜桃国自产| 欧美精品 日韩| 欧美一区二区啪啪| 精品剧情在线观看| 欧美—级在线免费片| 亚洲图片欧美激情| 性做久久久久久免费观看| 婷婷成人激情在线网| 久久激情五月婷婷| 国产成人精品亚洲日本在线桃色| 国产999精品久久| 91久久精品一区二区三区| 欧美日韩一区在线观看| 日韩一区二区在线观看视频播放| 2024国产精品视频| 国产精品美女久久久久久| 亚洲少妇中出一区| 五月婷婷综合网| 紧缚奴在线一区二区三区| 国产成人小视频| 欧美综合一区二区| 日韩亚洲电影在线| 国产亚洲一区二区三区四区| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲va欧美va国产va天堂影院| 免费观看成人鲁鲁鲁鲁鲁视频| 国产一区不卡在线| 色吧成人激情小说| 日韩精品中文字幕在线不卡尤物| 国产婷婷色一区二区三区四区| 亚洲区小说区图片区qvod| 日韩黄色在线观看| 成人在线视频一区| 国产精品白丝jk白祙喷水网站| 91在线观看污| 精品理论电影在线| 亚洲一级二级三级| 成人中文字幕电影| 欧美偷拍一区二区| 久久亚洲春色中文字幕久久久|