Ignore:
Timestamp:
07/02/14 13:59:44 (10 years ago)
Author:
hkaulbersch
Message:

commit: generator improved

File:
1 edited

Legend:

Unmodified
Added
Removed
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/EbnfGenerator.xtend

    r82 r84  
    44package de.ugoe.cs.swe.bnftools.generator 
    55 
     6import de.ugoe.cs.swe.bnftools.ebnf.Atom 
     7import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry 
     8import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList 
     9import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf 
     10import de.ugoe.cs.swe.bnftools.ebnf.GroupedSequence 
     11import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence 
     12import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence 
     13import de.ugoe.cs.swe.bnftools.ebnf.Rule 
     14import de.ugoe.cs.swe.bnftools.ebnf.RuleReference 
     15import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition 
     16import de.ugoe.cs.swe.bnftools.ebnf.StringRule 
     17import de.ugoe.cs.swe.bnftools.ebnf.Term 
     18import java.io.File 
    619import org.eclipse.emf.ecore.resource.Resource 
     20import org.eclipse.xtext.generator.IFileSystemAccess 
     21import org.eclipse.xtext.generator.IFileSystemAccessExtension2 
    722import org.eclipse.xtext.generator.IGenerator 
    8 import org.eclipse.xtext.generator.IFileSystemAccess 
    9 import de.ugoe.cs.swe.bnftools.ebnf.EtsiBnf 
    10 import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry 
    11 import de.ugoe.cs.swe.bnftools.ebnf.Rule 
    12 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList 
    13 import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition 
    14 import de.ugoe.cs.swe.bnftools.ebnf.Term 
    15 import de.ugoe.cs.swe.bnftools.ebnf.GroupedSequence 
    16 import de.ugoe.cs.swe.bnftools.ebnf.Atom 
    17 import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence 
    18 import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence 
    19 import de.ugoe.cs.swe.bnftools.ebnf.RuleReference 
    20 import de.ugoe.cs.swe.bnftools.ebnf.StringRule 
    21 import java.io.File 
    22 import org.eclipse.xtext.generator.IFileSystemAccessExtension2 
    23 import org.eclipse.emf.common.util.URI; 
    24 import org.eclipse.xtext.generator.IFileSystemAccessExtension 
    25 import java.io.PrintWriter 
    2623 
    2724/** 
     
    3229class EbnfGenerator implements IGenerator { 
    3330 
    34         //generation of the xsl-file 
    35         override void doGenerate(Resource resource, IFileSystemAccess fsa) { 
     31 
     32 def void doGenerate(Resource resource, IFileSystemAccess fsa,boolean mode) { 
    3633                var String workspacePath = WorkspaceResolver.getWorkspace(); 
    3734                for (e : resource.allContents.toIterable.filter(EtsiBnf)) { 
     
    4542 
    4643                                if (file.exists) { 
     44                                        //true -> pdf, false -> rtf 
    4745                                         
    48                                         foToPdf.createPdfFromFo(fullUri.substring(0, fullUri.length - 3)); 
     46                                        if(mode){ 
     47                                                FoToPdfOrRtf.createRtfFromFo(fullUri.substring(0, fullUri.length - 3)); 
     48                                        }else{ 
     49                                                FoToPdfOrRtf.createPdfFromFo(fullUri.substring(0, fullUri.length - 3)); 
     50                                        } 
     51                                         
     52//                                      fsa.deleteFile(e.name + ".fo"); 
     53                                } 
     54                        } 
     55                } 
     56        } 
     57         
     58        override void doGenerate(Resource resource, IFileSystemAccess fsa) { 
     59                var String workspacePath = WorkspaceResolver.getWorkspace(); 
     60                for (e : resource.allContents.toIterable.filter(EtsiBnf)) { 
     61                        if (e.bnfEntry.size != 0) { 
     62                                fsa.generateFile(e.name + ".fo", e.compile) 
     63                                System.out.println("fo generated"); 
     64                                //generate pdf 
     65                                var uri = (fsa as IFileSystemAccessExtension2).getURI(e.name + ".fo"); 
     66                                var String fullUri = workspacePath + uri.path.substring(10, uri.path.length); 
     67                                var File file = new File(fullUri); 
     68 
     69                                if (file.exists) { 
     70                                         
     71                                        FoToPdfOrRtf.createPdfFromFo(fullUri.substring(0, fullUri.length - 3)); 
    4972//                                      fsa.deleteFile(e.name + ".fo"); 
    5073                                } 
     
    84107        ''' 
    85108 
    86         def compile(Rule rule) '''<fo:block><fo:inline id="«rule.name»" color="purple">«IF rule.rulenumber != 0»«rule. 
     109        def compile(Rule rule) '''«System.out.println(rule.name)»<fo:block><fo:inline id="«rule.name»"  color="purple">«IF rule.rulenumber != 0»«rule. 
    87110                rulenumber».    «ENDIF»«rule.name»</fo:inline>  ::=     «rule.definitionList.compile»</fo:block>''' 
    88111 
    89         def compile(DefinitionList dList) '''«FOR sDef : dList.singleDefinition»«sDef.compile»«IF !sDef.equals( 
    90                 dList.singleDefinition.last)» | «ENDIF»«ENDFOR»''' 
     112        def compile(DefinitionList dList) '''«IF dList!= null»«FOR sDef : dList.singleDefinition»«sDef.compile»«IF !sDef.equals( 
     113                dList.singleDefinition.last)» | «ENDIF»«ENDFOR»«ENDIF»''' 
    91114 
    92115        def compile(SingleDefinition sDefinition) '''«FOR term : sDefinition.terms»«term.compile»«ENDFOR»''' 
     
    110133 
    111134        def compile(StringRule sRule) '''«IF sRule.colon != null»«sRule.colon»«ENDIF»«IF sRule.literal != null»«sRule. 
    112                 literal»        «ENDIF»''' 
     135                literal.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")»  «ENDIF»''' 
    113136 
    114137} 
Note: See TracChangeset for help on using the changeset viewer.