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

📄 input_buffer.sa

📁 SRI international 发布的OAA框架软件
💻 SA
字号:
(* 

  ANTLR Translator Generator
  Project led by Terence Parr at http://www.jGuru.com
  Software rights: http://www.antlr.org/RIGHTS.html
 
  $Id: input_buffer.sa,v 1.1.1.1 2002/01/02 19:59:09 agno Exp $

*)

partial class ANTLR_INPUT_BUFFER is

   -- clones both antlr.ByteBuffer and antlr.InputBuffer

   private attr input : $ISTREAM;
   private attr num_to_consume : INT;
   private attr n_markers : INT;
   private attr marker_offset : INT;

   private attr queue : CIRCULAR_QUEUE{CHAR};

   init is
      num_to_consume := 0;
      n_markers := 0;
      marker_offset := 0;
      queue := #CIRCULAR_QUEUE{CHAR}(1);
   end;

   consume is
      num_to_consume := num_to_consume + 1;
   end;

   commit is 
      n_markers := n_markers - 1;
   end;

   is_marked : BOOL is
      return ( n_markers /= 0 );
   end;

   LA ( i : INT ) : CHAR is
      fill(i);
      return queue[ marker_offset + i - 1 ];
   end;

   mark : INT is 
      sync_consume;
      n_markers := n_markers + 1;
      return marker_offset;
   end;

   rewind ( mrk : INT ) is
      sync_consume;
      marker_offset := mrk;
      n_markers := n_markers - 1;
   end;

   private sync_consume is

      loop while!( num_to_consume > 0 );

	 if n_markers > 0 then
	    marker_offset := marker_offset + 1;
	 else
	    queue.remove_first;
	 end;

	 num_to_consume := num_to_consume - 1;

      end;

   end;

   stub fill ( amount : INT );

--   fill ( amount : INT ) is
--      sync_consume;
--
--      loop while!( queue.num_entries < amount + marker_offset );
--	 queue.append( input.get );
--      end;      

--   end;

end;

⌨️ 快捷键说明

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