- 1 名前:nanashi de fault [02/05/12 02:05]
- 前スレ1より
>yaccやlexの使い方やら言語仕様やらの話題。 前スレ 【コンパイラ・スクリプトエンジン】相談室 pc.2ch.net/test/read.cgi/tech/981672957/ 前スレアーカイブ(かちゅ用) www.1me.jp/hp/prg_c-s_lab 前スレに張られたリンク + x >>2-6
- 43 名前:デフォルトの名無しさん mailto:sage [02/05/21 23:52]
- >>41
いや、目標(HSP)が引く杉ってこと。
- 44 名前:38 mailto:sage [02/05/22 00:05]
- >42
>>コンソール感覚でGUIアプリ作れたら >意味がわからん。 それもそうだ。 たとえば、 list = file_search("C:\My Documents\*.jpg"); foreach(list, itr){ image = image_load(itr); tile_draw(image, 48, 32); } ぐらいの記述量でフォルダ内の画像一覧を表示するアプリが書けるとか。 いや、たとえだけど。 >43 >いや、目標(HSP)が引く杉ってこと。 そうか? そうか。 うーむ。
- 45 名前:42 mailto:sage [02/05/22 00:12]
- >>44
記述量を問題にするなら、処理系でなく既存の 言語のクラスライブラリを整えた方がいいんでない? でも、HSPでクラスライブラリはやだ・・・
- 46 名前:42 mailto:sage [02/05/22 00:14]
- あ。スクリプトか。
よく見てなかった。スマソ
- 47 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:14]
- >>38
LISPは構文解析いらないから楽だよ
- 48 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:18]
- >>47
いらないってこたあないだろ。 たしかに構文は簡単だけどさ。
- 49 名前:デフォルトの名無しさん [02/05/22 00:19]
- DelphiやVBみたいに貼りつけ→即実行みたいな
環境を作るのってむずかしい?
- 50 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:21]
- >>48
最低限の構文は必要かと。 むちゃくちゃ楽なのは確かだけど。 あとはマクロで構文唐。
- 51 名前:デフォルトの名無しさん mailto:sage [02/05/22 00:31]
- まあ下手な構文作るよりかはLISPのS式にしとく方がましだな。
- 52 名前:38 mailto:sage [02/05/22 00:31]
- >>47
構文解析とかは中田(?)氏の本を読んでできるようにはなりました。 再帰下降法だけだけど。
- 53 名前:デフォルトの名無しさん mailto:sage [02/05/23 03:29]
- >38
FORTHは? と言ってみるテスト。
- 54 名前:MIND mailto:sage [02/05/23 14:09]
- >>53
処理系を作る人にはやさしいけど、応用系を作る人にはどうかな? と呟いてしまう今日この頃。
- 55 名前:デフォルトの名無しさん [02/05/23 14:24]
- まだyaccがはやいなんていってる馬鹿いるね
- 56 名前:デフォルトの名無しさん [02/05/23 15:42]
- >>55
うっさいハゲ
- 57 名前:デフォルトの名無しさん mailto:sage [02/05/23 16:23]
- >>55
パーサー担当は君に決定!
- 58 名前:デフォルトの名無しさん mailto:sage [02/05/23 17:02]
- LISPで決まり。
ところで、GCの無いLISPって理論的に可能でしょうか。
- 59 名前:デフォルトの名無しさん mailto:sage [02/05/23 17:06]
- 可能
無限にメモリを消費し続けてください
- 60 名前:デフォルトの名無しさん [02/05/27 05:40]
- 保守age
- 61 名前:デフォルトの名無しさん [02/05/29 01:31]
- 保守しる!
- 62 名前:デフォルトの名無しさん [02/05/29 23:47]
- もりあがらないね
- 63 名前:デフォルトの名無しさん [02/05/29 23:49]
- どうやって中間言語に翻訳しなおすのですか?
- 64 名前:HELP!あ〜にゃにゃにゃ〜にゃ〜 mailto:あげる [02/05/30 01:04]
- Yaccのソースが見つからないのれす。
- 65 名前:逝って良しの1 [02/05/30 01:15]
- 構文解析器だけは作りたくないです。
- 66 名前:デフォルトの名無しさん mailto:sage [02/05/30 01:24]
- >>65
再帰下降なら楽じゃん。
- 67 名前:デフォルトの名無しさん [02/05/30 03:00]
- >>64
GNU bison ならすぐ見つかるだろ。
- 68 名前:デフォルトの名無しさん mailto:sage [02/05/30 04:39]
- >>64
森氏のkmYaccならVectorで検索すれば有るんじゃない?ソース付きで。 この人のcppとmakeは自分なりに手直しして未だに使わせてもらってる。
- 69 名前:デフォルトの名無しさん [02/05/30 05:06]
- どうしても関数の実装ができません。あとcontinueとbreakも。
- 70 名前:デフォルトの名無しさん mailto:sage [02/05/30 11:08]
- >69
Cマガの2000年5月号をよめばわかります。
- 71 名前:64 mailto:sage [02/05/30 12:29]
- >>67
GNUは生理的に嫌なので。すんまへん。 >>68 ウヲ。すごいでつなこの人。ありがとうございます。
- 72 名前:デフォルトの名無しさん mailto:sage [02/05/31 01:41]
- >>71
そういうやつは生理的に氏ね!
- 73 名前:デフォルトの名無しさん mailto:sage [02/05/31 22:45]
- >>72
GNU のソースが生理的に嫌いだってのは、分からんでもない。あのインデントは 読みたくないよ。(というわけで GNU indent 通して整形してから参照してる俺)
- 74 名前:デフォルトの名無しさん mailto:sage [02/05/31 23:22]
- >>73
むしろライセンスの方じゃないの。
- 75 名前:デフォルトの名無しさん mailto:sage [02/05/31 23:53]
- >>74
73 の皮肉と諧謔を込めた文意を読み取れ。
- 76 名前:デフォルトの名無しさん mailto:sage [02/06/01 00:21]
- 75=73
- 77 名前:デフォルトの名無しさん mailto:sage [02/06/01 04:16]
- >>68
ちなみにこの人、LSI-Cコンパイラの作者な。 yaccもcppもmakeもその一部。
- 78 名前:68 mailto:ssage [02/06/01 13:53]
- ワシは厨房なんで高度な皮肉も
宗教じみたライセンスも理解できんので 避けてるのです。生理的に。用途違うかな。 >>77 普段LSI-C試食版使ってるので、cppで気づきました。 LSI-Cは一人の天才プログラマが作ったって噂があったけど、 本当だったんですな。あこがれます。
- 79 名前:真68 mailto:sage [02/06/01 16:48]
- ↑どうでもいいけど68書いたの俺な。あんた64じゃない?
>>77 知っている。今はLSI JAPANの取締役らしいな。 bisonのジェネレータが出力するソースは見にくくて吐き気がするが、 kmyaccのは綺麗で分かりやすい。実用にも問題無いし、学習用にもお勧め。 俺はbisonから完全に乗り換えたよ。テーブルの小ささに惚れた。
- 80 名前:64 mailto:sage [02/06/01 19:58]
- スマソ回線切って首吊ってきます。
- 81 名前:73 mailto:sage [02/06/03 16:39]
- >>76
はずれ(w >>78 > 宗教じみたライセンスも理解できんので GPL は理解しておいて損はないと思うよ。 俺は GPL の趣旨には賛同しないので、自分が公開するソフトのライセンスは GPL にしない。でも GPL で公開されているソフトには有用なモノも多いし、ライ センスを理解して使えば GPL に汚染されずに旨い部分だけ頂ける。 (ちなみに個人的には BSD、仕事絡みではクローズドな人です)
- 82 名前:デフォルトの名無しさん mailto:sage [02/06/03 17:46]
- >ライセンスを理解して使えば GPL に汚染されずに旨い部分だけ頂ける。
この辺のところを、もう少し詳しく教えて( ゚д゚)ホスィ
- 83 名前:64 mailto:sage [02/06/03 23:01]
- 82に禿尿。readlineとかガリガーリ使っていきたいヨー
- 84 名前:デフォルトの名無しさん mailto: [02/06/04 04:10]
- LL(1)文法の
Fisrt Follow Directorの計算アルゴリズムが良くわからん。 オーム者コンパイラ(中田育男 8刷 p85) 誰かわかりやすく教えてくれ。
- 85 名前:. [02/06/04 04:15]
- www.aa.wakwak.com/~ayaka/cgi-bin/privatetalk/sank.pl
- 86 名前: [02/06/05 01:17]
- >>84
過去ログ。
- 87 名前:デフォルトの名無しさん [02/06/06 23:29]
- ageeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
- 88 名前:デフォルトの名無しさん [02/06/07 11:22]
- 以前、Cで数十行で書かれた小さいBASICインタプリタを見たことあるん
だけど、検索しても、どうしても見つかりませんでした。 知ってる人いますか?
- 89 名前:デフォルトの名無しさん mailto:sage [02/06/07 11:28]
- >>88
7行スレのことか?
- 90 名前:デフォルトの名無しさん mailto:sage [02/06/07 13:20]
- >>88
Expert Cに載ってる奴じゃない? www.ioccc.org/1990/dds.c
- 91 名前:デフォルトの名無しさん mailto:sage [02/06/10 16:08]
- >90
これ、VC6でコンパイル通らないんだけど、何だったらできる?
- 92 名前:デフォルトの名無しさん [02/06/11 00:42]
- C++の構文解析、
struct C { C (f)(); /*Cを返す関数f*/ C(); /*コンストラクタ*/ }; というので、{}のなかの 'C' まで読んだ時点でそれがclass-nameかdeclaratorかどうやって判断しているの? ひとつだけの先読みではわからないですよね。LALR(1)とかいうのとはちがうのですか?
- 93 名前:デフォルトの名無しさん mailto:sage [02/06/11 02:37]
- >>92
www.y-adagio.com/public/reports/mh_inst/1996/19.doc.htm
- 94 名前:デフォルトの名無しさん mailto:sage [02/06/11 02:44]
- >>92
読んだ時点で判断してるわけないと思うが。 そこは意味解析で判断する部分。 構文解析の段階だと C(); は「戻型が省略された関数C」とでも解析されるんだろう。 structの定義('}')が終わった段階で、 初めて意味解析が走ると考えたほうが自然。
- 95 名前:デフォルトの名無しさん mailto:sage [02/06/11 03:48]
- >>94
struct の } 終わってから解析って、そりゃ構文解析でほとんど何もやってない に等しい気が……。struct C の段階で「C」を型名としてシンボルテーブルに登 録しておいて C (f)(); → 識別子 '(' 識別子 ')' '(' 識別子 ')' ';' ぐらいにバラしてスタックに積んでおき、この段階で意味解析に掛けると思う。 構造体の宣言が終わらなくても ';' 単位でばらせば、十分に解析可能だよね。 少なくとも型名やら名前空間やら、必要な情報は事前に出てるわけだし。 (そうでもない?)
- 96 名前:デフォルトの名無しさん mailto:sage [02/06/11 05:05]
- 'C'まで読み込んだ段階では判定できないから
適当な中間の非終端記号を入れて判定を遅延させて、 十分読み込んだところで判定を確定する、という話じゃないの?
- 97 名前:96 mailto:sage [02/06/11 05:07]
- >95 と内容被ってた(鬱)
- 98 名前:92 mailto:sage [02/06/12 00:57]
- とりあえず全部identifierとして読んでおけばいいんですね。
Cの場合、構文解析の段階でtypedefとenumを辞書引きすればよさそう(試してない) だったので、C++もその延長でいけるかとおもっていたのです。 LALR(2)でならそれでもいけるかな?
- 99 名前:デフォルトの名無しさん mailto:sage [02/06/12 14:01]
- >>98
C は型名と変数名は異なる名前空間で定義されるから(型名と重複する変数名 を定義可能)、その方針でやる場合には 型名を読み込んだ → 字句解析側に、次にアルファベット列が来たら identifier を返すように設定 と、構文解析・字句解析での情報のやりとりが必要になるかと。
- 100 名前:92 mailto:sage [02/06/12 23:04]
- >>99
typedef名だけは型名と変数名の両方に登録されるようなので、 typedef t int; int t(); なんてのはエラーにしないといけない(?)のでどっちにしても 意味解析でも構文解析じみたことはしなければいけないみたいですね。
- 101 名前:100 mailto:sage [02/06/12 23:05]
- typedef t int ×
typedef int t ○
- 102 名前:デフォルトの名無しさん [02/06/16 01:17]
- 最適化するのにポインタって邪魔ですか?
- 103 名前:デフォルトの名無しさん mailto:sage [02/06/16 01:21]
- 邪魔。
- 104 名前:デフォルトの名無しさん mailto:sage [02/06/16 01:32]
- っですよねー。
三項になりましたサンクコ
- 105 名前:デフォルトの名無しさん mailto:sage [02/06/16 01:40]
- オブジェクトやメモリを参照することを禁止したポインタなら邪魔にならない。
- 106 名前:デフォルトの名無しさん [02/06/18 03:52]
- 1+a+2 を逆ポーランドで表現した
1a+2+ というデータだけがここに有るとして、これを 3a+ にうまく変形出来ないだろうか。
- 107 名前:デフォルトの名無しさん mailto:sage [02/06/18 04:00]
- >>106
出来る。
- 108 名前:デフォルトの名無しさん mailto:sage [02/06/19 00:19]
- >>106
buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/koubungi.gif の図で言うと * と / が演算子の結合度が同じかつ親子なので、 a を a / d で置き換えてよい。 今考えたんで合ってるかどうか分からんけど。
- 109 名前:age mailto:age [02/06/20 01:05]
- age
- 110 名前:デフォルトの名無しさん [02/06/21 02:17]
- 保守汁
- 111 名前:デフォルトの名無しさん mailto:sage [02/06/24 11:39]
- 昨日LAOXのBOOK館でドラゴンブックの邦訳を買ったDQNを目撃した人はいませんか?
それが私です。 ついでにもう一冊、と、 原田賢一『コンパイラ構成法』共立出版、374頁、1999 を買っちゃいました。こちらはDQNの私でもわかりやすく例を挙げて、 C言語ライクの言語を構築する方法を説明してありました。
- 112 名前:デフォルトの名無しさん mailto:sage [02/06/25 01:16]
- DQN がドラゴンブック買うかよチクショー。
- 113 名前:コンパイラ構成法 mailto:sage [02/06/25 03:49]
- おもわず検索してソースだけget。
- 114 名前:棄教者 ◆witdLTi2 mailto:sage [02/06/25 07:47]
- >>113
あ。ほんとだ。 正誤表とソースがげtできる! カムサハムニダ。
- 115 名前:デフォルトの名無しさん [02/06/30 20:21]
- 保守
- 116 名前:デフォルトの名無しさん mailto:sage [02/07/07 23:12]
- やっと前スレが埋まったね。
- 117 名前:質問 [02/07/07 23:43]
- どうしてこのスレはもりあがらないんですか?
- 118 名前:デフォルトの名無しさん mailto:age [02/07/07 23:49]
- kmyaccとflexを組み合わせて使うことは可能なんですか?
- 119 名前:デフォルトの名無しさん [02/07/08 00:24]
- 生理的に可能
- 120 名前:デフォルトの名無しさん [02/07/08 00:31]
- ありがとう
カムサハムニダ
- 121 名前:デフォルトの名無しさん [02/07/08 01:12]
- ちうか、今の時代、構文解析なぞを勉強するのはあまり意味がない
気もするのだが... まだLALRとかが発明される前なら研究の 対象にはなっただろうが、今はyaccが使えればいいじゃん、と思う。
- 122 名前:デフォルトの名無しさん [02/07/08 01:13]
- antlrの使い方がわかればなおよい。
と言ってる俺はyaccしか使えません首吊ってきます
- 123 名前:棄教者 ◆witdLTi2 [02/07/08 08:21]
- >>121
yaccの文法はわかっても即コンパイラ・スクリプトが書けるとは限らないという罠。
- 124 名前:デフォルトの名無しさん mailto:sage [02/07/08 08:35]
- >>121
いや〜、でも憶えないとコンフリクトの理由が分からなくて困ることとかない? でも、なにも知らないところからだったら yacc 憶えた後の方が理解が早いので 手順として先に yacc は賛成。
- 125 名前:デフォルトの名無しさん mailto:sage [02/07/08 10:10]
- >>121
コンパイラ・コンパイラの段階から自作できるようになって、初めて一人前。
- 126 名前:デフォルトの名無しさん mailto:sage [02/07/08 10:39]
- コンパイラ・コンパイラ・コンパイラはどうやって作るんですか?
- 127 名前: mailto:sage [02/07/08 11:02]
- >>126
コンパイラ・コンパイラと一緒。 * (コンパイラ・コンパイラ)・コンパイラ * (YACC のコンパイラ)・コンパイラ * (C のコンパイラ)・コンパイラ
- 128 名前:デフォルトの名無しさん mailto:sage [02/07/08 14:19]
- >>126
作る必要はありません。
- 129 名前:デフォルトの名無しさん mailto:sage [02/07/08 16:40]
- >>126
コンパイラ・コンパイラ・コンパイラの段階から自作できるようになって、初めて神。
- 130 名前:デフォルトの名無しさん mailto:sage [02/07/09 03:40]
- [コンパイラ]n ・ コンパイラの段階から自作できるようになって、初めて神。
- 131 名前:ふわふわ名無しさん mailto:sage [02/07/09 04:16]
- 結局のところ、コンパイラ・コンパイラさえ作れれば神。
証明↓
- 132 名前:デフォルトの名無しさん mailto:sage [02/07/11 03:28]
- ⊂(ΦωΦ)⊃フフフ・・・・
- 133 名前:棄教者 ◆witdLTi2 mailto:sage [02/07/11 16:15]
- >>131
テユーカ、一番すごいのはダイレクトにマシンコードを吐き出すコンパイラをハックする人だと思う。
- 134 名前:デフォルトの名無しさん mailto:sage [02/07/11 18:45]
- 再帰下降ってみんなもう使ってないの?
- 135 名前:デフォルトの名無しさん mailto:sage [02/07/11 20:44]
- >>134
JavaCCが、再帰下降のパーサを生成する。 WebGainが音信不通なんでどうなることやら。
- 136 名前:デフォルトの名無しさん [02/07/17 00:05]
- 昔のインタフェースの特集記事に色々とあったな
- 137 名前:デフォルトの名無しさん [02/07/22 00:34]
- while文を使ってfor文を定義したいのですが、
for(ex1;ex2;ex3){s;} は ex1; while(ex2){ s; ex3; } と書こうと考えますた。 なんですが、前から順番に構文解析していく場合 sを先に評価してex3を評価するなんてことをどうやって実現するのでしょうか? ジャンプ命令を使ったりしてどうにかするのでしょうか? 教えてください。
- 138 名前: mailto:sage [02/07/22 00:38]
- >>137
「定義したい」とはどういう意味だ?
- 139 名前:デフォルトの名無しさん mailto:sage [02/07/22 00:38]
- ブロック終端でのjumpの前の時点でex3を評価すればいいじゃん
- 140 名前:デフォルトの名無しさん [02/07/22 00:55]
- >>139
つまりsを読んだ後、ex2の前にjumpする前にex3を評価するってことですよね? でも前から解析していく際にex3はどのようにしておけばよいのでしょう。 プログラム書くときにex3のところをどうやって書けばいいのかが・・・考えてるんですけど 分からないんです・・・
- 141 名前:デフォルトの名無しさん mailto:sage [02/07/22 00:59]
- >>140
ハァ? それじゃfor()はどうやって実現してるんだよ?
- 142 名前: mailto:sage [02/07/22 01:12]
- >>140
もしかして、構文木とか作らずに、字面のまま実行してたりする?
- 143 名前:デフォルトの名無しさん [02/07/22 01:16]
- >>142
恥ずかしながらそうです。。。
|

|