2

小さな言語を書きたいので、BoostSpiritを使うことにしました。それは私にはうまく見えます。私は、spiritを使用してレクサーを記述し、パーサーを使用して構文ツリーを作成できることを知っています。Spiritで構文ツリーをスキャンして結果を生成することは可能ですか?(またはそれは解析のためだけですか?)結果を生成するために利用可能な関数はありますか、それとも別のツールを使用する必要がありますか?この簡単な質問で申し訳ありませんが、Spiritのドキュメントを簡単に見ている間、私は本当に情報を見つけることができませんでした。

これに加えて、Spiritを使用して記述されたパーサーで自分のレクサーを使用できますか?前もって感謝します。

4

1 に答える 1

3

確かに、これは実際には「実際の質問ではない」の候補になります。あなたがドキュメントページにリンクしていなかったら、私はそのリンクだけでそれを却下したでしょう。

たまたま、サンプルを見逃している可能性があります。

  • http://www.boost.org/doc/libs/1_51_0/libs/spirit/example/qi/compiler_tutorial/

  • 単純な式計算機の多くのバージョン(おそらくそれらを順番に見てください)

  • conjureコンパイラこのコンパイラは、単純な言語をコンパイルして実行することができます。ここのサンプル:

    /* The factorial (in conjure) */
    
    int factorial(n)
    {
        if (n <= 0)
            return 1;
        else
            return n * factorial(n-1);
    }
    
    int main(n)
    {
        return factorial(n);
    }
    



Q.これに加えて、Spiritを使用して作成されたパーサーで自分のレクサーを使用できますか?

A.はい。トークンイテレータインターフェイスを公開し、それを解析APIへの入力イテレータとして使用するだけです。詳細については、SpiritLexの例を参照してください。

于 2012-10-05T14:26:03.943 に答える