前のページ 次のページ
C++ grammer 投稿者:とおりすがり  投稿日: 4月 6日(金)12時29分12秒

とおりすがりのものですが

# 悪いのは yacc じゃなくて Stroustrup です。

C++ の文法を yacc で記述するのは、 yacc の使い方がもう少しわかってから (普通の文法で練習してから) にしたほうが良いような気がしますが如何でしょうか ?

# たとえば XML の文法は、割と、すなおに変換できます (できました)。ただし lexer が面倒みたいですが ...

typedef 名に細工すれば、辛うじて yaccable になるというのは C の場合の話と思います。

> うまくいかないというのは、conflictが発生しまくっている状態です。

これは C++ 自体がそういう文法なので、文法通りに入れるとそうなるという話です。

(C++ は yacc ではなくて、下向き解析を前提にしているような話があったと思います。)

# btyacc (back track yacc) とか使えば、どうにかなるのかもしれないですけど ...

> また、C++をyaccに反映した参考書や参照テキストなどありましたらご教授ください。

C++ を yacc で書いたものとしては、完全ではありませんが J.Roskind のものが有名と思います。(探せばすぐに見つかります。)

# g++ のソースは参考になるのかなぁ ?

yacc の一般的な使い方は ASCII から出ている「lex & yacc プログラミング」も良いのではないかと思います。

ちなみに英語で良ければ bison の info ファイル (ただ) が、徳丸さんの書かれている訳書とほぼ同じと内容と思います。(アスキーの BISON ももしかすると Copyleft かもしれませんけど。)

# 新しいドラゴンブックを入手して はや 10 年 ... 未だに読み終えてない ...


よしへさんへの回答 投稿者:徳丸 浩(オケゲム)  投稿日: 4月 6日(金)11時02分05秒

よしへさん、こんにちは。

JavaScriptコードを見ました。概ね良いのですが、細かいところで2箇所修正が必要でした。

1.document.textform...の間違い
誤:document.textform.select.value = msg;
正:document.textform.color.value = msg;

2.selectの呼び出し側の間違い
誤:javascript:select(2>
正:javascript:select(2)

この2点の修正で動くようになります。

JavaScriptはデバッグが大変ですね。がんばってください。


遅くなりましてすいません 投稿者:よしへ  投稿日: 4月 6日(金)00時12分50秒

徳丸 浩さん
とりあえず、作ったスクリプトを書きます。(初心者なものでただ改造しただけです)

<SCRIPT>
// ラジオボタンの設定
function select(n) {
var msg;
switch(n){
case 0:
msg = "赤ですね";
break;
case 1:
msg = "緑っていうか黄緑";
break;
case 2:
msg = "青っぽい";
break;
default:
msg = "";
break;
}
document.textform.select.value = msg;
}

<IMG SRC="rgb.gif" USEMAP="#MAP01" BORDER="0">
<MAP NAME="MAP01">
<AREA SHAPE="RECT" COORDS="5,5,54,24" HREF="javascript:select(0)">
<AREA SHAPE="RECT" COORDS="5,30,54,49" HREF="javascript:select(1)">
<AREA SHAPE="RECT" COORDS="5,55,54,74" HREF="javascript:select(2>">
</MAP>
<FORM NAME="textform">
<INPUT type="text" name="color" >

アップもしてみましたので必要だったら見て下さい。↓
画像はつかわせてもらいました。

http://www27.tok2.com/home/yoshihe/sample.htm


Misawaさん、ようこそ 投稿者:徳丸 浩(オケゲム)  投稿日: 3月29日(木)09時18分58秒

Misawaさん、はじめまして。席亭のオケゲムです。
アクション部を取り除くプログラムは、どういう動機で作られたのでしょうか?
既存のyaccプログラムを読むためかな?

今後も時々遊びに来てくださいね。

http://www.tokumaru.org/


はじめまして 投稿者:Misawa  投稿日: 3月28日(水)18時02分44秒

 はじめまして、私、Misawa と申します。

 最近Vectorでkmyacc用の補助ツールを公開しました。
機能は、構文規則部のアクション部を取り除きます。

よろしければ、使ってやって下さい。

http://www.vector.co.jp/soft/dos/prog/se183673.html


よしへさん、ようこそ 投稿者:徳丸 浩(オケゲム)  投稿日: 3月26日(月)18時59分14秒

よしへさん、インプリメンタの部屋にようこそ。席亭のオケゲムです。

ラジオボタンではなくテキストボックスということですが、やってみたところ
特に問題はなさそうですが、どのあたりで詰まっていますか?現象として
どうなりますか?(エラーメッセージとか)

もう少し詳しく教えてもらえませんか?

http://www.tokumaru.org/


pangmerさん、ようこそ 投稿者:徳丸 浩(オケゲム)  投稿日: 3月26日(月)18時57分46秒

pangmerさん、インプリメンタの部屋にようこそ。C++の文法を入力されているのですか。
すごいですね。

というのは、yaccではC++の構文解析をするのが、簡単ではないからです。いろいろ細工
が必要だと思います。問題の一つは(C言語でもそうですが)typedefされた型名や
class名の扱いですね。intやdoubleは予約語だから簡単ですが、typedefした名前は通常の
名前と区別がつかないので、そのままではyaccで書けません。
ではどうするかというと、字句解析フェーズで、typedefされた名前を検知して、もしtyedefされていたら「typedefされた名前」という特別な字句を返すようにすることです。

詳しくは、「Bison入門」(ストールマン他著、アスキー)の第7章「文脈依存の処理」
をご覧下さい。

http://www.tokumaru.org/


自作コンパイラの部屋 Q&A を見たのですが 投稿者:よしへ  投稿日: 3月23日(金)00時09分34秒

はじめまして

クリッカブルマップによるJavaScript起動
のページのことで質問なんですが、
別に設置しているラジオボタンにチェックを入れるのではなく、
別の設置しているフォームの一行の入力フィールド(複数行でもいいのですが)に
コメントなどをいれたいのですが、
このようなことはできるんでしょうか。

自分で作ってみたのですがどうもうまくいきません。
よろしくお願いします。


BNF->YACCは難しい・・・。 投稿者:pangmer  投稿日: 3月22日(木)14時45分56秒

どうもはじめまして。
いつも楽しく拝見させていただいています。
 私もYACCやLEXを使用して便利なツールでも作りたいと思い。
ちまちまと、がんばっておりますが、BNF表記からYACCへの反映に手こずっております。
ISO C++の仕様書(grammar)をみながらYACCへ反映させているのですが
どうも、うまくいきません。YACCの表記方法自体、初歩部分しかわかっていないからだと思いますが、みなさんはどのようにBNF->YACCへ反映されているのですか?
 うまくいかないというのは、conflictが発生しまくっている状態です。
また、C++をyaccに反映した参考書や参照テキストなどありましたらご教授ください。


re:JavaScripでの日付の処理 投稿者:徳丸浩(オケゲム)  投稿日: 2月21日(水)08時28分41秒

福田さん、インプリメンタの部屋にようこそ。

JavaScriptの日付処理は、一般にはDateオブジェクトを用います。しかし、この場合は、
単なる数値計算でもいけるかもしれません。やりたいことが今ひとつ不明確なので、あまり
断定的なことがいえないのですが。

えーっと、例をあげてもらえませんか?
例えば、2001年1月31の0年1ヵ月後を2001年2月31日としたら変ですよね。
プログラムにするのであれば、もう少し厳密な仕様が必要だと思います。

http://www.tokumaru.org/


前のページ 次のページ