在Vala和Genie之间有什么方法可以编译吗?

时间:2011-12-28 08:36:48

标签: compilation vala genie

Vala和Genie之间的关系非常类似于js和CoffeeScript之间的关系。 js和cs可以使用$ coffee -bc$ js2coffee相互编译。 Genie和Vala怎么样?

1 个答案:

答案 0 :(得分:4)

您可以使用valac --dump-tree将Genie转换为Vala。从Vala转换为Genie有点复杂,因为libval​​a中的Vala.CodeWriter类只输出Vala,而不是Genie。可能有可能通过继承Vala.CodeVisitor来创建输出Genie的东西(就像Vala.CodeWriter那样),但是还没有人这样做。

那就是说,我完全不知道为什么你会这么想。您可以在同一个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