私はF#とFParsecで新しいので、これまでに得たものを示して自分自身を恥ずかしくすることさえしたくありません。複合型への構文解析
FParsecの例では、ASTのすべての型は、単一の値、リスト、またはタプルの型略称です。
構文解析された関数名とそのパラメータを保持すると思われる複合型がある場合はどうなりますか?
そこで、f(a, b, c)
は紐状部材Name
とPParameter
リスト部材Parameters
を有するタイプPFunction
のオブジェクトに解析されるであろう。 f(a, b, c)
と|>>
に一致するパーサーからPFunction
に移動するにはどうすればよいですか?
私がこれまで行うことができるのは、コンポーザーを作成することですが、それを何かにすることはできません。 Calculatorの例は、Termのような型を含むASTを作成した場合に似ていますが、代わりにパーサーではなくインタープリタであるように見えますので、ASTはありません。さらに、Termは他のタイプの省略されたコンポーネントのタプルにすぎないでしょう。
ありがとうございます!
私はFParsecを使用していないが、fsyaccにあなたは一般的に区別組合として、それをモデル化するでしょう。例: 'Func = stringのFunc *パラメータリスト' – Daniel
ありがとう。 1)これは、私が、CalcがASTを生成した場合、Termが見えると仮定していることです - そして、パーサーからそのようなタプルを返す方法についても混乱していますが、2)私のモチベーションであるC#にインポートするときに親しみやすいものではありません。 –
私はpipe2を使う必要があると思います。しかし、私は、たとえば、かっこを破棄することができる必要があります。おそらくpipe4を使用して、パイプ関数に入力されている2つ(2番目と4番目)のかっこ文字を破棄することができますが、それ以上の破棄がある場合はどうなりますか?私は '。>>'と '。<<'で時間を短縮していますか? –