util.sa
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

  1. class ANTLR_UTIL is
  2.    
  3.    strip_front_back( src, head, tail : STR ) : STR is
  4.       h : INT := src.search( head );
  5.       t : INT := search_backwards( src, tail );
  6.       
  7.       if ( h = -1 or t = -1 ) then 
  8.  return src;
  9.       end;
  10.       
  11.       beg : INT := h + head.size;
  12.       num : INT := t - beg;
  13.       return src.substring( beg , num );
  14.  
  15.    end;
  16.    
  17.    -- search backwards by finding the repeatedly searching forwards.
  18.    -- OK, so it isn't the most efficient algorithm, but we'll live with it
  19.    -- for now.
  20.    search_backwards( src, s : STR ) : INT is 
  21.       if ( s.size = 0 ) then
  22.  return src.size;
  23.       end;
  24.        
  25.       from  : INT := 0;
  26.       i     : INT := -1;
  27.       index : INT := -1;
  28.       loop
  29.  i := src.search( s , from );
  30.  if ( i = -1 ) then
  31.     break!;
  32.  end;
  33.  index := i;
  34.  from := index + s.size;
  35.       end;
  36.       return index;
  37.    end;
  38.          
  39. end;