私はF#とFParsecに慣れていないので、これまでに得たものを見せて困惑することすらしたくありません。
FParsecの例では、ASTのすべてのタイプ(私が見る)は、単一の値、リスト、またはタプルのタイプの省略形です。
たとえば、解析された関数名とそのパラメーターを保持することになっている複合型がある場合はどうなりますか?
したがって、文字列メンバーとリストメンバーを持つf(a, b, c)
タイプのオブジェクトに解析されます。一致するパーサーからどのようにすればよいですか?PFunction
Name
PParameter
Parameters
f(a, b, c)
|>>
PFunction
これまでにできることは、複合パーサーを作成することだけですが、それを何にも変えることはできません。電卓の例は、Termのようなタイプを含むASTを作成した場合も同様ですが、代わりに、パーサーではなくインタープリターのように見えるため、ASTはありません。その上、Termはおそらく他のタイプの省略されたコンポーネントのタプルにすぎません。
ありがとう!