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

编译器/解释器

开发平台:

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/common_ast_with_hidden_tokens.sa#1 $
  7. *)
  8. -- A ANTLR_COMMON_AST whose initialization copies hidden token
  9. -- information from the Token used to create a node.
  10. class ANTLR_COMMON_AST_WITH_HIDDEN_TOKENS < $ANTLR_AST{ANTLR_COMMON_AST_WITH_HIDDEN_TOKENS} is
  11.    include ANTLR_BASE_AST{SAME}; -- create_from_token->super_create_from_token
  12.    
  13.    -- references to hidden tokens
  14.    readonly attr hidden_before, hidden_after : ANTLR_COMMON_HIDDEN_STREAM_TOKEN; 
  15.    const ASTNULL : SAME := 
  16.  SAME::create( ANTLR_COMMON_TOKEN::NULL_TREE_LOOKAHEAD, "<ASTNULL>" );
  17.       
  18.    attr ttype : INT;
  19.    attr text : STR;
  20.    create : SAME is
  21.       res : SAME := new;
  22.       return res;
  23.    end;
  24.    
  25.    dup : SAME is
  26.       if ( void(self) ) then
  27.  return void;
  28.       end;
  29.       return #SAME( ttype, text );
  30.    end;
  31.    create( typ : INT, txt : STR ) : SAME is
  32.       res : SAME := new;
  33.       res.ttype := typ;
  34.       res.text  := txt;
  35.       return res;
  36.    end;
  37.    create_from_ast( t : SAME ) : SAME is
  38.       res : SAME := create( t.ttype, t.text );
  39.       return res;
  40.    end;
  41.    create_from_token( t : $ANTLR_TOKEN ) : SAME is
  42.       res : SAME := create( t.ttype, t.text );
  43.       return res;
  44.    end;
  45.  
  46.    create_from_token( tok : ANTLR_COMMON_HIDDEN_STREAM_TOKEN ) : SAME is
  47.       res : SAME := #( tok.ttype, tok.text );
  48.       res.hidden_before := tok.hidden_before;
  49.       res.hidden_after  := tok.hidden_after;
  50.       return res;
  51.    end;
  52. end;