Есть ли способ компилировать между Vala и Genie? - PullRequest
3 голосов
/ 28 декабря 2011

Отношения между Vala и Genie очень похожи на отношения между js и CoffeeScript. js и cs могут компилироваться друг с другом с помощью $ coffee -bc и $ js2coffee. Как насчет Джин и Вала здесь?

1 Ответ

4 голосов
/ 28 декабря 2011

Вы можете использовать valac --dump-tree для преобразования из Genie в Vala. Преобразование из Vala в Genie немного сложнее, поскольку класс Vala.CodeWriter в libvala выводит только Vala, а не Genie. Вероятно, было бы возможно создать что-то, что выводит Genie, путем создания подкласса Vala.CodeVisitor (как это делает Vala.CodeWriter), но пока никто этого не сделал.

Тем не менее, я понятия не имею, почему вы захотите. Вы можете свободно смешивать файлы Genie и Vala в одном вызове valac.

Изменяя пример из 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

И это в микс-вала.вала:

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
...