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

编译器/解释器

开发平台:

Others

  1. (* 
  2.   ANTLR Translator Generator
  3.   Project led by Terence Parr at http://www.jGuru.com
  4.   Software rights: http://www.antlr.org/RIGHTS.html
  5.  
  6.   $Id: //depot/code/org.antlr/release/antlr-2.7.0/lib/sather/Antlr/token_stream_basic_filter.sa#1 $
  7. *)
  8. class ANTLR_TOKEN_STREAM_BASIC_FILTER{ TOKEN < $ANTLR_TOKEN } < $ANTLR_TOKEN_STREAM{ TOKEN } is
  9.    
  10.    -- the set of token types to discard
  11.    attr discard_set : INT_SET;
  12.    -- the input stream
  13.    private attr input : $ANTLR_TOKEN_STREAM{TOKEN};
  14.    
  15.    discard_type( ttype : INT ) is
  16.       discard_set := discard_set.insert( ttype );
  17.    end;
  18.    
  19.    create( input : $ANTLR_TOKEN_STREAM{TOKEN} ) : SAME is
  20.       res : SAME := new;
  21.       res.input := input;
  22.       res.discard_set := #INT_SET;
  23.       return res;
  24.    end;
  25.    next_token : TOKEN is
  26.       tok : TOKEN := input.next_token;
  27.       loop while!( ~void(tok) and discard_set.member( tok.ttype ) );
  28.  tok := input.next_token;
  29.       end;
  30.       return tok;
  31.    end;
  32.    
  33. end;