質問

EBNFの使い方、特にスペースで区切られた一連の単語、

のような単語のシーケンスを定義する方法を理解しようとしています。
<non-terminal> [<word>[ <word>[ <word>[ ...]]] <non-terminal>
.

  1. ワード端末を定義する正しい方法は何ですか?
  2. 必要な空白を表す正しい方法は何ですか?
  3. オプションである繰り返しリストはどのように表していますか?
  4. EBNF anywhereには、サブインクリティのチュートリアルがありますか?
  5. 前もって感謝します!

役に立ちましたか?

解決

あなたの字句アナライザーがスペースのトークン(ターミナル)を返すかどうかを決める必要があります。また、どのように言葉を定義しているか、またはあなたの文法がそれをすることになるのかを決める必要があります(その場合、字句分析装置は端末として戻るつもりですか?)。

残りのために、それはほとんどの場合、ISO規格であるEBNF表記のニセーティを理解することの問題です(ISO 14977:1996 - そして自由に利用可能な標準。 ISO )ですが、実際には無視されている標準です。 (私が扱う言語 - C、C ++、SQL - 定義文書にBNF表記を使用するが、それらのいずれかにはEBNFではありません。)

  1. あなたが単語の正しい定義をしたいものは何でも。たとえば、P. J. O'Neillという名前を扱う方法について考える必要があります。字句解析装置はどのトークンに戻りますか?
  2. これは前の問題と密接に関係しています。字句解析装置が戻ることになる端末とは何ですか。
  3. オプションの繰り返しリストは、{および}ブレースに囲まれているか、またはKleene Starの表記を使用できます。
  4. 【href="http://www.cl.cam.ac.uk/~mgk25/-14977】【合計BNF拡張BNF - 汎用ベース標準 ebnfを説明するRS Scowenによって。 ebnf
  5. 空白の空間区切りの単語リストを定義して、

    を使用して定義できると思います。
    non_empty_word_list = word { space word }
    
    .

    ここで、すべての名前が非端末がある。あなたはあなたのシステムの関連端末の観点から定義する必要があるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top