Создание AST в Go - PullRequest
       25

Создание AST в Go

0 голосов
/ 05 августа 2020

Я пишу парсер для нестандартного языка в go. Моя проблема в том, что каждый узел в синтаксическом дереве отличается в зависимости от его типа (будь то if, variableDef или funcDef) и, следовательно, имеет разные значения, но мне нужны указатели, которые могут указывать на любой из них, чтобы дать ему treei sh функциональность.

Кто-то предложил иметь interface с чем-то вроде метода describe (зависит от реализации), описывающего узел, но тогда проблема в что он будет возвращать разные вещи в зависимости от узла, которым он является. (A funcDef даст args []variableDef и body []node, но if даст cond bin и body []node, а переменная def будет иметь type typ и name string)

Первоначально написал это в JS и использовал гибкость JSON в своих интересах. Я слышал, что Go имеет встроенную поддержку JSON, но я не думаю, что хочу go по этому маршруту.

...