Changeset 84 in default


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

commit: generator improved

Location:
v2/trunk
Files:
1 added
1 deleted
5 edited
3 moved

Legend:

Unmodified
Added
Removed
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.product/bnf.product

    r81 r84  
    1111   </launcherArgs> 
    1212 
    13    <launcher name="BNF"> 
     13   <launcher name="BNF Tools"> 
    1414      <solaris/> 
    1515      <win useIco="false"> 
     
    3131      <plugin id="javax.annotation"/> 
    3232      <plugin id="javax.inject"/> 
     33      <plugin id="javax.servlet"/> 
    3334      <plugin id="javax.xml"/> 
     35      <plugin id="lpg.runtime.java"/> 
    3436      <plugin id="org.antlr.runtime"/> 
     37      <plugin id="org.apache.ant"/> 
    3538      <plugin id="org.apache.batik.css"/> 
    3639      <plugin id="org.apache.batik.util"/> 
    3740      <plugin id="org.apache.batik.util.gui"/> 
     41      <plugin id="org.apache.commons.cli"/> 
    3842      <plugin id="org.apache.commons.lang"/> 
    3943      <plugin id="org.apache.commons.logging"/> 
    4044      <plugin id="org.apache.log4j"/> 
     45      <plugin id="org.eclipse.ant.core"/> 
    4146      <plugin id="org.eclipse.compare"/> 
    4247      <plugin id="org.eclipse.compare.core"/> 
     
    7883      <plugin id="org.eclipse.e4.ui.workbench.swt"/> 
    7984      <plugin id="org.eclipse.e4.ui.workbench3"/> 
     85      <plugin id="org.eclipse.emf.codegen"/> 
     86      <plugin id="org.eclipse.emf.codegen.ecore"/> 
    8087      <plugin id="org.eclipse.emf.common"/> 
    8188      <plugin id="org.eclipse.emf.common.ui"/> 
    8289      <plugin id="org.eclipse.emf.ecore"/> 
    8390      <plugin id="org.eclipse.emf.ecore.change"/> 
     91      <plugin id="org.eclipse.emf.ecore.edit"/> 
     92      <plugin id="org.eclipse.emf.ecore.editor"/> 
    8493      <plugin id="org.eclipse.emf.ecore.xmi"/> 
    8594      <plugin id="org.eclipse.emf.edit"/> 
    8695      <plugin id="org.eclipse.emf.edit.ui"/> 
     96      <plugin id="org.eclipse.emf.mwe.core"/> 
     97      <plugin id="org.eclipse.emf.mwe.utils"/> 
     98      <plugin id="org.eclipse.emf.mwe2.language"/> 
     99      <plugin id="org.eclipse.emf.mwe2.launch"/> 
     100      <plugin id="org.eclipse.emf.mwe2.lib"/> 
     101      <plugin id="org.eclipse.emf.mwe2.runtime"/> 
    87102      <plugin id="org.eclipse.equinox.app"/> 
    88103      <plugin id="org.eclipse.equinox.bidi"/> 
     
    101116      <plugin id="org.eclipse.equinox.util"/> 
    102117      <plugin id="org.eclipse.help"/> 
     118      <plugin id="org.eclipse.jdt.annotation"/> 
    103119      <plugin id="org.eclipse.jdt.compiler.apt" fragment="true"/> 
    104120      <plugin id="org.eclipse.jdt.compiler.tool" fragment="true"/> 
     
    106122      <plugin id="org.eclipse.jdt.core.manipulation"/> 
    107123      <plugin id="org.eclipse.jdt.debug"/> 
     124      <plugin id="org.eclipse.jdt.debug.ui"/> 
    108125      <plugin id="org.eclipse.jdt.launching"/> 
    109126      <plugin id="org.eclipse.jdt.ui"/> 
     
    113130      <plugin id="org.eclipse.ltk.core.refactoring"/> 
    114131      <plugin id="org.eclipse.ltk.ui.refactoring"/> 
     132      <plugin id="org.eclipse.ocl"/> 
     133      <plugin id="org.eclipse.ocl.common"/> 
     134      <plugin id="org.eclipse.ocl.ecore"/> 
    115135      <plugin id="org.eclipse.osgi"/> 
    116136      <plugin id="org.eclipse.osgi.services"/> 
     
    134154      <plugin id="org.eclipse.ui.workbench"/> 
    135155      <plugin id="org.eclipse.ui.workbench.texteditor"/> 
     156      <plugin id="org.eclipse.xpand"/> 
     157      <plugin id="org.eclipse.xtend"/> 
    136158      <plugin id="org.eclipse.xtend.lib"/> 
     159      <plugin id="org.eclipse.xtend.typesystem.emf"/> 
    137160      <plugin id="org.eclipse.xtext"/> 
    138161      <plugin id="org.eclipse.xtext.builder"/> 
    139162      <plugin id="org.eclipse.xtext.common.types"/> 
     163      <plugin id="org.eclipse.xtext.common.types.edit"/> 
    140164      <plugin id="org.eclipse.xtext.common.types.ui"/> 
     165      <plugin id="org.eclipse.xtext.ecore"/> 
     166      <plugin id="org.eclipse.xtext.generator"/> 
    141167      <plugin id="org.eclipse.xtext.junit4"/> 
    142168      <plugin id="org.eclipse.xtext.logging" fragment="true"/> 
     169      <plugin id="org.eclipse.xtext.smap"/> 
    143170      <plugin id="org.eclipse.xtext.ui"/> 
    144171      <plugin id="org.eclipse.xtext.ui.codetemplates"/> 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/META-INF/MANIFEST.MF

    r61 r84  
    1616 org.eclipse.xtext.common.types.ui, 
    1717 org.eclipse.xtext.ui.codetemplates.ui, 
    18  org.eclipse.compare 
    19 Import-Package: org.apache.log4j, 
     18 org.eclipse.compare, 
     19 org.eclipse.core.resources, 
     20 org.eclipse.ui.workbench, 
     21 org.eclipse.equinox.registry, 
     22 org.eclipse.emf.common, 
     23 com.google.inject, 
     24 org.eclipse.xtext 
     25Import-Package: com.ibm.icu.util;version="50.1.1", 
     26 org.apache.log4j, 
     27 org.eclipse.xtext.generator, 
    2028 org.eclipse.xtext.xbase.lib 
    2129Bundle-RequiredExecutionEnvironment: J2SE-1.5 
    22 Export-Package: de.ugoe.cs.swe.bnftools.ui.quickfix, 
    23  de.ugoe.cs.swe.bnftools.ui.contentassist, 
    24  de.ugoe.cs.swe.bnftools.ui.contentassist.antlr, 
    25  de.ugoe.cs.swe.bnftools.ui.internal 
     30Export-Package: de.ugoe.cs.swe.bnftools.ui.contentassist, 
     31 de.ugoe.cs.swe.bnftools.ui.contentassist.antlr; 
     32  uses:="org.eclipse.xtext, 
     33   de.ugoe.cs.swe.bnftools.services, 
     34   org.eclipse.xtext.ui.editor.contentassist.antlr.internal, 
     35   org.eclipse.xtext.ui.codetemplates.ui.partialEditing, 
     36   org.eclipse.xtext.ui.editor.contentassist.antlr, 
     37   de.ugoe.cs.swe.bnftools.ui.contentassist.antlr.internal", 
     38 de.ugoe.cs.swe.bnftools.ui.handler;uses:="org.eclipse.xtext.ui.resource,org.eclipse.xtext.resource,org.eclipse.core.commands", 
     39 de.ugoe.cs.swe.bnftools.ui.internal;uses:="org.eclipse.ui.plugin,org.osgi.framework,com.google.inject", 
     40 de.ugoe.cs.swe.bnftools.ui.quickfix;uses:="org.eclipse.xtext.ui.editor.quickfix,org.eclipse.xtext.validation" 
    2641Bundle-Activator: de.ugoe.cs.swe.bnftools.ui.internal.EbnfActivator 
     42Bundle-ClassPath: src/, 
     43 . 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/build.properties

    r67 r84  
    44bin.includes = META-INF/,\ 
    55               .,\ 
    6                plugin.xml 
    7 src.includes = .settings/ 
     6               plugin.xml,\ 
     7               src/ 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/handler/BT_GenerationHandlerPDF.java

    r72 r84  
    2626import org.eclipse.emf.ecore.xml.type.SimpleAnyType; 
    2727import org.eclipse.emf.ecore.xml.type.XMLTypeFactory; 
     28import org.eclipse.jface.dialogs.MessageDialog; 
    2829import org.eclipse.ui.IEditorInput; 
    2930import org.eclipse.ui.IEditorPart; 
     
    3233import org.eclipse.ui.IWorkbenchWindow; 
    3334import org.eclipse.ui.PlatformUI; 
     35import org.eclipse.ui.handlers.HandlerUtil; 
    3436import org.eclipse.ui.part.FileEditorInput; 
    3537import org.eclipse.xtext.builder.EclipseResourceFileSystemAccess2; 
     
    4244import com.google.inject.Provider; 
    4345 
    44 public class BT_GenerationHandler  extends AbstractHandler implements IHandler { 
     46import de.ugoe.cs.swe.bnftools.generator.EbnfGenerator; 
     47 
     48public class BT_GenerationHandlerPDF  extends AbstractHandler implements IHandler { 
    4549 
    4650        @Inject 
     
    5660    IResourceSetProvider resourceSetProvider; 
    5761      
     62    
     63     
    5864    @Override 
     65    public boolean isEnabled() { 
     66        return true; 
     67    } 
     68 
     69 
     70 
     71     
    5972    public Object execute(ExecutionEvent event) throws ExecutionException { 
    60           
     73          MessageDialog.openInformation(HandlerUtil.getActiveShell(event), 
     74                        "Hello", "Generating PDF"); 
     75         
     76           
    6177          //used to save the command name (defined in extensions) 
    6278          String mode = ""; 
     
    6581             mode = event.getCommand().getName(); 
    6682          } catch (NotDefinedException e1) { 
    67           // TODO Auto-generated catch block 
    6883            e1.printStackTrace(); 
    6984          } 
     
    127142          wrapper.setValue(mode); 
    128143          // 
    129           
     144          EbnfGenerator gen = (EbnfGenerator)generator; 
    130145          // add string to resource 
    131146          r.getContents().add(wrapper); 
    132           
    133           generator.doGenerate(r, fsa); 
    134           
     147          gen.doGenerate(r, fsa,false); 
     148          //generator.doGenerate(r, fsa); 
     149 
    135150          return null; 
    136151          
    137152        } 
    138      
    139     @Override 
    140     public boolean isEnabled() { 
    141         return true; 
    142     } 
    143   
    144153} 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf.ui/src/de/ugoe/cs/swe/bnftools/ui/labeling/EbnfLabelProvider.xtend

    r68 r84  
    55 
    66import com.google.inject.Inject 
     7import de.ugoe.cs.swe.bnftools.ebnf.Atom 
     8import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry 
     9import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList 
    710import de.ugoe.cs.swe.bnftools.ebnf.ImportSection 
    811import de.ugoe.cs.swe.bnftools.ebnf.Rule 
    9 import de.ugoe.cs.swe.bnftools.ebnf.BnfEntry 
    10 import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList 
    1112import de.ugoe.cs.swe.bnftools.ebnf.SingleDefinition 
    1213import de.ugoe.cs.swe.bnftools.ebnf.Term 
    13 import de.ugoe.cs.swe.bnftools.ebnf.Atom 
    14 import de.ugoe.cs.swe.bnftools.ebnf.StringRule 
     14import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider 
     15import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider 
    1516 
    1617/** 
     
    1920 * see http://www.eclipse.org/Xtext/documentation.html#labelProvider 
    2021 */ 
    21 class EbnfLabelProvider extends org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider { 
     22class EbnfLabelProvider extends DefaultEObjectLabelProvider { 
    2223 
    2324        @Inject 
    24         new(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider delegate) { 
     25        new(AdapterFactoryLabelProvider delegate) { 
    2526                super(delegate); 
    2627        } 
     
    3132         
    3233        def text(BnfEntry entry){ 
    33                 'BnfEntry' 
    34         } 
     34                'Rule: '+entry.rule.name 
     35                        } 
    3536         
    3637        def text(Rule rule){ 
    37                 'Rule: '+rule.name 
     38                 
    3839        } 
    3940         
  • 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} 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src/de/ugoe/cs/swe/bnftools/generator/FoToPdfOrRtf.java

    r82 r84  
    2323 
    2424 
    25 public class foToPdf { 
     25public class FoToPdfOrRtf { 
    2626 
    2727 
     
    3333        } 
    3434         
    35         private static void createfoFromPdf(String foFileName, String pdfFileName)throws IOException, FOPException, 
     35        public static void createRtfFromFo(String fileName) throws IOException, FOPException, 
     36        TransformerException{ 
     37 
     38                createRtfFromFo(fileName,fileName); 
     39        } 
     40         
     41        private static void createRtfFromFo(String foFileName, String pdfFileName)throws IOException, FOPException, 
    3642        TransformerException{ 
    3743                File file = new File(foFileName+".fo"); 
     
    4551                        // Step 3: Construct fop with desired output format 
    4652                        Fop fop = fopFactory.newFop(MimeConstants.MIME_RTF, out); 
     53 
     54                        // Step 4: Setup JAXP using identity transformer 
     55                        TransformerFactory factory = TransformerFactory.newInstance(); 
     56                        Transformer transformer = factory.newTransformer(); 
     57 
     58                        // Step 5: Setup input and output for XSLT transformation 
     59                        Source src = new StreamSource(file); 
     60 
     61                        // Resulting SAX events (the generated FO) must be piped through to FOP          
     62                        Result res = new SAXResult(fop.getDefaultHandler()); 
     63 
     64                        // Step 6: Start XSLT transformation and FOP processing 
     65                        transformer.transform(src, res); 
     66                } finally { 
     67                        out.close(); 
     68                } 
     69        } 
     70         
     71         
     72        private static void createfoFromPdf(String foFileName, String pdfFileName)throws IOException, FOPException, 
     73        TransformerException{ 
     74                File file = new File(foFileName+".fo"); 
     75                // Step 1: Construct a FopFactory 
     76                FopFactory fopFactory = FopFactory.newInstance(); 
     77 
     78                // Step 2: Set up output stream. 
     79                OutputStream out = new BufferedOutputStream(new FileOutputStream(new File(pdfFileName+".pdf"))); 
     80 
     81                try { 
     82                        // Step 3: Construct fop with desired output format 
     83                        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out); 
    4784 
    4885                        // Step 4: Setup JAXP using identity transformer 
Note: See TracChangeset for help on using the changeset viewer.