我使用StringTemplate执行从一种语言到多个后端的模型转换。我从手动生成的AST开始,它具有类层次结构,例如,语言中的类型。我的问题与StringTemplate中复杂层次结构的转换有关。让我们检查一下转换一个Type层次结构,这个层次结构是在类似于以下内容的类层次结构中实现的:
class Type { }
class IntType extends Type { ...bitsize for integer here... }
class Boolean extends Type {}
class ArrayType extends Type { ...array dimensions and base type here}
class RecordType extends Type { ...field information here...}是否有任何基于类型信息的条件分支的方法?我已经看到了很多例子,它们直接在具体的语法中对一种语言进行条件分支,模板遵循产生式,但这不是我的情况。在我看来,至少有四种方法可以做到:
我相信,也有其他办法可以做到这一点;这里有很大的灵活性。我目前倾向于选择#2,但我想从这个受人尊敬的社区获得一些信息:)。我想以一种简单、本地的方式(我在添加额外后端时不需要更改文件中的内容)和清理。
非常感谢!
麦克
发布于 2014-12-03 09:50:49
根据我对您的问题的理解,工作可能是4和2的组合,其中您有一个将返回类型的方法,并根据它执行一个条件if- the块,并且在主模板本身内调用另一个模板。这样,您只需要在类中添加一个额外的getter即可。如果这不能解决你的问题就告诉我。
https://stackoverflow.com/questions/25391738
复制相似问题