• 締切済み

拡張BNF記法について

BNF記法で四則演算の表記がよくわからなかったのですが、 例えば、3+4を拡張BNF記法で表記する場合はどうしたらいいんでしょうか? '3','+','4'でいいのでしょうか? BNF記法は初めてやるので全然わからないんですよ・・・ ネットで探しても、わかりやすいのが見つからなくてこまってます>< 是非教えてほしいです。 あと、できれば(2+3)*4の表記も教えてもらえると助かります^^;

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

質問の意図がよくわかりません。 > 例えば、3+4を拡張BNF記法で表記する場合はどうしたらいいんでしょうか? > '3','+','4'でいいのでしょうか? 行間を読んでましたが、3 + 4 のような単純な加算の式を表すということであれば 終端記号が別途適切に定義されているとして add_expr :: NUMBER '+' NUMBER とか。 > あと、できれば(2+3)*4の表記も教えてもらえると助かります^^; 情報が足りなすぎ。 加減乗除にかっこつきということで良いのでしょうか? 以下のページを読んでもわからない。 あるいはすでに読んでいたがわからないというなら補足してください。 あと拡張BNF(EBNF)とそうでないBNFだと書き方がまる切り変わるので どちらなのか明確にしてください。 BNF記法入門(1) ─XML関連仕様を読むために─ http://www.atmarkit.co.jp/fxml/ddd/ddd004/ddd004-bnf.html 構文と意味 http://kaiunix.cs.shinshu-u.ac.jp/Lesson/ProgLangT/2007/SyntaxAndSemantics.html 逆ポーランド記法へ.bas http://www.urban.ne.jp/home/kz4ymnk/seminar/basic/e2rpn.html

関連するQ&A

  • BNF記法 2重カッコを許可しない四則演算

    ふと思ったのですが、2重以上の()を許可しない四則演算をBNF記法で記述できるでしょうか? たとえば、((a+b))は×です。

  • BNF記法について

    最近質問させていただいたものですが、また分からな いことがあり、質問させてください。 ある、アルゴリズムの問題集をやっていて、BNF記法に 従った数式を解析して計算するというものでした。 BNFの定義として、 式=項 | 式 加法演算子 項 項=因子| 項 乗法演算子 因子 因子=数 加法演算子='+'|'-' 乗法演算子='*'|'/' となっています。 そのテキストで、例として、 項=3*4/5 というのがありました。これは理解できました。しかし、 式=1+2+3*4/5-6 というのが理解できません。 式=式 加法演算子 項 と、項=項 乗法演算子  因子 というのを再帰的に当てはめていくのだと思うのです が、式として成立させるのは定義からして無理だと 思うのですが。1+2+3*4/5-6を式として解釈するには どのようにしたらよいかお教えください。よろしく お願いいたします。 ちなみに、1+2+3*4/5-6は、問題集に載っているアルゴリズムで問題なく解けました。  

  • BNF(バッカス)記法について

    次のBNFで定義されるビット列Sであるものは、どれか。 <S>::=01|0<S>1 ア、000111 イ、010010 ウ、010101 エ、011111 正解:ア このように<変数>は、左辺と同じ変数を右辺で用いることが出来ます。 0<S>1を考えるには、まず<S>が使われていない「01」を代入します。 すると「0011」です。と記載されています。 自力で調べたのですが、 BNF(バッカス)記法で書かれた問題が読めません。 何故「01」を代入すると「0011」になるのでしょうか。 何故「ア」が正解になるのでしょうか。 お手数お掛けしますが、ご存知の方おられましたら、ご教授お願いします。 以上、よろしくお願い致します。

  • 逆ポーランド記法

    電卓もどきのアルゴリズムを教えて下さい 指定された数式を解読して、演算結果を求める処理を作成したいのですが・・・・ 今考えている手順は (1) 数式を解析して 逆ポーランド記法の中間言語にして於いておく (2) 逆ポーランド記法の中間言語を演算して答えを求める と考えているのですが・・・ << 例 >>  演算式 1+2×3=    答え 7  演算式 (1+2)×3=  答え 9 大昔の知識ですのでもっとシンプルな方法が有りましたらアドバイス頂けませんでしょうか?

  • 数学的な記法

    以下、数式をtex記法で表記します。 アルゴリズムを表記するにあたって困っていることがあります。 有向グラフにおいて、ある節v1を始点・ある節v2終点とする辺は e_{v1,v2} またその逆方向は e_{v2,v1} と書けて e_{v1,v2}≠e_{v2,v1}ですよね。 では無向グラフにおいて、ある節v1とある節v2を結ぶ辺を表記するにはどうすればよいでしょうか。 e_{a,b}とe_{b,a}は同じ辺を表すものとする というような注意書きを入れて e_{v1,v2} と表すしかありませんか。 こういった場合に使うべき数学的な記法がわかりません。 うまく説明できているか心配ですがアドバイスをお願いします。

  • BNF表記と文脈自由文法の関係について

    初めまして。最近、コンパイラの学習を始めた初心者です。よろしくお願いいたします。 ある文献には、「BNF表記は文脈自由文法を表す」と書かれています。これは、BNF表記が表す文法と文脈自由文法が等価と文字通り理解していいものなのでしょうか?(つまり、BNF表記された文法は全て文脈自由文法で、文脈自由文法は全てBNF表記で表すことができる、ということなのかです。) また文脈“自由”文法があるのであれば、文脈“依存”文法というもの存在するのでしょうか? 以上2点につきまして、ご回答よろしくお願いいたします。

  • 逆ポーランド記法

    C言語で逆ポーランド記法への変換をしようとしています. 演算子の優先順位の付け方がわかりません. 構造体の配列に数式を入れて,それぞれに優先度をつけてみたりしたのですが,いい方法でないように思います. 適切な方法を知っている方よろしくお願いします.

  • 中置記法から後置記法(逆ポーランド記法)への変換について

    課題で 「スタックを用いて、中置記法から小売記法に変換するアルゴリズムを記述せよ。もの中置記法では、括弧、代入文および条件式も対象とすること」 というのがあります。 この場合は、例を示して行ったほうがよいでしょうか?どのようにすればよいかを教えてください。 よろしくお願いします。

  • 数式のBNF表記を教えてください

    Javaで数式パーサを作る必要に駆られており、式の評価方法を探しています。 以前、情報の教科書でBNFを見たことがあって、これで行こう!と思ったのですが、どうしても思い出せません。(^_^; いくつか検索したのですが、小難しくて理解には至りませんでした。 たしか、3文ほどで表記できたと思うのですが、わかりやすく示しては頂けないでしょうか。 よろしくお願いいたします。

  • ただしいHTMLタグ記法でしょうか?

    あるページのソースを見て発見したのですが、下記の記法1のHTMLタグ記法は、正しいものなのでしょうか? ●記法1 <a href="http://yahoo.co.jp/?a=1&amp;b=2">http://yahoo.co.jp/?a=1&amp;b=2</a> (注)<と>と&と;は、本来半角のところを全角で表記しています。以下同様。 疑問に思う点は、aタグのhref要素中に、&記号をHTMLエンコードしてしまってもよいのかということです。 次の記法2が一般的ではないかと(個人的に)考えています。 ●記法2 <a href="http://yahoo.co.jp/?a=1&b=2">http://yahoo.co.jp/?a=1&amp;b=2</a> 上記記法1は、妥当な記法でしょうか? また、多くのブラウザでも対応しているのでしょうか? Windows版のIE7とFireFox2では問題なく動作しているようです。 お詳しい方、ご回答お願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう