No.2ベストアンサー
- 回答日時:
バッカス・ナウア記法の意味のBNFでいいんですよね?
大ざっぱな手順としてはこんな感じでしょうか。
1. 現れうる全ての終端記号を列挙する。
2. そのBNFで定義する文法全体を表す非終端記号を決める。
3. 定義がまだ与えられていない非終端記号を左辺として、::= の右辺にその非終端記号の定義を書く。定義に必要ならば、右辺に新たな非終端記号を導入してもよい。左辺の非終端記号と同じ非終端記号が右辺にも現れる再帰的定義になる場合もある。
4. 未定義の非終端記号がなくなるまで、3を繰り返す。
5. 定義したBNFに過不足がないかを確認する。
たとえば、1桁以上の数字(ただし、先頭の桁に0が現れてはいけない)を表すならばこんな感じでしょうか。答えは一つではないので、これとは違う定義も作れます。
<number> ::= <non-zero-digit> | <non-zero-digit> <digits>
<digits> ::= <digit> | <digit> <digits>
<non-zero-digit> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<digit> ::= 0 | <non-zero-digit>
この回答への補足
そのように解いていくのですか。
それとわからないところがあるんですが、非終端記号と終端記号です
下に例としてプログラムにこのような文があったとき
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};
void A
void B
これだと非終端記号はAとBで終端記号はSat, Sun, Mon, Tue, Wed, Thu, Friってことになるんですか?
その部分がよくわからないので、教えていただけませんか?
No.3
- 回答日時:
> 例としてプログラムにこのような文があったとき
> 略
> これだと非終端記号はAとBで終端記号はSat, Sun, Mon, Tue, Wed, Thu, Friってことになるんですか?
この文脈で唐突に「プログラム」と言われても、その「プログラム」とBNFがどう関係するのかが分かりません。
C言語のenum文の文法を表すBNFを書けということなら、enumや { や ; も終端記号になるでしょう。
百歩譲って
・質問番号4700530や4701108の人と同じような課題をやっていて
・void Aとかvoid Bというのが「何らかの記号列を文法規則に従って読み込む関数」を表している
のだと仮定するならば、
関数A()やB()が読み込める記号列を表す非終端記号として<A>や<B>を導入するのは悪くない考えかもしれません。
ところで、上記の仮定をすると今度はNo.1さんとの
「ある言語の文法をどのように決めて行くかということですか?」
「そのようにとらえてかまいません。」
というやり取りとの関係がよく分からなくなります。
この回答への補足
そうですか、唐突過ぎて申し訳ありません。
私の説明不足ですみません。
そして、ご迷惑をかけて申し訳ありません。
アドバイスを頂き、ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(資産運用・投資) BNFさん迷える子羊さんだったら 今から投資を始めるなら どうしますか 2 2022/04/28 23:02
- 株式市場・株価 Bnf とかシスとかテスタだとかそんなにたくさんいらないと思うけど百億円単位くらいなのでしょうかよろ 1 2023/05/16 08:54
- 株式市場・株価 BNFさんは元手150万円を100億円にしたんですよね?それも信用取引なしで。有名な事件から資産が莫 2 2022/11/24 21:00
- 高校 高校生です。 中学の三年間不登校であまり勉強が進みませんでした。 通信制の高校に入り、レポートの提出 3 2022/10/11 09:40
- デスクトップパソコン パソコンのマクロを勉強したいと思っています。 前職で職場の方ですごく詳しい方がおられて勉強しようと思 6 2022/04/12 12:57
- 建設業・製造業 河川の積算の勉強に役立つ本はありませんか? 例えば数量計算書や図面から間違いがないか確認し、 確認後 2 2023/02/09 19:40
- インターンシップ 就職活動・インターンシップについて。 インターンシップの申込のために履歴書を書くのですが、そこに2つ 1 2022/04/22 04:04
- 高校 国語が超苦手です。現代文もめちゃくちゃで、下手したら小学生レベルもできないかもしれません。 偏差値は 5 2023/04/03 19:11
- 中学校 テスト勉強で例えば社会の勉強をする際に、教科書に書いてある文をノートに書くのって意味ありますか? 読 5 2022/08/26 00:45
- その他(学校・勉強) 小学生から高1までずっと不登校です。勉強方法を教えてください 3 2022/11/06 22:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
消えたコロン
-
C言語 exitの使い方
-
VBAでダブルコーテーション入り...
-
jsp~jspにhiddenを使って変数...
-
エラーの意味は? Lvalue req...
-
テキストボックスの値を変数に...
-
EXCEL/VBA 変数の値をクリップ...
-
[VBS]変数を定数に変換する方法...
-
フォームを開くときに、コンボ...
-
DataGridView 複数行同時変更...
-
excelの、ある数式内の{}の意...
-
java final
-
DWORDって
-
processing エラーで、 "cannot...
-
VB.NET 2つの配列を連動して並...
-
Excel-vba 文字列と変数を...
-
VBAの定数の使い方で、計算値を...
-
vbsでテキストファイル内の文字...
-
足して100になるような乱数のア...
-
vbaで極大値を抽出する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BNFの書き方を教えてください
-
いつもお世話になっております。
-
EXCEL VBA Like演算子 パターン...
-
VBScriptでの正規表現パターン...
-
正規表現で、英数記号を含むパ...
-
BNF(バッカス・ナウア・記法)
-
ビット否定(反転)の記号はど...
-
C言語 exitの使い方
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
excelの、ある数式内の{}の意...
-
エクセルへのデータの貼付時に...
-
配列の値を置換するにはどうす...
-
EXCEL/VBA 変数の値をクリップ...
-
だれがとけるの?
-
C言語 列挙型(enum型)変数について
-
VisualStudio2022でC言語プログ...
-
[VBS]変数を定数に変換する方法...
おすすめ情報