common_ast.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/common_ast.sa#1 $
  7. *)
  8. -- ANTLR_COMMON_AST is a homogeneous AST.  its right/down are of identical type
  9. class ANTLR_COMMON_AST < $ANTLR_AST{ANTLR_COMMON_AST} is
  10.    include ANTLR_BASE_AST{ANTLR_COMMON_AST};
  11.    -- The AST Null object; the parsing cursor is set to this when
  12.    -- it is found to be null.  This way, we can test the
  13.    -- token type of a node without having to have tests for null
  14.    -- everywhere.
  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. end;