1

私は通訳がどのように機能するかを理解するためにバイソンとフレックスで遊んでいます。{INT:INT}範囲(または)、文字列({string "ここに任意のテキスト"})などのいくつかのことをすでに実行しました{INT:INT:INT}が、ユーザーがフォームに配列を入力したかどうかをバイソンが理解するのに役立つ正しい方法を決定できません[INT, INT, ID, ID, INT, ..., INT, ID, ID...]

最初に頭に浮かぶのは、flexキーワードを使用してBEGINから行末まで調べることですが、次のメンバーがINTかIDかを理解するなど、多くのことが必要になるため、これはばかげているようです。これはあまり良い方法ではありません。 。他に何ができますか?[バイソンを使ってやりたいのですが、バイソンを再帰的に見せたり、バイソンに含まれているものをすべて取得したりする方法がわかりません]。どうすればいいですか?

前もって感謝します!

4

1 に答える 1

3

シンプル - 再帰ルールを作成するだけです。

expr :- INT | ID;
array_expr :- array_expr expr | expr;
array :- '[' array_expr ']';

Bison をやったのは久しぶりですが、ほぼ正解です。

于 2012-11-12T15:08:15.503 に答える