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/ui/formatter/EbnfFormatterVisitor.java

    r11 r12  
    33import org.eclipse.emf.common.util.EList; 
    44import org.eclipse.emf.ecore.EObject; 
    5  
    6 import com.sun.xml.internal.bind.v2.schemagen.xmlschema.Import; 
    75 
    86import de.ugoe.cs.swe.bnftools.ebnf.Atom; 
     
    1311import de.ugoe.cs.swe.bnftools.ebnf.GroupedSequence; 
    1412import de.ugoe.cs.swe.bnftools.ebnf.HookCombinator; 
     13import de.ugoe.cs.swe.bnftools.ebnf.Import; 
    1514import de.ugoe.cs.swe.bnftools.ebnf.MergeRule; 
    1615import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence; 
     
    2928        private FormatterConfig config; 
    3029 
     30        int ruleCounter = 0; 
     31         
    3132        public EbnfFormatterVisitor(EObject rootNode, FormatterConfig config) { 
    3233                super(rootNode); 
     
    6768 
    6869        protected void visitAfter(Term node) { 
    69                 SingleDefinition parent = (SingleDefinition) node.eContainer(); 
    70                 int index = parent.getTerms().indexOf(node); 
    71                 if ((parent.getTerms().size() > 0) && (index < parent.getTerms().size()-1)) 
     70                if (!isLastElement()) 
    7271                        buf.append(" "); 
    7372        } 
     
    106105 
    107106        protected void visitBefore(Import node) { 
     107                buf.append("import \"" + node.getImportURI() + "\";\n"); 
    108108        } 
    109109 
     
    118118 
    119119        protected void visitBefore(OptionalSequence node) { 
     120                buf.append("["); 
    120121        } 
    121122 
    122123        protected void visitAfter(OptionalSequence node) { 
     124                buf.append("]"); 
    123125        } 
    124126 
    125127        protected void visitBefore(RepeatedSequence node) { 
     128                buf.append("{"); 
    126129        } 
    127130 
    128131        protected void visitAfter(RepeatedSequence node) { 
     132                buf.append("}"); 
     133                if (node.isMorethanonce()) 
     134                        buf.append("+"); 
    129135        } 
    130136 
    131137        protected void visitBefore(Rule node) { 
     138                if (ruleCounter == 0) 
     139                        buf.append("\n"); 
     140                 
     141                ruleCounter++; 
    132142                if (node.getRulenumber() > 0) 
    133143                        buf.append(node.getRulenumber() + ". "); 
     
    147157 
    148158        protected void visitBefore(RuleReference node) { 
     159                buf.append(node.getRuleref().getName()); 
    149160        } 
    150161 
     
    162173 
    163174        protected void visitAfter(SingleDefinition node) { 
     175                if (!isLastElement()) 
     176                        buf.append(" | "); 
     177                 
    164178        } 
    165179 
     
    168182                        buf.append("\"" + node.getLiteral() + "\""); 
    169183                else if (node.getColon() != null) 
    170                         buf.append(" " + node.getColon()); 
     184                        buf.append("\"\"\""); 
    171185        } 
    172186 
Note: See TracChangeset for help on using the changeset viewer.