|
|
|
Re: Elegant way of determining which terminal was matched? [message #1497367 is a reply to message #1497283] |
Wed, 03 December 2014 19:34 |
|
Hi,
i cannot reproduce your problem or i dont understand it
Model:
constants+=SimpleConstant*;
SimpleConstant:
value=(ID | STRING)
;
/*
* generated by Xtext
*/
package org.xtext.example.mydsl2.generator
import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.xtext.generator.IGenerator
import org.eclipse.xtext.generator.IFileSystemAccess
import org.xtext.example.mydsl2.myDsl.SimpleConstant
import org.eclipse.xtext.nodemodel.util.NodeModelUtils
import org.xtext.example.mydsl2.myDsl.MyDslPackage
import org.eclipse.xtext.RuleCall
/**
* Generates code from your model files on save.
*
* see http://www.eclipse.org/Xtext/documentation.html#TutorialCodeGeneration
*/
class MyDslGenerator implements IGenerator {
override void doGenerate(Resource resource, IFileSystemAccess fsa) {
fsa.generateFile('greetings.txt',
'''
«FOR sc : resource.allContents.filter(typeof(SimpleConstant)).toIterable»
«FOR node : NodeModelUtils.findNodesForFeature(sc, MyDslPackage.Literals.SIMPLE_CONSTANT__VALUE)»
«IF node.grammarElement instanceof RuleCall»
«(node.grammarElement as RuleCall).rule.name»
«ENDIF»
«ENDFOR»
«ENDFOR»
''')
}
}
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
Powered by
FUDForum. Page generated in 0.02393 seconds