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

编译器/解释器

开发平台:

Others

  1. package antlr;
  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/antlr/TreeBlockContext.java#1 $
  7.  */
  8. /**The context needed to add root,child elements to a Tree.  There
  9.  * is only one alternative (i.e., a list of children).  We subclass to
  10.  * specialize. MakeGrammar.addElementToCurrentAlt will work correctly
  11.  * now for either a block of alts or a Tree child list.
  12.  *
  13.  * The first time addAlternativeElement is called, it sets the root element
  14.  * rather than adding it to one of the alternative lists.  Rather than have
  15.  * the grammar duplicate the rules for grammar atoms etc... we use the same
  16.  * grammar and same refToken behavior etc...  We have to special case somewhere
  17.  * and here is where we do it.
  18.  */
  19. class TreeBlockContext extends BlockContext {
  20. protected boolean nextElementIsRoot = true;
  21. public void addAlternativeElement(AlternativeElement e) {
  22. TreeElement tree = (TreeElement)block;
  23. if ( nextElementIsRoot ) {
  24. tree.root = (GrammarAtom)e;
  25. nextElementIsRoot = false;
  26. }
  27. else {
  28. super.addAlternativeElement(e);
  29. }
  30. }
  31. }