フレックス/ビソンの新機能です。私は、ジェネリック型をサポートする単純なプログラミング言語用のパーサーを作成しようとしています。一般的なタイプのシグネチャのFlex Bison解析。
私はこのような行を解析したいと思います:
fn foo(Vector<Pair<int, Array<T>>) -> void {}
私はVector<Pair<int, Array<T>>
のために手作りのパーサを書く方法を想像することができます。私は遭遇した数字の<を追跡して、型の指定が完了したかどうかを判断するのに遭遇する数と一致させます。
タイプについては、文法仕様は私が信じるようなものでしょうか?
TYPE : ID | ID '<' TYPE '>'
;
TYPEがFlexまたはBisonによって作成されたトークンであるかどうかはわかりません。
私の理解では、次のとおりです。
- IDは、パーサ(フレックス)
- TYPEはバイソンで定義された `用語」(ではないトークン)であるからトークンです。
- FlexとBisonは、空白とタブを自動的に無視します。
私は正しい方向に向いていますか?
注:このプロジェクトは教育目的のためのものです。宿題などではありません。
詳細な回答ありがとうございます。優れた開発者のベストプラクティスに関する良い文書がありますか?私が見ているチュートリアルは、アクションブロックから直接ステートメントを出力する方法やインタープリタを実行する方法などです。また、状況依存のアクションコードを作成する方法もあります。そのためのベストプラクティスはありますか?例:関数型宣言のコンテキスト内にある場合は、TypeオブジェクトをArg型のリストに追加します。この型を、関数の戻り型のコンテキスト内にある場合は、関数宣言の戻り型として設定します。 – user855
@ user855 - この回答をお試しください:http://stackoverflow.com/questions/37186142/goto-label-in-the-same-loop-in-bison/37208755#37208755 –