Changes between Version 2 and Version 3 of Developer


Ignore:
Timestamp:
06/25/14 10:30:27 (10 years ago)
Author:
hkaulbersch
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Developer

    v2 v3  
    3333!EtsiBnf: 
    3434 
    35  'grammar'name=ID 
    36  
    37         (       type='/__bnf__'?';' 
    38  
    39                 (importSection=!ImportSection)? 
    40  
    41                 (bnfEntry+=!BnfEntry)+ 
    42  
    43         ) 
    44  
    45         | 
    46  
    47         (       type='/delta'';' 
    48  
    49                 (importSection=!ImportSection)? 
    50  
    51                 (deltaEntry+=!DeltaEntry)* 
    52  
    53         ) 
    54  
    55         | 
    56  
    57         (       type='/merge'';' 
    58  
    59                 (importSection=!ImportSection)? 
    60  
    61                 (mergeEntry+=!MergeEntry)* 
    62  
    63         ) 
     35  'grammar'name=ID 
     36 
     37  (        type='/__ bnf__ '?';' 
     38 
     39  (importSection=!ImportSection )? 
     40 
     41  (bnfEntry+=!BnfEntry )+ 
     42 
     43  ) 
     44 
     45  | 
     46 
     47  (        type='/delta'' ;''' 
     48 
     49  (importSection=!ImportSection )? 
     50 
     51  (deltaEntry+=!DeltaEntry )* 
     52 
     53  ) 
     54 
     55  | 
     56 
     57  (        type='/merge'' ;''' 
     58 
     59  (importSection=!ImportSection )? 
     60 
     61  (mergeEntry+=!MergeEntry )* 
     62 
     63  ) 
    6464 
    6565; 
     
    7979'''defvoid'''checkUnusedRule(Rule rule) { 
    8080 
    81   '''  var'''  List<!RuleReference  > references = !EbnfAnalysisUtils  .''  findReferences''  (rule); 
    82  
    83   '''  var'''  List<Rule> references1 =        !EbnfAnalysisUtils  .''  findReferences''  (rule,resourceDescriptions); 
    84  
    85   '''  if'''  ((references.size+references1.size ==0) && (rule.getRulenumber() !=1)) 
    86  
    87 warning(''unusedRuleDescription'', !EbnfPackage$Literals::''RULE!__NAME'',''unusedRuleDescription'', rule.name); 
     81  '''   var'''   List<!RuleReference   > references = !EbnfAnalysisUtils   .''   findReferences''   (rule); 
     82 
     83  '''   var'''   List<Rule> references1 =        !EbnfAnalysisUtils   .''   findReferences''   (rule,resourceDescriptions); 
     84 
     85  '''   if'''   ((references.size+references1.size ==0) && (rule.getRulenumber() !=1)) 
     86  warning(''unusedRuleDescription'', !EbnfPackage$Literals::''RULE!__NAME'',''unusedRuleDescription'', rule.name); 
    8887 
    8988} 
     
    121120  "upcase.png",[ element, context | 
    122121 
    123   '''  var'''  Rule rule = element'''  as'''  Rule; 
    124  
    125   '''  var'''  IXtextDocument xtextDocument = context.getXtextDocument(); 
    126  
    127   '''  var'''  ICompositeNode node = !NodeModelUtils  .''  findActualNodeFor''  (rule); 
    128  
    129   '''  varint'''  offset = node.textRegion.offset; 
    130  
    131   '''  var'''  String nodeText = node.text; 
    132  
    133   '''  varint'''  textLength = nodeText.length -2; 
     122  '''   var'''   Rule rule = element'''   as'''   Rule; 
     123 
     124  '''   var'''   IXtextDocument xtextDocument = context.getXtextDocument(); 
     125 
     126  '''   var'''   ICompositeNode node = !NodeModelUtils   .''   findActualNodeFor''   (rule); 
     127 
     128  '''   varint'''   offset = node.textRegion.offset; 
     129 
     130  '''   var'''   String nodeText = node.text; 
     131 
     132  '''   varint'''   textLength = nodeText.length -2; 
    134133 
    135134  xtextDocument.replace(offset, textLength,""); 
     
    161160Where thedoGeneratemethode defines how the files given by a Resource and a !IfileSystemAccess should generate a new file. While for every relevant Entity from the 
    162161 
    163 BNF a  
     162BNF a 
    164163 
    165164compile 
     
    169168'''override''' '''void''' doGenerate(Resource resource, IFileSystemAccess fsa) { 
    170169 
    171   '''  for'''  (e : resource.allContents.''  toIterable''  .''  filter''  (!EtsiBnf  )) { 
    172  
    173   '''  if'''  (e.bnfEntry.size !=0) { 
    174  
    175   fsa.generateFile(e.name +".fo", e.compile) 
     170  '''   for'''   (e : resource.allContents.''   toIterable''   .''   filter''   (!EtsiBnf   )) { 
     171 
     172  '''    if'''   (e.bnfEntry.size !=0) { 
     173     fsa.generateFile(e.name +".fo", e.compile) 
     174 
     175    } 
    176176 
    177177  } 
    178178 
    179   } 
    180  
    181 } 
    182  
    183 '''def'''compile(!DefinitionList dList)!'''«'''FOR'''sDef : ist.singleDefinition»«sDef.compile» «'''IF''' !sDef.equals(dList.singleDefinition.''last'')»|«'''ENDIF'''»«'''ENDFOR'''»!''' 
     179} 
     180 
     181'''def '''compile(!DefinitionList dList)!'''«'''FOR'''sDef : ist.singleDefinition»«sDef.compile» «'''IF''' !sDef.equals(dList.singleDefinition.''last'')»|«'''ENDIF'''»«'''ENDFOR'''»!''' 
    184182 
    185183Based on the generated .fo file a PDF-document can be generated for this the class de.ugoe.cs.swe.bnftools.ebnf/de.ugoe.cs.swe.ebnf.generator/foToPDF can be used, either by giving the .fo file and the output URI without Ending or simply the giving the classpath of the file. 
     
    189187'''overridevoid'''doGenerate(Resource resource, IFileSystemAccess fsa) { 
    190188 
    191 '''var'''String workspacePath = !WorkspaceResolver.''getWorkspace''(); 
    192  
    193 '''for'''(e : resource.allContents.''toIterable''.''filter''(!EtsiBnf)) { 
    194  
    195 '''if'''(e.bnfEntry.size !=0) { 
    196  
    197 fsa.generateFile(e.name +".__fo__", e.compile) 
    198  
    199 //generate__pdf__ 
    200  
    201 '''var'''uri = (fsa'''as'''IFileSystemAccessExtension2).getURI(e.name +".__fo__"); 
    202  
    203 '''var'''String fullUri = workspacePath + uri.path.substring(10,                                         uri.path.length); 
    204  
    205 '''var'''File file ='''new'''File(fullUri); 
    206  
    207 '''if'''(file.exists) { 
    208  
    209 foToPdf.''createPdfFromFo''(fullUri.substring(0, fullUri.length -3)); 
    210  
    211 } 
    212  
    213 } 
    214  
    215 } 
     189'''  var'''String workspacePath = !WorkspaceResolver.''getWorkspace''(); 
     190 
     191'''  for'''(e : resource.allContents.''toIterable''.''filter''(!EtsiBnf)) { 
     192 
     193'''    if'''(e.bnfEntry.size !=0) { 
     194 
     195      fsa.generateFile(e.name +".__fo__", e.compile) 
     196 
     197      //generate__pdf__ 
     198 
     199'''       var '''uri = (fsa'''as'''IFileSystemAccessExtension2).getURI(e.name +".__fo__"); 
     200 
     201'''       var '''String fullUri = workspacePath + uri.path.substring(10,                                         uri.path.length); 
     202 
     203'''       var '''File file ='''new'''File(fullUri); 
     204 
     205'''       if'''(file.exists) { 
     206 
     207        foToPdf.''createPdfFromFo''(fullUri.substring(0, fullUri.length -3)); 
     208 
     209      } 
     210 
     211    } 
     212 
     213 } 
    216214 
    217215} 
     
    229227e.g.: 
    230228 
    231 @Inject'''extension'''!EbnfGrammarAccess 
    232  
    233 '''overrideprotectedvoid'''configureFormatting(!FormattingConfig c) { 
    234  
    235 c.setLinewrap(0,1,2).before(SL_COMMENTRule) 
    236  
    237 c.setLinewrap(0,1,2).before(ML_COMMENTRule) 
    238  
    239 c.setLinewrap(0,1,1).after(ML_COMMENTRule) 
    240  
    241 '''var'''!EbnfGrammarAccess f = getGrammarAccess'''as'''!EbnfGrammarAccess; 
    242  
    243 c.setLinewrap.before(f.ruleRule); 
    244  
    245 c.setLinewrap.before(f.importRule); 
    246  
    247 c.setNoSpace.after(f.ruleAccess.rulenumberINTTerminalRuleCall_0_0_0) 
    248  
    249 } 
     229@Inject''' extension '''!EbnfGrammarAccess 
     230 
     231''' override protected void'''configureFormatting(!FormattingConfig c) { 
     232 
     233    c.setLinewrap(0,1,2).before(SL_COMMENTRule) 
     234 
     235    c.setLinewrap(0,1,2).before(ML_COMMENTRule) 
     236 
     237    c.setLinewrap(0,1,1).after(ML_COMMENTRule) 
     238 
     239'''     var '''!EbnfGrammarAccess f = getGrammarAccess''' as '''!EbnfGrammarAccess; 
     240 
     241    c.setLinewrap.before(f.ruleRule); 
     242 
     243    c.setLinewrap.before(f.importRule); 
     244 
     245    c.setNoSpace.after(f.ruleAccess.rulenumberINTTerminalRuleCall_0_0_0) 
     246 
     247 } 
    250248 
    251249The Entities are recieved via  an Inector that gives access to The Grammar. 
     
    261259'''defvoid'''_createChildren(!DocumentRootNode parentNode, !EtsiBnf bnf) { 
    262260 
    263 createNode(parentNode,bnf); 
     261   createNode(parentNode,bnf); 
    264262 
    265263} 
     
    275273'''def'''text(!ImportSection sec){ 
    276274 
    277 'Imports' 
     275   'Imports' 
    278276 
    279277} 
     
    311309<extension 
    312310 
    313 point="org.eclipse.ui.handlers"> 
    314  
    315 <handler 
     311       point="org.eclipse.ui.handlers"> 
     312 
     313  <handler 
    316314 
    317315class="!de.ugoe.cs.swe.bnftools.ui.EbnfExecutableExtensionFactory:de.ugoe.cs.swe.bnftools.ui.handler.GenerationHandler" 
    318316 
    319 commandId="de.ugoe.cs.swe.bnftools.ui.handler.!GenerationCommand"> 
    320  
    321 </handler> 
     317       commandId="de.ugoe.cs.swe.bnftools.ui.handler.!GenerationCommand"> 
     318 
     319    </handler> 
    322320 
    323321</extension> 
     
    325323<extension 
    326324 
    327 point="org.eclipse.ui.commands"> 
    328  
    329 <commandname="Generate Code" 
    330  
    331 id="de.ugoe.cs.swe.bnftools.ui.handler.!GenerationCommand"> 
    332  
    333 </command> 
     325       point="org.eclipse.ui.commands"> 
     326 
     327       <commandname="Generate Code" 
     328 
     329           id="de.ugoe.cs.swe.bnftools.ui.handler.!GenerationCommand"> 
     330 
     331       </command> 
    334332 
    335333</extension> 
     
    337335<extensionpoint="org.eclipse.ui.menus"> 
    338336 
    339 <menuContributionlocationURI="!popup:org.eclipse.jdt.ui.PackageExplorer"> 
    340  
    341 <command 
    342  
    343 commandId="de.ugoe.cs.swe.bnftools.ui.handler.!GenerationCommand" 
    344  
    345 style="push"> 
    346  
    347 <visibleWhen 
    348  
    349 checkEnabled="false"> 
    350  
    351 <iterate> 
    352  
    353 <adapttype="org.eclipse.core.resources.IResource"> 
    354  
    355 <testproperty="org.eclipse.core.resources.name" 
    356  
    357 value="*.bnf"/> 
    358  
    359 </adapt> 
    360  
    361 </iterate> 
    362  
    363 </visibleWhen> 
    364  
    365 </command> 
     337   <menuContributionlocationURI="!popup:org.eclipse.jdt.ui.PackageExplorer"> 
     338 
     339       <command 
     340 
     341           commandId="de.ugoe.cs.swe.bnftools.ui.handler.!GenerationCommand" 
     342 
     343           style="push"> 
     344 
     345           <visibleWhen 
     346 
     347                checkEnabled="false"> 
     348 
     349                <iterate> 
     350 
     351       <adapttype="org.eclipse.core.resources.IResource"> 
     352 
     353          <testproperty="org.eclipse.core.resources.name" 
     354 
     355                  value="*.bnf"/> 
     356 
     357       </adapt> 
     358 
     359    </iterate> 
     360 
     361         </visibleWhen> 
     362 
     363       </command> 
    366364 
    367365</menuContribution> 
     
    377375@Override 
    378376 
    379 '''public'''Object execute(!ExecutionEvent event)'''throws'''!ExecutionException { 
    380  
    381 ISelection selection = !HandlerUtil.''getCurrentSelection''(event); 
    382  
    383 '''        if'''(selection'''instanceof'''IStructuredSelection) { 
    384  
    385 IStructuredSelection structuredSelection = (IStructuredSelection)                         selection; 
    386  
    387 Object firstElement = structuredSelection.getFirstElement(); 
    388  
    389 '''                if'''(firstElement'''instanceof'''IFile) { 
    390  
    391 IFile file = (IFile) firstElement; 
    392  
    393 IProject project = file.getProject(); 
    394  
    395 IFolder srcGenFolder = project.getFolder("src-gen"); 
    396  
    397 '''                        if'''(!srcGenFolder.exists()) { 
    398  
    399 '''                        try'''{ 
    400  
    401 srcGenFolder.create('''true''','''true''','''new'''!NullProgressMonitor()); 
    402  
    403 }'''catch'''(!CoreException e) { 
    404  
    405 '''                                returnnull'''; 
    406  
    407 } 
    408  
    409 } 
    410  
    411 '''                final'''!EclipseResourceFileSystemAccess2 fsa =fileAccessProvider.get(); 
    412  
    413 fsa.setOutputPath(srcGenFolder.getFullPath().toString()); 
    414  
    415 URI uri = URI.''createPlatformResourceURI''(file.getFullPath().toString(),'''true'''); 
    416  
    417 !ResourceSet rs =resourceSetProvider.get(project); 
    418  
    419 Resource r = rs.getResource(uri,'''true'''); 
    420  
    421 generator.doGenerate(r, fsa); 
    422  
    423 } 
    424  
    425 } 
    426  
    427 '''        returnnull'''; 
     377'''public '''Object execute(!ExecutionEvent event) '''throws '''!ExecutionException { 
     378 
     379   ISelection selection = !HandlerUtil.''getCurrentSelection''(event); 
     380 
     381'''           if'''(selection''' instanceof '''IStructuredSelection) { 
     382 
     383   IStructuredSelection structuredSelection = (IStructuredSelection)                         selection; 
     384 
     385   Object firstElement = structuredSelection.getFirstElement(); 
     386 
     387'''                   if'''(firstElement '''instanceof''' IFile) { 
     388 
     389      IFile file = (IFile) firstElement; 
     390 
     391      IProject project = file.getProject(); 
     392 
     393      IFolder srcGenFolder = project.getFolder("src-gen"); 
     394 
     395'''                              if'''(!srcGenFolder.exists()) { 
     396 
     397'''                                  try'''{ 
     398 
     399           srcGenFolder.create('''true''','''true''','''new'''!NullProgressMonitor()); 
     400 
     401         }'''catch'''(!CoreException e) { 
     402 
     403'''                                             returnnull'''; 
     404 
     405         } 
     406 
     407      } 
     408 
     409'''                      final'''!EclipseResourceFileSystemAccess2 fsa =fileAccessProvider.get(); 
     410 
     411      fsa.setOutputPath(srcGenFolder.getFullPath().toString()); 
     412 
     413      URI uri = URI.''createPlatformResourceURI''(file.getFullPath().toString(),'''true'''); 
     414 
     415      !ResourceSet rs =resourceSetProvider.get(project); 
     416 
     417      Resource r = rs.getResource(uri,'''true'''); 
     418 
     419      generator.doGenerate(r, fsa); 
     420 
     421    } 
     422 
     423 } 
     424 
     425'''         returnnull'''; 
    428426 
    429427}