- 1 名前:デフォルトの名無しさん [03/11/29 15:59]
- yaccやlexの使い方やら言語仕様やらの話題。
前スレ 1 pc.2ch.net/tech/kako/981/981672957.html 2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち) 関連リンクは多分 >>2-8 あたり
- 152 名前:デフォルトの名無しさん mailto:sage [03/12/25 17:54]
- つーかサンプルコードなんてどうでもいいだろ。
個人的には、読みやすい疑似コードならあっても損ではないが。
- 153 名前:デフォルトの名無しさん [03/12/25 18:56]
- >>144
つまり、c&awkとは、ぜんぜん違うということ。
- 154 名前:デフォルトの名無しさん mailto:sage [03/12/25 19:11]
- >>153
きみは walk でも使ってなさい。 www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/awk/
- 155 名前:デフォルトの名無しさん [03/12/25 23:59]
- Windowsで使えるyaccやlex、texはありませんか?
- 156 名前:デフォルトの名無しさん mailto:sage [03/12/26 00:03]
- texは知らんがyacc/lexはcygwinのが使えるんでねえの?
- 157 名前:デフォルトの名無しさん [03/12/26 08:09]
- >>154
それって、AWKと同じ?
- 158 名前:デフォルトの名無しさん mailto:sage [03/12/26 10:43]
- >>156
cygwinのyacc/lexが吐き出すCをVC++が食べてくれないことを>>155は恐れている。
- 159 名前:デフォルトの名無しさん mailto:sage [03/12/26 14:33]
- >>155
gnuwin32
- 160 名前:デフォルトの名無しさん mailto:sage [03/12/26 19:11]
- >>155
上で>>156や>>159が言ってる他にも、yacc互換ツールにkmyaccってのがある。 Rubyのコンパイルにkmyaccを使うと実行ファイルが少し小さくなっていい感じ。 >>156 Texも余裕でいろんなバージョンがごろごろしてるよ。
- 161 名前:デフォルトの名無しさん mailto:sage [03/12/26 20:11]
- Rubyの実行ファイルが少し小さくなったら何かいいことあるんですか?
- 162 名前:デフォルトの名無しさん mailto:sage [03/12/26 21:04]
- >>161
大きくなるよりいい。
- 163 名前:デフォルトの名無しさん [03/12/27 01:14]
- レベル低いねえ、ここ
処理系開発に携わった者としては、見ていて恥ずかしいよ
- 164 名前:デフォルトの名無しさん [03/12/27 02:23]
- まともなプロは、他のプロの半端な仕事をバカにすることはあっても、
素人をバカにすることはない。 素人をバカにするのは、プロ気取りの汚らしいチンピラである。
- 165 名前:デフォルトの名無しさん mailto:sage [03/12/27 03:07]
- もう冬休みか...
- 166 名前:デフォルトの名無しさん mailto:sage [03/12/27 04:49]
- 失業者かもよ。「携わった」と、過去形で書いているし。
- 167 名前:デフォルトの名無しさん mailto:sage [03/12/27 06:50]
- 漏れの記憶では確かVCはbison/flexが吐き出すCは食べてくれるがbison++が吐き出すC++は食べられなかったような
- 168 名前:デフォルトの名無しさん [03/12/27 11:56]
-
flex入門(ASCII)には、 ”スキャナがあるテキストにマッチするために「逆行」しなければならない ことを、バックトラッキングといいます。” とあるのですが、ここでいう「逆行」とは具体的にはどういった状態を指す のでしょうか?
- 169 名前:デフォルトの名無しさん mailto:sage [03/12/27 12:36]
- 一度見たトコをもう一度見る。
- 170 名前:デフォルトの名無しさん [03/12/28 11:31]
- コード例から自動で言語処理系作れないかな?
- 171 名前:デフォルトの名無しさん [03/12/28 11:43]
- >>170
ディスプレイに映るコードを眺めながら、博士はコーヒーを飲んでいた。 彼のお気に入りの陶器から口を離して、>>170の質問に答える。 「もし君が全てのトークンの機能と連鎖可能性を記述するのなら、もちろん可能だろう。」 博士は私のほうを向いて続けた。 「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」
- 172 名前:デフォルトの名無しさん mailto:sage [03/12/28 12:07]
- 関数の合成とオプティマイズまでを実装した処理系ってなんか無いですか?
もちろんソース公開されてる奴で。 たとえば、文字コード変換機とか、音声ファイルのコンバータなど 入力と出力パターンがそれぞれ複数あるとき、 すべてのパターンのコードを記述するのはむだなので 中間形式にいったん変換してから再変換をかけることになると思うのですが 関数合成で一度にできるようにならないかと。
- 173 名前:170 [03/12/28 13:03]
- >>171
妙に納得させられてしまいました。 不完全な記述でもある程度の結果が得られて (現存する記述と意味の関係から自動推測して処理系を構築するとか?)、 さらに進展性が望めるシステムもあったらどうなるのかちょっと興味があったのです... >「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」 自分はlex(flex),yacc(bison)を全然使いこなせてないんで そんなのがあったら楽ができそうだなと思った次第です。(スイマセン)
- 174 名前:デフォルトの名無しさん mailto:sage [03/12/28 15:05]
- >>170
例えば、 main { print "Hello World!" } ってのから言語処理系を作れないかということですよね? でも、それって、XMLのデータだけ見て意味づけしろ、というのと同じで、 意味情報が含まれていないから出来ないのでは?
- 175 名前:デフォルトの名無しさん mailto:sage [03/12/28 15:10]
- >>140
私はそのまま awk を使ってます. 仕事柄 C/C++ とその他のスクリプト言語の使用比率が 9:1 くらいなので, 他の言語がなかなか覚えられなくて. C に似てて仕様的にも単純なものってことで awk 使ってますが, awk 使うくらいならそのまま C でいいんじゃないかと最近思いました ... 関係ない独り言ですみません.
- 176 名前:デフォルトの名無しさん mailto:sage [03/12/28 18:52]
- >>172
inlining?
- 177 名前:デフォルトの名無しさん mailto:sage [03/12/28 18:54]
- あ
- 178 名前:デフォルトの名無しさん mailto:sage [03/12/28 19:14]
- >>176
いや、静的ではなく動的に。
- 179 名前:デフォルトの名無しさん [03/12/28 19:43]
- >>175
AWKってフィルタ指向が強すぎますよねぇ? それさえなければ、最強なんだけど...
- 180 名前:デフォルトの名無しさん mailto:sage [03/12/29 01:04]
- ゲームで使用するためのスクリプト言語を解説した
洋書を知りませんか? Game Scripting 何とか という名前だったような・・・
- 181 名前:デフォルトの名無しさん mailto:sage [03/12/29 01:34]
- >>180
ttp://www.amazon.com/exec/obidos/ASIN/1931841578/ 漏れも前にちょっと買ってみようかと思った。 amazon.co.jpだと在庫切れ。
- 182 名前:デフォルトの名無しさん mailto:sage [03/12/29 08:32]
- >>181
こんなのあったんだ。 GameProgrammingWith PYTHON, LUA, AND RUBYより、 そっちにスベキダッタ・・・
- 183 名前:デフォルトの名無しさん mailto:sage [03/12/29 08:42]
- ワリイ ゲ製作板と間違えた
- 184 名前:デフォルトの名無しさん [03/12/30 19:39]
- bison は、記述ファイルから、その生成パーサの動作を正しく把握するのがつかれる。
というか、ほとんど無理?
- 185 名前:デフォルトの名無しさん mailto:sage [03/12/30 19:59]
- >>184
把握する必要無いし。
- 186 名前:デフォルトの名無しさん [03/12/31 01:19]
- でも、把握せんと動作がつかめんでしょ?
- 187 名前:デフォルトの名無しさん mailto:sage [03/12/31 01:33]
- >>184
もしかして、シフト/還元のこと?
- 188 名前:デフォルトの名無しさん mailto:sage [03/12/31 02:36]
- >>186
把握しても動作つかめんから心配するな。 再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが ままある。手っ取り早くすませたいなら yacc を使って、そうではなくエラー処理 などキッチリやりたければ、手で再帰下降型のパーサ書いた方が良いよ。
- 189 名前:デフォルトの名無しさん mailto:sage [03/12/31 06:50]
- パーサーのテストどうやるの?
- 190 名前:デフォルトの名無しさん mailto:sage [03/12/31 11:32]
- >>189
パースしてみる
- 191 名前:デフォルトの名無しさん [03/12/31 16:16]
- >>188
(再帰上昇型/再帰下降型って何ですか?) bison は再帰上昇型でいいのですか?
- 192 名前:デフォルトの名無しさん [03/12/31 16:17]
- >>188
(再帰上昇型/再帰下降型って何ですか?) bison は再帰上昇型でいいのですか?
- 193 名前:デフォルトの名無しさん mailto:sage [03/12/31 18:19]
- >>191
ぐぐれ。キーワードはこんな感じで。 構文解析 上昇 下降
- 194 名前:デフォルトの名無しさん [03/12/31 19:45]
- >>193
keywordありがとう!
- 195 名前:デフォルトの名無しさん [03/12/31 22:41]
- >>188
> 再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが > ままある。 これって、本当ですか?
- 196 名前:デフォルトの名無しさん [03/12/31 22:51]
- >>195
実装がへぼいか、定義がへぼいときは、本当です。
- 197 名前:デフォルトの名無しさん mailto:sage [03/12/31 23:15]
- >>195
本当。 正常なトークン列を与えたときの動作は予期どおりになるが、異常なトークン列を 与えたときの振る舞いは直感に反することがままある。頑強なエラー・回復処理を 実装したい場合、たとえば HTML パーサのように、厳密に規格に従ってなくとも受け付けたい エラー時にそれなりに適切なエラーメッセージを出したい なんつーばあいには、再帰上昇型は人間の手に余る。
- 198 名前:デフォルトの名無しさん [04/01/01 01:17]
- >>197
ミジカな例まで出してくれてありがとう! 上昇型は、厳密な言語むきってことですかね? メリットは、記述が少ないことぐらいですか?
- 199 名前:デフォルトの名無しさん mailto:sage [04/01/01 03:34]
- ところで、ふつうのyaccが生成するパーサは再帰上昇型ではないと思うのだが。
(陽にスタックを持ち、表を引いてgotoしまくるだけで、再帰呼びだしはしない) 最近のbisonは再帰上昇型のコードも生成できるの?
- 200 名前:デフォルトの名無しさん mailto:sage [04/01/01 05:02]
- ttp://www.futamura.info.waseda.ac.jp/~futamura/
futamura projection の二村さんのサイト見つけた。
- 201 名前:デフォルトの名無しさん [04/01/01 20:54]
- どうみてもbisonは再帰的だが
- 202 名前:デフォルトの名無しさん mailto:sage [04/01/01 21:43]
- >>199
再帰呼び出しと再帰的文法解析を混同してないか? 再帰するためにスタック用意してるんでは?
- 203 名前:デフォルトの名無しさん mailto:sage [04/01/01 23:39]
- >>202
英語でrecursive descent parserといえば、LL文法に基いて、いくつかの相互 に呼出しあう関数群で記述された構文解析器のことを指す。 これと同様、recursive ascent parserというのは、LR文法に基いて、明示的 な状態スタックを持たず、相互に呼出しあう関数群で構成されている構文解析 器のこと。yaccやbisonが作るパーサーは、明示的なスタックを持つ表駆動オー トマトンなので、recursive ascent parserではない。(両者は言語を認識する 能力は同じだが、細かい記述能力の点で違いがある) recursive ascent parser については僕も勉強中なのであまり突っ込まれると 困るが、comp.compilersの過去ログ↓に良いreferenceがあるのでそちらを参 照してください。 compilers.iecc.com/comparch/article/93-05-016 compilers.iecc.com/comparch/article/93-05-045
- 204 名前:デフォルトの名無しさん mailto:sage [04/01/02 01:19]
- >>203
そう呼ぶ「流儀もある」というだけの話。 コンパイラ理論に限らず、専門用語は人によって解釈に幅があるのが普通だから、 適当に補って読み書きしとくのが吉だ。
- 205 名前:デフォルトの名無しさん mailto:sage [04/01/02 13:02]
- >>203
そういえば思い当たる用語がいくつかある。 素数に1を含めている場合があって、教授の中の人に 「素数の定義のなかに『1以外の』ってあるんですけど」 って聞いたら 「小中高ではそのように教えているようだが学会によって違うし、 必要なら論文の冒頭で定義する。」って言ってた。 それと、以前知り合いに聞いたんだが、 そいつの学科では「逆ポーランド記法」 を「ポーランド記法」って呼んでて、 どうしても明確に区別する必要があるときだけ 前置・後置で分けてるんだそうな。 と、言うわけで構文解析に関する学会もいろいろあるだろうし それぞれで違う定義だったり定義されてなかったりするの かも知れない。
- 206 名前:デフォルトの名無しさん [04/01/02 15:56]
- >>205
それは案外あるね。 ここのコンパイラ&スクリプトだけでなく、全ての千問分野で そういった傾向があるみたい。 なので、書籍とかでは著者がどういう定義でその用語を使っているかを 把握したうえで理解しないと混乱する時がたまにある。
- 207 名前:デフォルトの名無しさん mailto:sage [04/01/02 16:23]
- 言い訳にだまされてるだけ
- 208 名前:デフォルトの名無しさん [04/01/02 16:54]
- アフォか素人
- 209 名前:203 mailto:sage [04/01/02 20:39]
- >>204
yaccの生成するパーサを「再帰上昇型」と呼んでいる教科書や文献があったら 教えて欲しいのだが。 僕は見たことがない。googleで検索しても見つからない。
- 210 名前:デフォルトの名無しさん [04/01/02 20:46]
- しるか!
- 211 名前:デフォルトの名無しさん mailto:sage [04/01/02 21:52]
- 海外掲示板用オフラインリーダーを作るスレ
pc2.2ch.net/test/read.cgi/tech/1072883528/ 海外でよく使われていうる掲示板スクリプト 専用のオフラインリーダー作って下さい。 必要な条件はID、PASSを管理できること、 OpenJaneみたいな三面型の見た目。 簡単にローカライズできるように言語ファイルを採用
- 212 名前:デフォルトの名無しさん [04/01/02 23:55]
- アフォ
- 213 名前:デフォルトの名無しさん [04/01/03 00:16]
- VBSの解析ソースください。
- 214 名前:デフォルトの名無しさん [04/01/03 01:37]
-
すいません、ちょっとお尋ねしたいんですが、 UNIX Programing Environment に出てくる「電卓hoc(最終形態)」が 行っている処理アプローチは、今のスクリプト言語にも十分通用するも のでしょうか? それとも、今となっては時代遅れのものでしょうか? ここにおられる皆さんは、どう感じられますか?
- 215 名前:デフォルトの名無しさん mailto:sage [04/01/03 01:52]
- ttp://www.cs.bell-labs.com/cm/cs/upe/index.html
ここにあるやつ?
- 216 名前:デフォルトの名無しさん mailto:sage [04/01/03 05:15]
- >>214
時代遅れだと考えるくらい知識や経験があるならやらなくていい。 そうじゃなければ、やっても無駄にはならない。
- 217 名前:214 [04/01/03 10:58]
- >>215
そうです。(こんなページも有ったんですね。知りませんでした。)
- 218 名前:デフォルトの名無しさん mailto:sage [04/01/03 23:03]
- ttp://www.okisoft.co.jp/esc/go.html
ttp://www.okisoft.co.jp/esc/go2.html ttp://www.okisoft.co.jp/esc/go3.html ttp://www.okisoft.co.jp/esc/go4.html 『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。 Java と C# で実装。
- 219 名前:デフォルトの名無しさん mailto:sage [04/01/04 08:39]
- >>218
GOD
- 220 名前:デフォルトの名無しさん mailto:sage [04/01/04 14:04]
- www.google.co.jp/search?q=タグビット
www.google.co.jp/search?q=タグ付きポインタ www.google.co.jp/search?q=%22tagged+pointer%22
- 221 名前:デフォルトの名無しさん [04/01/04 16:56]
- スクリプト言語を設計・実装する場合の一番の難しさって何でしょうね?
- 222 名前:デフォルトの名無しさん mailto:sage [04/01/04 17:09]
- >>221
妥協すること。 汎用的だが回りくどい書き方と、特定用途専門で簡単な書き方。 実行時の速度効率と、柔軟性。 メモリ使用効率とスピード。 いろいろいろいろ相反する要素が出てくるので、目標を明確にしておかないと あれもこれも盛り込んだ挙句に、中途半端で使いにくいスクリプトになりがち。
- 223 名前:デフォルトの名無しさん mailto:sage [04/01/04 23:29]
- >>222
思いもよらない視点にビクリ! あんた、プロ?
- 224 名前:デフォルトの名無しさん mailto:sage [04/01/06 18:37]
- >218
LISP処理系作るのは簡単だけど、 Schemeの末尾再帰や継続呼び出しを載せようとすると、 とたんに難しくなるよね。 末尾再帰だけならまだ楽か。
- 225 名前:デフォルトの名無しさん mailto:sage [04/01/06 18:52]
- 末尾再起も継続も簡単
大変なのはクロージャや継続の実装に必要な 環境の複製の効率化。
- 226 名前:デフォルトの名無しさん [04/01/06 19:01]
- まぁ、LISPと言ってる時点で(ry
- 227 名前:デフォルトの名無しさん mailto:sage [04/01/06 21:27]
- >大変なのはクロージャや継続の実装に必要な
>環境の複製の効率化。 これって Scheme に限らない問題だと思うんだけど(lexical closure を持っている 言語は沢山あるよね)、これに関して日本語のまとまったドキュメントってあまり 無いね(知らないだけ?)。 知ってるのはこことか。 ttp://www.shiro.dreamhost.com/scheme/gauche/memo-stack-j.html
- 228 名前:デフォルトの名無しさん [04/01/06 22:09]
- LISPで有効に実用化されているプロジェクトってあるのw
- 229 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:12]
- アーロン
- 230 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:21]
- >>228
Lisp そのものじゃないが、Lisp に極めて近い文法のファイルでデータを保存する CAD ソフトは見た事あるな。確かに、書くの楽そうだ。
- 231 名前:デフォルトの名無しさん mailto:sage [04/01/06 22:27]
- 何かちょっと調べてみると、Pure な OO って意味があるのか疑問に感じてきた。
Java みたいにプリミティブを用意した方が効率良さそう。Hybrid 言語マンセー!
- 232 名前:デフォルトの名無しさん [04/01/07 20:27]
- アホーン
- 233 名前:デフォルトの名無しさん mailto:sage [04/01/08 09:13]
- なるほど、これが冬か。
- 234 名前:デフォルトの名無しさん mailto:sage [04/01/11 15:46]
- merd.net/pixel/language-study/syntax-across-languages/
rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=%a5%b9%a5%af%a5%ea%a5%d7 %a5%c8%b8%c0%b8%ec%a4%ce%c8%e6%b3%d3 色んな言語の構文の比較。 考えやすく、書きやすく、なおかつ読みやすいシンタックスって何だろう。 Haskell はちょっと良い感じ。
- 235 名前:デフォルトの名無しさん [04/01/11 18:36]
- Windows上で使えるlexを教えてください。
よろしく
- 236 名前:デフォルトの名無しさん mailto:sage [04/01/11 18:39]
- 少しは調べる努力をしろ。
以上
- 237 名前:235 [04/01/11 18:42]
- >>236
調べたけど見つからなかった。 よろしく、
- 238 名前:デフォルトの名無しさん mailto:sage [04/01/11 18:44]
- flex.
- 239 名前:235 [04/01/11 18:46]
- >>238
ありがとう お礼にパトレイバーのプロトタイプをのせとく www.enryu.jp/
- 240 名前:デフォルトの名無しさん mailto:sage [04/01/11 21:43]
- 夢のプログラミング言語@いちごびびえす
www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0071&rm=50
- 241 名前:デフォルトの名無しさん mailto:sage [04/01/11 22:53]
- >>240
プログラミング言語は満載した機能を特色の第一とするものではない。 あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。
- 242 名前:デフォルトの名無しさん mailto:sage [04/01/12 00:19]
- >proglam
頭の程度が知れたな
- 243 名前:デフォルトの名無しさん [04/01/12 02:01]
- 上の方にあった(↑)「UNIXプログラミング環境」に掲載されていた関数
電卓hocですが。 ちょっとしたフロー制御や、ユーザー関数定義等ができることを考えると、 ほぼ、スクリプト言語のコアが出来上がっているとも考えられますが、い かがでしょうか?
- 244 名前:デフォルトの名無しさん mailto:sage [04/01/12 02:28]
- >>241
激しく同意。どうもC++系に知識が偏ってるぞ>>240のリンク先の>>1は。 とりあえず本当にSchemeぐらい齧って欲しいな。
- 245 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:10]
- >>244
lisp知りたてのおばかさんですか? 継続とかコードとデータの同一視とか、その辺の動的な事情が適合しない分野もあるだろうに。 lisp的な考え方は切り捨てるべきときがあることも勉強しときなさいな。
- 246 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:20]
- >>245 は Lisp を叩くと偉いとでも思っているのかな?
それとも継続って言ってみたかっただけか? 気持ちは分かるけど、スレの流れからしてそのレスは不自然。
- 247 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:24]
- 元が夢・独り言板なんだから、
そこの>>1にとっての「夢のプログラミング言語」でしょ、ほっといてやれ。 まあ、C#++くらいの雰囲気になっているのは確かだけど。
- 248 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:25]
- 継続って言ってみたかったってのはあるかもな。
ただlispといわずにあえてschemeというからには、継続しか要因がないだろうからな。 まあ、実るとは思ってないけど何かやろうとしている人を 頭ごなしに否定するレスってのはどうよって思うわけだ
- 249 名前:!244 mailto:sage [04/01/12 03:32]
- >>248
出典出さなくて申し訳ない。まずは下の「はじめに」を読んで欲しい。 そしたら何で >>244 が Scheme って書いたのかが分かると思う。 ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html あと、何にせよコンパイラ作るのに Lisp は知っていた方が良いでしょ。
- 250 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:37]
- 継続しか、ってことはないだろうに
- 251 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:41]
- schemeにはあってcommon lispには無いものって細かいことを除けば
継続と末尾再起の展開の規定くらいなものだろ
- 252 名前:デフォルトの名無しさん mailto:sage [04/01/12 03:48]
- なんか増えてるな
調べるともっと増えるんだろうな
|

|