goでカスタム言語のパーサーを書いています。私の問題は、構文ツリーの各ノードがその型 ( anif
または avariableDef
または a funcDef
) に基づいて異なるため、値が異なることですが、ツリーのような機能を与えるために、それらのいずれかを指すことができるポインターが必要です。 .
誰かが、ノードを説明するメソッド (実装依存) のinterface
ようなものを持つことを提案しdescribe
ましたが、問題は、ノードに基づいて異なるものを返すことです。(AfuncDef
はargs []variableDef
andを与えbody []node
ますが、if はcond bin
andを与えbody []node
、変数 def は andtype typ
を与えますname string
)
私はもともとこれを JS で書き、JSON の柔軟性を利用しました。GoにはJSONサポートが組み込まれていると聞いたことがありますが、その道をたどりたいとは思いません。