2

私は Flex/Bison を初めて使用するので、非常に素朴な質問です。
もしそうなら、私を許してください。宿題の質問のように見えるかもしれませんが、以下のコンセプトに基づいてプロジェクトを実装する必要があります。

私の質問は 2 つの部分に関連しています。
質問 1
Bison パーサーでは、オプションの入力にルールを提供するにはどうすればよいですか。


同様に、ステートメントの例 を解析する必要があります:

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana'

ここで比率トークンはオプションにすることができます。同様に、オプションのトークンが多数ある場合、同じものに対してパーサーで文法を提供するにはどうすればよいですか?

私のコードは次のようになります

%start program
program : TK_COUNTRY TK_IDENTIFIER TK_STATE TK_IDENTIFIER TK_POPULATION TK_IDENTIFIER ...
すべてのトークンはレクサーで定義されています。オプションのトークンが多いので、「|」を使うと その場合、可能な入力の組み合わせにはさまざまな方法があります。

質問 2
コメントには入力の一部として引用符が含まれている可能性が高いため、ユーザーが同じものを解釈するために提供できる token タグを追加しました。

例 :

-country='USA' -state='INDIANA' -population='100' -ratio='0.5' -comment='Census study for Indiana$'s population' -tag=$  

ここで、Indiana$'s を、Indiana's since として再解釈する必要があります-tag=$

これらのトピックを理解するために、入力または関連資料を提供してください。

4

1 に答える 1

1

Q1: 4 つの可能なトークンがあると想定しています: NAME 、「-」、「=」、および VALUE

次に、文法は次のようになります。

attrs: 
    attr attrs
    | attr
    ;

attr:
   '-' NAME '=' VALUE
   ;

特定の属性名を識別トークンにするのとは異なり、「国、州、および人口が必要ですが、比率はオプションです」と言う方法はないことに注意してください。これは、パーサーによって生成されたデータを分析するプログラムの部分のタスクになります。

Q2: パーサーの実行中に字句解析が機能する方法を変更することを考えているのは理解できます。これは、少なくとも初心者にとっては良い考えではありません。構文解析とは対照的に、字句解析について考え始めたことがありますか?

于 2010-05-27T15:17:35.200 に答える