Ignore:
Timestamp:
10/22/10 15:45:35 (14 years ago)
Author:
zeiss
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/visitor/EbnfVisitor.java

    r11 r12  
    11package de.ugoe.cs.swe.bnftools.visitor; 
    22 
     3import java.util.Stack; 
     4 
    35import org.eclipse.emf.ecore.EObject; 
    4  
    5 import com.sun.xml.internal.bind.v2.schemagen.xmlschema.Import; 
    66 
    77import de.ugoe.cs.swe.bnftools.ebnf.Atom; 
     
    1212import de.ugoe.cs.swe.bnftools.ebnf.GroupedSequence; 
    1313import de.ugoe.cs.swe.bnftools.ebnf.HookCombinator; 
     14import de.ugoe.cs.swe.bnftools.ebnf.Import; 
    1415import de.ugoe.cs.swe.bnftools.ebnf.MergeRule; 
    1516import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence; 
     
    2627         
    2728        protected EObject rootNode = null; 
    28  
     29        protected Stack<Boolean> lastElementStack = new Stack<Boolean>(); 
     30         
    2931        public EbnfVisitor() { 
    3032        } 
     
    4648 
    4749        private void acceptInner(EObject node) { 
     50                Boolean lastElement = false; 
     51                if (node.eContents().size() == 0) 
     52                        lastElement = true; 
     53                lastElementStack.push(lastElement);              
    4854                for (int i=0; i < node.eContents().size(); i++) { 
    4955                        EObject currentNode = (EObject) node.eContents().get(i); 
     56                        if (i == node.eContents().size()-1) { 
     57                                lastElement = true; 
     58                                lastElementStack.pop(); 
     59                                lastElementStack.push(lastElement); 
     60                        } 
    5061                        dispatcherBefore(currentNode); 
    5162                        acceptInner(currentNode); 
    5263                        dispatcherAfter(currentNode); 
    5364                } 
     65                lastElementStack.pop(); 
     66        } 
     67         
     68        protected boolean isLastElement() { 
     69                return lastElementStack.peek(); 
    5470        } 
    5571         
Note: See TracChangeset for help on using the changeset viewer.