有没有一种方法可以在Vala和Genie之间进行编译?

3

Vala和Genie之间的关系很像js和CoffeeScript之间的关系。js和cs可以通过$ coffee -bc$ js2coffee相互编译。那么在这里,Genie和Vala又是如何的呢?

1个回答

4
您可以使用valac --dump-tree将Genie转换为Vala。从Vala转换到Genie会更加复杂,因为libvala中的Vala.CodeWriter类只输出Vala,而不是Genie。可能可以通过子类化Vala.CodeVisitor(就像Vala.CodeWriter一样)创建某些输出Genie的东西,但目前还没有人这样做。
话虽如此,我绝对不知道您为什么要这样做。您可以在同一valac调用中自由混合使用Genie和Vala文件。
http://live.gnome.org/Genie修改一个示例,将其放置在mix-genie.gs中:
[indent=4]

class Foo : Object
    prop a : int

    init     
        print "foo is intitialized"

    final
        print "foo is being destroyed"

    /* only class properties may be set in creation methods */    
    construct (b : int)
        a = b

    /* only class properties may be set in creation methods */        
    construct with_bar (bar : int)
        a = bar

而这是在mix-vala.vala中:

private static int main (string[] args) {
  var foobar = new Foo (10);
  var foobar2 = new Foo.with_bar (10);

  return 0;
}

然后使用类似以下的方式进行编译

valac -o mix mix-genie.gs mix-vala.vala

从Genie编译似乎对我来说已经非常强大了。我尝试学习Genie(讨厌花括号和太多的单词),考虑阅读Vala的文档以进一步学习。因此,如果有一个工具可以在两种语言之间翻译,那将会很有帮助。 - jiyinyiyong
1
我目前正在开发一个项目,其中大约90%是Python代码,10%是Vala代码。如果我能将Vala代码转换成Genie代码,那就更好了,因为这样看起来更像是由大部分项目组成的Python代码。 - robru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接