ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaの課題丸投げコミュの課題BNFの拡張?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
講義で正規表現の勉強してたんですけど、課題が下記なんです。
授業をあんまり覚えてないので大変にできません。
これできないと単位もらえないんです。汗。
先生に質問するにもわからなさすぎて何聞けばいいのかわからず、
先に進めません。いろいろ調べても見たのですが混乱する一方で・・・。
助けてください、お願いします。

1.四則演算で関数を扱えるようにBNFを拡張せよ。
2.自分で対象を選び、文法構造をBNFで示せ
3.2で定義したBNFに対する構文図ないしは状態遷移図を作成せよ。

不適切でしたら削除お願いいたします。

コメント(16)

BNFは解りますか?

[a] < > 括弧<>の中の文字列は1つのメタ変数である。
[b] ::= 左辺が右辺のように定義されているという意味である。
[c] | または(or)
[d] その他の記号 その記号そのものを示している。
[e] 要素の並び 上記の[a][d]がいくつか並んで書かれている場合、
それらの記号等をその順に並べた記号列を示す。

http://www.wormjp.umin.jp/jp/acemanjp13/node28.html
ここから抜粋

で、四則演算で関数を扱えるようにBNFを拡張って
どういう意味なんだろ?
四則演算を定義しろってことじゃないよねぇ???

あんまりBNFには詳しくないからなぁ、、、、
誰か知ってる人教えてください。
BNFについての知識ありがとうございます!
設問の意味については同じ授業をとってる人に聞いてみたいと思います。
丸投げすることすらできず自分情けないですね。。
ちょっと聞いてみたのですが、javaとはあまり関係ないようです。
正規表現も関係のないようです。

下記は数式のBNFの定義らしいのです。

<数式1>::=<数式2>{{+|−}<数式2>}*

<数式2>::=<数式3>{{×|÷}<数式3>}*

<数式3>::=(<数式1>)|<数>

<数>::={0|1|2|3|4|5|6|7|8|9}*

そして、数式ではなく、関数をBNFで定義して欲しいという課題らしいのですがどうしたらいのでしょうか?
今、学校でみんなから情報得まして考えましてできました!
2番以降も頑張ってみたいと思いますー。
ご迷惑おかけしました、失礼します。
あぁ、意味解った(すっきり)笑
Javaには関係しないと思いますが、
何か質問あればついでなので答えられると思います。

頑張ってください☆
>しのぶさん
ありがとうございます!
明日までに終わらせたいのですが、2のいい対象が思いつきません。
具体的な関数とかがいいのでしょうか?
それとも関数から離れたものを選んだほうが良いのでしょうか?
例えばJava言語とか(難易度:面倒)
例えばLispとか(難易度:低そう)
例えばXMLとか(難易度:見つかりそうw)

時間あるなら上記のようなのが面白いでしょうけど、
急ぎだったらふじっぺさんの1がお手軽でいいんじゃないでしょうか?
英語の5文型とか簡単そう。関係詞節とか入れる??
 <関数> ::=<関数名>(<引数>)
<関数名> ::=<識別子>
 <引数> ::=<式>
<式> ::=<項> | <項> [ + | - ] <式>
<項> ::=<要素>| <要素>[ * | / ] <項>
 <要素> ::=<変数>| (<式>)
<変数> ::=<英字><英数字>*
<英数字> ::=0-9|<英字>
 <英字> ::=a-z A-Z

一番はそもそもこういうことであっているのでしょうか?

確かに授業で文章については少しやりました。
見てわかるとおり、私のレベルは低いので
文章にしようと思うのですが、文章もいい文章が思いつきません。

授業では「私は車を食べる」とかやった気がしますが・・。
文法構造的にはあっているが意味的におかしいとか・・・
<変数> ::=<英字>(<英字>|<英数字>)*
もし多変数関数もつかうなら
<関数> ::=<関数名>(<引数>(,|<引数>*)

かなぁ。
BNFはあんまり書いたこと無いので間違ってたらゴメン。

日本語の文法(適当に)とか?
<主語> := (<名詞>|<代名詞>)(は|が)
とか、、、
>11: ミナさん

ちゃんとそのBNFを理解できているなら、レベルは低くありませんよ。

私がBNFの存在を知ったのは、社会人になってからでしたし。(私が知った時点で、周囲にBNFを知っている人がいたかもかなり疑問)
なんだか凄いおかしい、、、
<関数> ::=<関数名>(<引数>(,|<引数>*)

<関数> ::=<関数名>(<引数>(,<引数>)*)
皆様ありがとうございます!!!!
英語の5文型についてやってみることにしました!
ほんとに助かりました、ありがとうございました。
(しのぶ@14 さん)
> なんだか凄いおかしい

リテラルとしての '(' と、EBNF でのメタ記号としての '(' の区別がされていないので、

> <関数> ::=<関数名>(<引数>(,<引数>)*)

もアウト X-(

ミナ@4 さんの事例に従う ( BNF のメタ括弧は '{' を使う.. ) のであれば、

<関数> ::= <関数名> ( <引数> { , <引数> } * )

とする必要がありますね...。

# これだと、『「引数」が一つ以上』を意味することになるので、「引数なし」も許すとなると、更に、変更が...

==

(ミナ@11 さん)
> <要素> ::=<変数>|(<式>)

これだと、引数に、「変数」しか指定できなくなってしまいます ( まあ、EBNF 的には問題ないが.. )。元の例題 ( ミナ@4 ) を生かすならば、

<要素> ::= <変数> | <数> | ( <式> )

と、「数」も追加した方が自然でしょう ( もちろん、「数」の定義も追加する.. )。

更に、せっかく「関数」を定義したのですから、これも「要素」に追加して構わないと思います。

したがって、最終的な結果は、

<要素> ::= <変数> | <数> | <関数> | ( <式> )

でしょうかねぇ...。

PS.
余分なことだけど、「関数定義」の部分は不要かなぁ... ( まあ、組込関数ってことにするか.. [ でも、そうなると関数名リストが別に必要だ.. やはり面倒 .. ] )。

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Javaの課題丸投げ 更新情報

Javaの課題丸投げのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング