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
501 名前:デフォルトの名無しさん [03/03/18 22:28] そういえば、最近はスクリプト言語の時代らしいんだけど、 ろくな言語ないよなぁ〜、 コンパイル言語のときは、Cがあったけど なんていうかパールは暗号みたいだし、 AWKはフィルタ専門だし、(SEDも) ルビーはOOだし、 なんかみんな極端なんだよねぇ。。。
502 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:30] HSPがあるよ!
503 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:31] >>501 > そういえば、最近はスクリプト言語の時代らしいんだけど、 > ろくな言語ないよなぁ〜、 > コンパイル言語のときは、Cがあったけど (w > ルビーはOOだし、 これがオチですか?
504 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:32] >>501 じゃあどんなのがいいんだよ
505 名前:デフォルトの名無しさん mailto:sage [03/03/18 22:33] cintがあるやん
506 名前:デフォルトの名無しさん mailto:sage [03/03/18 23:49] >>504 純粋関数型のスクリプト言語
507 名前:デフォルトの名無しさん mailto:sage [03/03/19 00:05] Haskell
508 名前:デフォルトの名無しさん mailto:sage [03/03/19 00:28] インタプリタがほしけりゃghciでいいじゃん
509 名前:デフォルトの名無しさん [03/03/19 01:08] >>502 win用じゃん(w os2用もあるらしいが。。。(w 畑違い、ハゲ稿!
510 名前:デフォルトの名無しさん [03/03/19 01:18] >>505 ヨサゲだけど、絶版ですか? ちょっと残念(本)
511 名前:デフォルトの名無しさん [03/03/19 01:23] >>507 なんか難しい論文ばかりで、学者○カ向け?
512 名前:デフォルトの名無しさん [03/03/19 01:24] >>ghci なにそれ?
513 名前:501 mailto:sage [03/03/19 01:51] やっぱりHSPが最高だね、アハハハハハ
514 名前:デフォルトの名無しさん mailto:sage [03/03/19 05:14] >>489 スペルミスの多さからしてネタだろ。
515 名前:デフォルトの名無しさん mailto:sage [03/03/19 05:20] >>482 cygwinのが1.875bで手元では一番新しかったんで試してみたけど、そんなコー ドは吐かないな。
516 名前:デフォルトの名無しさん mailto:sage [03/03/19 11:20] とりあえず付箋紙ベースのスクリプトエンジンを作成しようとおもいますた。 Basicインタープリターは別なところでできてるんだけど、アイデア暮れ。
517 名前:デフォルトの名無しさん mailto:sage [03/03/19 13:32] 付箋紙?
518 名前:デフォルトの名無しさん mailto:sage [03/03/19 14:43] >>509-512 =日下部
519 名前:デフォルトの名無しさん mailto:sage [03/03/20 01:06] 結局ライブラリをどうするかなんだよ。スクリプト作る時間よりも、 ライブラリ用意する手間の方がでかい。特にOO系言語のクラスlib なんてもうみてらんない。シコシコ使うかどうかもわからんクラス階層 作ったりしてんの。バカみたい。クソインターフェース量産したりしても 誰もつかわねえよ(ププドキュメントも用意しないとわかんねえし、 忘れるし。そんなことしてる暇あったらデバッガ作れよ。 結局クラスがクソなら誰もつかわねえって。 時間の無駄だっつうの。
520 名前:デフォルトの名無しさん mailto:sage [03/03/20 01:58] >>519 Java の仕事がメインになったけど、Cばかりを組んできたから、うまく対応できなくて困っている 老人ですか? MFC はともかく、Javaは、ライブラリーの規模を考えれば、うまく設計されていると思いますが?
521 名前:デフォルトの名無しさん mailto:sage [03/03/20 05:25] 要するに標準入出力さえきちんとしてくれれば全てオッケー 言語はどうでもいい。 その分野を最も得意とする言語で書く。
522 名前:デフォルトの名無しさん mailto:sage [03/03/20 23:26] 言っていることは正しいし、激しく同意だが、すれ違いだ。
523 名前:デフォルトの名無しさん [03/03/21 18:19] これからの主流はスクリプト言語なんだろうか? なんか、パールとルビーの宝石コンビじゃいやだなぁ〜(w
524 名前:デフォルトの名無しさん mailto:sage [03/03/21 18:37] スレと無関係ない事書くなや、ここは死滅スレじゃねぇ
525 名前:デフォルトの名無しさん mailto:sage [03/03/21 21:20] >>524 スレタイトルがわるい
526 名前:デフォルトの名無しさん mailto:sage [03/03/21 21:27] >>525 > >>524 > スレタイトルがわるい 分かりやすくていいじゃないの? 何が不満なの?
527 名前:525 mailto:sage [03/03/21 22:47] >>526 別に不満はないよ。不満があるのは>>524 さんでしょ。
528 名前:デフォルトの名無しさん [03/03/21 23:45] ☆^〜^★「探し物とくとくページ」☆^〜^★ sagatoku.fc2web.com/ あなたの探し物きっとみつかります ほぼ毎日 新着情報追加 毎日更新 新着情報メールでお知らせ
529 名前:デフォルトの名無しさん mailto:sage [03/03/22 04:29] >>527 ここは言語仕様でなく、 実装について語るスレだったはずなんだが・・・
530 名前:デフォルトの名無しさん mailto:sage [03/03/22 11:27] >>529 >前スレ1より >>yaccやlexの使い方やら言語仕様やらの話題。 って>>1 にかいてあるよ?
531 名前:デフォルトの名無しさん mailto:sage [03/03/22 12:46] >>530 529ではないが、どうにも最近は厨が来るから次スレから抜きにしないか? > all 必要なときは関連して話題になるだろうし、そういう状況なら厨が入り込む余地はないだろう。 ここで在っていいのは宗教論争ではなく実装に関連した言語仕様の話題のほうがいいと思う。
532 名前:デフォルトの名無しさん mailto:sage [03/03/22 15:56] yacc/lex の使い方の高度な話題はここでいいと思うが。 まあ、次スレまで行くのかどうか問題だが。
533 名前:デフォルトの名無しさん mailto:sage [03/03/22 21:23] flexに #include <unistd.h> を出力させない方法はないですか?
534 名前:デフォルトの名無しさん [03/03/22 21:59] 宝石兄弟と仲良くする擦れはここですか?
535 名前:デフォルトの名無しさん mailto:sage [03/03/23 07:02] (*゚ー゚) しぃ の、言語をつくろう!!(゚ー゚*) pc.2ch.net/test/read.cgi/prog/1034581899/
536 名前:int [03/03/23 09:37] ちょっと聞きたいんだけど、いわゆるスクリプトと呼ばれるインタプリタ処理系は、 (中間言語を含め)内部で事前コンパイルしてるものなのでしょうか?
537 名前:デフォルトの名無しさん mailto:sage [03/03/23 09:52] してるよ
538 名前:int [03/03/23 10:15] それは、事前に全ソース(つまり頭から尻尾まで)変換してから 実行しているってことですか?
539 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:25] >>538 大抵は一括変換だけど、 ある単位(関数や変数など)ごとに変換していくのもあるよ
540 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:26] ∩ ∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д`)// < 先生!こんなのを発見シマスタ! / / | / /| / \ saitama.gasuki.com/sinagawa/ __| | .| | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄\ \_____________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
541 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:29] ↑ブラクラなので踏まない様に
542 名前:デフォルトの名無しさん mailto:sage [03/03/23 10:52] >>533 自分はあきらめて空の unistd.h をシステムインクルードディレクトリに入れてしまいました。
543 名前:int [03/03/23 17:16] >>539 文字通り1行毎に逐一変換&実行している言語はないのでしょうか? なんか、そのほうがインタプリタ(スクリプト)というイメージに ぴったりなんですが。。。
544 名前:デフォルトの名無しさん mailto:sage [03/03/23 17:17] N88BASIC?
545 名前:デフォルトの名無しさん mailto:sage [03/03/23 17:24] >>543 sh
546 名前:ろうひ男爵 mailto:sage [03/03/23 18:55] >>544 N88BASICも、入力されたときに中間コードに落とすんじゃなかったですっけ? >>543 GOTOなどのジャンプ先のアドレス解決を毎回やると、 検索だけで重くなってしまうので実用的ではないのでは?
547 名前:デフォルトの名無しさん mailto:sage [03/03/23 19:16] >>543 自分の場合は、スクリプトとして自働実行する以外に、コマンドラインのインターフェイスを 持たせたいときは、そういうことをする場合もあります。 ただ・・・ 構造化された構文がこれだと作りにくいんだ、 だからある程度派手な構文を持つ場合はパースするか、コマンドラインだけ文法限定して 別パーサーで作っていたりします。 ちなみに、古いベーシックなんかが一行入力時にそのつどパースしてるんじゃないかな。 いまどきの文法はちょっと苦しいかも。
548 名前:int [03/03/23 23:05] やはり、実行速度がもんだいのようですね。 いろいろとありがとうございました。
549 名前:デフォルトの名無しさん mailto:sage [03/03/24 09:24] >>547 だからshのソース嫁。gotoはないけどブロックはある。
550 名前:デフォルトの名無しさん mailto:sage [03/03/24 11:02] >>549 まあできんことは無いんだが・・・ たんに大変だなとか思ってね。
551 名前:デフォルトの名無しさん mailto:sage [03/03/24 12:52] >>546 実行時にsyntax errorが出るくらいだから、それはないと思う。
552 名前:デフォルトの名無しさん mailto:sage [03/03/24 12:57] >>551 たしか予約語を中間コードに置き換えるようなことはやってたと思うが。 でも構文チェックをしたり構文木を作ったりは当然しない。
553 名前:デフォルトの名無しさん mailto:sage [03/03/24 16:41] >>551 N88しか知らないけど、runした瞬間に出るエラーもあるよ。 for〜nextの対応関係だったかなぁ。
554 名前:デフォルトの名無しさん [03/03/26 22:14] その中間言語って、なにか規格みたいなものあるの? それともデファクトスタンダードな仮想マシンがあるの???
555 名前:デフォルトの名無しさん mailto:sage [03/03/26 22:19] >>554 そんなもんは無いです、当時は中間コードの利用目的は高速化とプログラムのメモリー占有サイズの削減が目的。 わずか数キロバイトにプログラムを収めるのにTEXTデータは大きすぎたのです。
556 名前:デフォルトの名無しさん [03/03/27 03:20] つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な エラーメッセージを吐き出しますよね。 LALR(1)で解析してて、あんなことってできるもんなんですか? yaccとかだと、ちょっとerrorを突っ込んだだけでconflict起こしますよねぇ。 LR(1)とかだったらそこいらじゅうに、擬似シンボル埋め込めばできなくも なさそうな気はしますが、、、 そのへんってどうなんでしょう?
557 名前:デフォルトの名無しさん [03/03/27 03:54] >>555 THANX
558 名前:デフォルトの名無しさん mailto:sage [03/03/27 11:42] >>556 「異常に的確なエラーメッセージ」の例を挙げないと、 答えづらいと思うよ。
559 名前:デフォルトの名無しさん [03/03/27 20:00] >>556 異常に典型的なミスを犯しているだけでは?(w
560 名前:デフォルトの名無しさん mailto:sage [03/03/28 17:07] VCのエラーメッセージって異常に意味不明なものが多いと思うがな。
561 名前:デフォルトの名無しさん mailto:sage [03/03/29 01:13] 「予期せぬ EOF が検出されました」 のどこが的確なメッセージなのかと、小一時間t(ry
562 名前:デフォルトの名無しさん [03/03/29 16:28] やはり、>>559だろう
563 名前:デフォルトの名無しさん mailto:sage [03/03/29 18:30] >>556 >つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な 具体的にどの辺が的確なエラーメッセージだと思ったのか、書け。
564 名前:デフォルトの名無しさん mailto:sage [03/03/29 19:04] >>559-563 煽りは死滅スレでやれや
565 名前:563 mailto:sage [03/03/29 19:24] >>564 煽りに見えてのはお前だけだと思われ。 もし>>556 =>>564 だとしたら被害妄想だよ。 死滅スレ居座りすぎて病気になったか(w 説明不足を解消せよってだけ。
566 名前:デフォルトの名無しさん mailto:sage [03/03/29 19:27] >>565 >>558 がもう指摘してるじゃん。
567 名前:563 mailto:sage [03/03/29 19:45] >>566 んなことわかってるよ。 これじゃ話が進まないから催促してるの。
568 名前:デフォルトの名無しさん mailto:sage [03/03/29 21:15] 563 は "(w" とかつけている段階で論外。 毎日見ていない人もいるだろう、そのうち書かれた時に理由を考えればいい。 ただ煽るだけで意味のないことするな。
569 名前:デフォルトの名無しさん mailto:sage [03/03/29 21:49] 結局556がアホなだけだな。
570 名前:デフォルトの名無しさん [03/03/30 20:24] インタプリタの中間コードは8ビットが普通ですか? いきなり32ビットとはしてるものはありますか?
571 名前:デフォルトの名無しさん mailto:sage [03/03/30 20:35] >>570 Java。全て4バイトがベース。
572 名前:デフォルトの名無しさん [03/03/30 20:52] 皆さんのお力でぜひぬるぽをageて下ちい。 ∧_∧ ( ´∀`)< ぬるぽ ぬるぽ 投票ヨロシク pumpkinnet.to/ranking/words/
573 名前:デフォルトの名無しさん mailto:sage [03/03/30 21:50] Javaは8bitじゃないのか?
574 名前:デフォルトの名無しさん [03/03/31 00:29] そういえば、java関係の本はそれこそ腐るほど(?)あるが、 バイトコードとか仮想マシンの説明をしてるものってある?
575 名前:デフォルトの名無しさん mailto:sage [03/03/31 00:49] >>574 オライリがバーチャルマシン仕様の解説本出してるよ。
576 名前:デフォルトの名無しさん mailto:sage [03/03/31 00:50] >>574 本屋で立ち呼んだ記憶があるからあるんじゃない?
577 名前:デフォルトの名無しさん mailto:sage [03/03/31 02:52] ソースコード読めばいんじゃないの? そこまでやるのはちょっと、、、という のなら、そもそもVMの勉強なんてしなくても いいんじゃないの?
578 名前:デフォルトの名無しさん mailto:sage [03/03/31 03:31] Structured Computer Organization by Andrew S. Tanenbaum www.amazon.com/exec/obidos/tg/detail/-/0130959901/ にちょっとだけ説明があります。 オペコードが1バイトで全体としては1〜3バイトのがほとんどだそうです。 java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html のどこかに説明あるかと思いましたが、発見できませんでした。 見落としあるかもしれません。 あとamazon.comをjava virtual machineで検索すると7冊ほどひっかかりますね。 www.amazon.com/exec/obidos/search-handle-url/index=books&field-keywords=java%20virtual%20machine&search-type=ss&bq=1
579 名前:デフォルトの名無しさん [03/03/31 04:36] WSHとかってプログラム上から使ってその結果を受け取ることは出来ないのでしょうか? MSDNを見ますと「IActiveScript」と言うのが在るのですが, いまいちサンプルが乏しくて困っています.
580 名前:デフォルトの名無しさん mailto:sage [03/03/31 04:43] 一通りの使い方ならRuby256本の邪道編に書いてあった気がするが。 スレ違いじゃないか?
581 名前:579 mailto:sage [03/03/31 19:20] IActiveScriptってWSHにRubyとかの他の言語拡張するための インターフェイスなのですか? 今考えているソフトでWSHスクリプトファイルをユーザに用意してもらい, そこに書いているスクリプトを実行することによってアプリケーションの 挙動を変化させたいと思っています. WSHあるいはJSCRIPT,VBScript等をプログラム上でロードして実行させる 方法が知りたいです. よろしくお願いします. 環境: VC++ 6.0 IE Ver 6.0.2
582 名前:デフォルトの名無しさん [03/03/31 20:09] >>577 何のソースコードを読めばいいの? VMのソースコード?それって公開されてるの?
583 名前:デフォルトの名無しさん mailto:sage [03/03/31 20:19] 良い子は検索したり、過去ログ読んだりします。
584 名前:デフォルトの名無しさん mailto:sage [03/04/01 01:40] <死ね> www.amazon.co.jp/exec/obidos/ASIN/490090063X/qid%3D1049128711/250-2465643-1535410 www.amazon.co.jp/exec/obidos/ASIN/489471356X/qid=1049128646/sr=1-1/ref=sr_1_2_1/250-2465643-1535410 VMはオープンソースのプロジェクトがいくつかあったはず。 GNUにもあった気がする。 俺が知ってるのはOSがマイナーなんで言ってもしょうがない。 </死ね>
585 名前:デフォルトの名無しさん mailto:sage [03/04/01 01:43] <死ね target=">>582 "> www.amazon.com/exec/obidos/ASIN/3540420886/qid=1049128836/sr=2-2/ref=sr_2_2/104-8886811-5842366 全部読んだわけではないが書き方が変わってるんでVMの勉強としては素直に薦められない。 www.amazon.com/exec/obidos/ASIN/0201432943/qid=1049128836/sr=2-1/ref=sr_2_1/104-8886811-5842366 は上にあげたとおり邦訳が出てるんでそっちを読め。訳に問題はない。 あとの洋書は大体到着待ち。 </死ね>
586 名前:デフォルトの名無しさん mailto:sage [03/04/01 02:32] >>582 www.kaffe.org とか…
587 名前:デフォルトの名無しさん [03/04/05 17:27] いろいろと参考になりますね、この擦れ。 ところで、JAVAのVMがやはり事実上のスタンダードになりつつあるのでしょうかね?
588 名前:デフォルトの名無しさん mailto:sage [03/04/05 17:33] 現状はそう。 でもCLRとかParrotとか、未来の可能性は閉じてはいない。
589 名前:デフォルトの名無しさん [03/04/05 17:35] >>587 なんの事実上のスタンダード? VMといえばJavaのVMってことか?
590 名前:デフォルトの名無しさん [03/04/05 17:57] >>581 やり方が分かったら連絡してくれ.
591 名前:デフォルトの名無しさん mailto:sage [03/04/06 02:48] >>587 スタンダードというか、参照・参考にするのに比較的お手軽なのは確か。
592 名前:デフォルトの名無しさん [03/04/08 21:55] VMってJAVAスクリプト自体は解釈できんのね?
593 名前:デフォルトの名無しさん mailto:sage [03/04/08 22:17] JavaとJavaScriptは何の関係も無い(たしか)
594 名前:名無し mailto:sage [03/04/09 01:24] VMが理解できるのはバイトコードだけかと
595 名前:デフォルトの名無しさん mailto:sage [03/04/09 11:34] はぁ?
596 名前:デフォルトの名無しさん mailto:sage [03/04/09 13:44] >>593 そだね最初はNetscape社のLiveScript。でJavaが現れて なんとなく名前をJavaScriptに変更。 www.howtocreate.co.uk/jshistory.html つうかこれくらいはgoogleですぐ見つかるんだが…
597 名前:デフォルトの名無しさん mailto:sage [03/04/10 11:47] Javaを意識してみたという点では、まったく無関係でもない。
598 名前:デフォルトの名無しさん mailto:sage [03/04/10 12:40] >>597 ばーか
599 名前:コンパイラを勉強するには? [03/04/10 15:41] 今まで、業務でJavaを1年半使った以外、プログラム経験はありません。そのJavaもWeb系が主です。 こんな僕でも、コンパイラの事を理解する事ができるでしょうか?JavaCCと言うのをやろうとしているのですが、 これをやるには、Java以外の知識よりもプログラム全般に詳しくないとできないですよね? 『おまえには、まだ無理だ。そんなんじゃJavaCCなんて理解できるはずはない。』なんてことは、皆さん思いませんか? それとも、私ほどの経験でもJavaCCを理解する事は可能なんでしょうか? 何年かかっても良いので、最良の道を行きたいと思っています。 それには、やはりC言語などからプログラムというものを理解し、一般のコンパイラ事情を知ってから、JavaCCに行った方が良いのでしょうか? よろしくお願いします。
600 名前:デフォルトの名無しさん mailto:sage [03/04/10 15:50] 愛さえあればできるよ。
601 名前:デフォルトの名無しさん mailto:sage [03/04/10 15:52] できちゃった♥
602 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:15] >>599 個人的にゃJavaって泥臭いとこを隠してるから一回Cでそういう所を 見た方がいい気がする。 UNIX使えるならシェル書いてみるのはどうよ。
603 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:17] Java慣れてるならJavaでいいじゃん。 なんで遠回りすんの?>602
604 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:28] んー?別にCで全部やれっちゅうワケじゃないのよ。 ただ、作ろうとしてるモンはJavaでもCでもない「別の言語」 だから他の言語との違いを知っとった方がいいかと思う。
605 名前:デフォルトの名無しさん mailto:sage [03/04/10 16:34] あ、でもJavaってアプリ自身がJavaで書かれたコードを実行する機能を 持たれられた気がするな… マクロとかだとそっちの方が早いか?
606 名前:デフォルトの名無しさん mailto:sage [03/04/10 17:50] >>599 C yacc lex は書籍が多いから、それがいいかもね。 とりあえず C をマスターしておいて、整数だけbasicからjavaへのトランスレータとか作ってみたらどう? でき上がったものは無意味だけど、やり方は理解できると思うよ。
607 名前:デフォルトの名無しさん mailto:sage [03/04/10 18:05] (´-`).。oO(>602 コンパイラ作るのになんでシェルが関係あるんだろう?) 最終的に機械語やバイトコードに落とす必要は必ずしもないのだし、 そこまでいくには道のりは遠いので、まずは構文解析できるように なればいいのでは。 ただ、言語を作るのはただツールをいじっていればなんとかなるものでもない。 きちんとしたものを作れるようになるには知識が必要なので、しっかりした 解説を読むべし。 Java + JavaCC で書いてあるwebなり本なりが見つかればそれでもいいし、 見つからなければCを覚えて本を読む方がいい。理論がわかればツールを使うの はJavaCCだろうがyaccだろうがたいしてかわらない。 過去ログを見ればweb上の講義ノートもあったと思う。(前スレだったかも)
608 名前:デフォルトの名無しさん mailto:sage [03/04/10 18:24] シェルスクリプトあたりからってことじゃないの
609 名前:デフォルトの名無しさん mailto:sage [03/04/10 18:40] だとしてもなんでshなんだよ。 まだLISPでもやってた方がいいぞ。
610 名前:コンパイラを勉強するには? [03/04/10 19:55] どうも、皆さん幅広いご意見ありがとうございます。 大変参考になったのですが、やはり難しそうですね。しかし、生まれつき、計算とかが 好きなものですから、話しを見ているだけで、とてもわくわくしてきます。 やはり、いきなり、JavaCCに入るのではなく、他の方から入っていく事にします。 もっといろいろ読みたいので、良ければみなさん、またいろいろ書いておいてください。 よろしくお願いします。
611 名前:デフォルトの名無しさん mailto:sage [03/04/10 20:36] >>610 yacc lex なら、そんな難しいものじゃないから、習うより馴れろでガンガンいけばいいよ。 ただCは押さえて置かないと進むものも進まないから、Cはがんばってね。 多分なじみの薄い物で参考資料も少なく、yacc を使うにあたって必要不可欠なCの概念は union だと思います。 そこは気合で行ってくれ。
612 名前:コンパイラを勉強するには? [03/04/10 21:32] 気合で行くわ。
613 名前:デフォルトの名無しさん mailto:sage [03/04/10 21:38] どうも、仕事で簡易スクリプトを作ることになりそう。 基本的には、引数付の関数呼び出しと変数への値代入程度 で済ませたいけど、制御構造も作らざるを得ないかも・・・。 まあ、ちょうどよい勉強と思ってやってみるつもりです。
614 名前:デフォルトの名無しさん mailto:sage [03/04/10 23:03] 仕事なら既存のやつ使った方がいいんじゃねーの?
615 名前:デフォルトの名無しさん mailto:sage [03/04/11 00:59] この時期だし研修用でそ
616 名前:デフォルトの名無しさん mailto:sage [03/04/11 09:34] >>614 アプリケーション組み込み物のスクリプトだと既存という訳にはいかんよ、作るしかないです。 仮にソースが取得できたとしても、殆どがGPLに侵されたコードで再利用は不可能だからね。
617 名前:デフォルトの名無しさん mailto:sage [03/04/11 12:46] >>616 perlもpythonもrubyもtclもGPL以外での利用を認めてるが。
618 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:17] >>617 たとえば www.ruby-lang.org/ja/LICENSE.txt とかは? 近は過激な運動家がいたりして危ないから、そういう報流すのは良くないよ〜
619 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:18] 近→最近
620 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:37] つーかGNU謹製のguileですら非GPLソフトへの組み込みを認めていたりするのだが。
621 名前:デフォルトの名無しさん mailto:sage [03/04/11 13:45] >>620 お仕事用というのだから、組み込みよりもソースの公開が問題なんじゃないの?
622 名前:デフォルトの名無しさん mailto:sage [03/04/11 14:16] >>621 GPLと互換性のないライセンスのソフトに組み込める==ソース公開の義務がない(スクリプトエンジン以外は)
623 名前:デフォルトの名無しさん mailto:sage [03/04/11 14:25] >>622 その解釈は結構きわどいと思うな・・・
624 名前:デフォルトの名無しさん mailto:sage [03/04/11 14:46] スクリプトエンジンに手を加えずに使うんだったらいいんじゃない? 手を加えたくなってもフィルタで済ます。
625 名前:デフォルトの名無しさん mailto:sage [03/04/11 19:46] >>618 > www.ruby-lang.org/ja/LICENSE.txt 「または以下に示す条件で」って書いてあるじゃん。 rubyに関しては何度かMLでもそういう話があるが、結論としては 「迷惑をかけないでくれ」だけのはず。 ところで過激な運動家って何だ?
626 名前:デフォルトの名無しさん mailto:sage [03/04/11 21:34] Qちゃん
627 名前:デフォルトの名無しさん mailto:sage [03/04/12 00:43] >>626 過激だったのか。中の人も(ry
628 名前:デフォルトの名無しさん mailto:sage [03/04/12 06:46] そろそろスレ違い気味なのでGPLスレでも建てて議論してくだちゃい
629 名前:デフォルトの名無しさん mailto:sage [03/04/12 12:46] ここだな? 【殺しの】ライセンス【道で拾った】 pc2.2ch.net/test/read.cgi/tech/1045006087/
630 名前:デフォルトの名無しさん mailto:sage [03/04/12 17:19] >>599 JavaCC使うなら、LL解析法だからLALR解析法を使うyaccは勉強しなくていいよ。 ちょっとした簡単な言語のインタプリタを作ったことがかなり前にあるんだけど、 簡単なインタプリタならそんなに難しくないはず。 LL文法とBNFがわかれば、JavaCCは使えるようになると思う。 言語処理系の本を1冊借りてきて、Let's Try!
631 名前:デフォルトの名無しさん mailto:sage [03/04/12 17:23] 追加。 ドキュメントが英語で分かりにくいから、 ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html この辺を参考に。 大量にサンプルがついてるから、それを参考にして作るといいかも。
632 名前:デフォルトの名無しさん mailto:sage [03/04/14 21:08] LL(k)らしいんだけど誰か使てる? spirit.sourceforge.net/
633 名前:デフォルトの名無しさん [03/04/16 23:30] func(); という長い関数があったとして、これを func1(); func2(); func3(); と分割するようなプログラムを作ってみたいと思ってます。 なにか参考になる情報、またはすでにそういうものがあったら教えてください。 それでは宜しくお願いします。
634 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:41] >>633 リファクタリングで検索
635 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:43] >>634 それは手作業でやるのでは?
636 名前:デフォルトの名無しさん mailto:sage [03/04/16 23:49] >>635 おまえは一体どう分割したいのかと(ry まさか単純にぶった切るつもりか?
637 名前:デフォルトの名無しさん [03/04/16 23:52] 単純にぶったぎりますが、ちゃんと途中経過を保存・復元する部分を付け加えたいです。
638 名前:デフォルトの名無しさん mailto:sage [03/04/17 00:11] >>633 の説明だけで何を判れと言うのか。
639 名前:デフォルトの名無しさん mailto:sage [03/04/17 00:20] >>637 ローカル変数を全部構造体に入れてfunc()で確保、 func1(),func2(),func3()にそいつのポインタを渡してアクセス。 真面目にやるならフロー解析が必要。
640 名前:山崎渉 mailto:(^^) [03/04/17 15:16] (^^)
641 名前:デフォルトの名無しさん [03/04/19 08:22] 荒したい策の保守あげ
642 名前:デフォルトの名無しさん mailto:sage [03/04/19 15:36] 荒らしたい 策
643 名前:山崎渉 mailto:(^^)sage [03/04/20 03:02] ∧_∧ ( ^^ )< ぬるぽ(^^)
644 名前:山崎渉 mailto:(^^)sage [03/04/20 03:41] ∧_∧ ( ^^ )< ぬるぽ(^^)
645 名前:デフォルトの名無しさん [03/04/23 03:52]
646 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/04/24 15:18] 最近 Perl の Parse::Yapp というモジュールで遊んでいます。 Yacc の Perl 版です。 これで何かハックした神の報告を待つ。
647 名前:デフォルトの名無しさん [03/05/23 14:24] ♥
648 名前:名無し@沢村 [03/05/23 16:07] おまいらよ、コンパイラをつくっただけじゃ言語はできんぞ。 リンカの解説はないか?
649 名前:デフォルトの名無しさん [03/05/23 18:15] >>84 超遅いレスだけど、漏れも同じところで詰まっている。 P82までは何とか理解できたけど、LL(1)文法の理論説明になると急に難しくなる。 かなり前のページで定義したことが突然出てきたりするし。 コンピューター学科や数学科出身の人を前提にしているのだろう 漏れは情報学科出身ではないから読んでいてつらい・・・ しかも時間の空いているときに少しづつ読むような読み方では、前回読んだことを 覚え続けるのが困難。
650 名前:649 [03/05/23 18:26] First集合,Follow集合,Director集合は、 ある文法がLL(1)文法かどうかを調べるためだからとりあえず読み飛ばすことにします・・・
651 名前:649 [03/05/23 18:30] >>648 去年、"Linkers & Loaders" (John R.Levine著 ポジティブエッジ訳・オーム社)を読んだのですけど、 説明がかなり大雑把で実装レベルで直接役立てるのはちょっと無理な気がしました。
652 名前:デフォルトの名無しさん mailto:sage [03/05/23 18:31] 大したこと書いてないので、斜め読みで十分。 とにかく、実際に作ってみるのが○
653 名前:652 mailto:sage [03/05/23 18:34] 中田育男の「コンパイラ」本のことね。
654 名前:649 [03/05/23 18:48] >>652-653 レスありがとうございます。 私は情報工学は素人なので、斜め読みするほどの能力はありませんが、 理論から導き出される結論自体はそれほど難しいとは思っていないので なんとか最後まで読んで見ます。
655 名前:逆コンパイラ [03/05/23 20:16] EXEファイルをC言語に戻す逆コンパイラソフトを教えてもらえませんか。
656 名前:デフォルトの名無しさん mailto:sage [03/05/23 20:22] 戻す?
657 名前:デフォルトの名無しさん mailto:sage [03/05/23 20:38] >>655 www.itee.uq.edu.au/~cristina/dcc.html www.backerstreet.com/rec/rec.htm
658 名前:逆コンパイラ [03/05/23 20:47] >>657 上の一番のHPのdcc Decompiler はどこからダウンロードしますか
659 名前:デフォルトの名無しさん mailto:sage [03/05/23 22:32] >>658 Table of Contentsの中に思いっきり「配布」という単語があるわけだが。 辞書とか翻訳サイトつかってでもContentsの一覧ぐらいは一通り嫁。
660 名前:デフォルトの名無しさん mailto:sage [03/05/26 23:13] ↓VMにも色々あるようですが、どういう方式でしょうか? memory to memory SICD machine chemical abstract machine categorical abstract machine while-if machine
661 名前:649 [03/05/27 15:02] 中田育男氏のコンパイラを読み終わって、PL/0'のソースコードをざっと眺めていたのですが・・・ 字句解析と構文解析以外は普通のプログラミングですね。 結局はyacc&lexの勉強をしろということでよろしいでつか?
662 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/05/27 15:51] >>661 そりゃ天下のGCCだって構文解析器はBisonを使って書かれているからね。
663 名前:デフォルトの名無しさん mailto:sage [03/05/27 16:02] >>661 >>662 若者ならyaccは無視してantlrをやったほうがいいでしょうか?
664 名前:649 [03/05/27 16:24] >>663 漏れも良く分からないけどJava環境ならANTLRになるのでは? 漏れはC言語使うのでyaccが魅力的でつ
665 名前:デフォルトの名無しさん [03/05/27 16:30] >>663 若者ならまずは手書きから始めるのが良いですよ。 言語にもよるけど、再帰的降下法はいちばん単純でわかりやすい。 パーサジェネレータを使う場合にも、一度手書きパーサを経験しておかないと なにがなんだかわからない、という人が多いようです。
666 名前:デフォルトの名無しさん mailto:sage [03/05/27 16:46] どうも。やってみます。ただ、23歳はもう若者じゃなかったかもしれません。
667 名前:デフォルトの名無しさん mailto:sage [03/05/27 17:52] あっというまに
668 名前:649 [03/05/27 17:53] >>665 手書きの経験が必要でつか? 漏れは若者じゃないからいいや・・・
669 名前:デフォルトの名無しさん mailto:sage [03/05/27 17:56] 手書きの方が速い
670 名前:デフォルトの名無しさん mailto:sage [03/05/27 18:05] 昔、手書きでCコンパイラを作るとかぶちあげて、全く後が続かず、 入院したことにして結局うやむやにした香具師がいたな。
671 名前:デフォルトの名無しさん mailto:sage [03/05/27 18:10] ただのツール使いはヘタレ。
672 名前:名無し@沢村 [03/05/27 20:29] おまいらよ、コンパイラは字句解析と構文解析だけではないぞ。 いいか、コンパイラはな、字句解析、構文解析、意味解析、最適化、リンカ、ローダとどれが欠けてもダメよ。わかるか? おまいらに、コンパイラをつくる能力があるか?
673 名前:デフォルトの名無しさん mailto:sage [03/05/27 20:53] アセンブラなら作ったことあるぞ。 コンパイラからアセンブリコード吐かせればOKだな。
674 名前:デフォルトの名無しさん mailto:sage [03/05/27 20:59] 最適化はあくまでオブションだし、ローダはOSの仕事だがなw
675 名前:デフォルトの名無しさん [03/05/27 21:14] >>672 大半の人が作りたいのはスクリプトのコンパイラでないの? それなら、字句解析、構文解析、意味解析だけで何とかなるのでは。
676 名前:デフォルトの名無しさん mailto:sage [03/05/27 21:30] >スクリプトのコンパイラ バイトコードコンパイルという意味だよね?
677 名前:デフォルトの名無しさん [03/05/27 22:40] >>676 そうっす
678 名前:デフォルトの名無しさん [03/05/27 22:50] リンカはリンカだろ・・
679 名前:デフォルトの名無しさん mailto:sage [03/05/27 23:07] >>678 Delphiのよーに、コンパイラがリンクまでやってくれると便利なときがあるよ。 同じシンボルがエクスポートされた.objも、別々のユニットから{$L}で取り込めば呼び分けられるし、 リンクエラーとか名前の衝突とかも、リンカじゃなくてコンパイラのエラーになるので 原因となるソースコード上での位置がわかるし。
680 名前:デフォルトの名無しさん mailto:sage [03/05/28 05:29] >>674 正直、最近のマシンは最適化してやらないと実力が出ないから コンパイラ/インタプリタでの最適化は重要だし、 処理系のコード的にも非常に大きな部分を占めてるんだが。
681 名前:デフォルトの名無しさん mailto:sage [03/05/28 05:36] >>680 追伸: オプションなのは最適化なんてしなくていいってコトじゃなくて 様々な最適化技法がプログラムの性質によってそれぞれ有効度があり、 あまり効かなかったり却って遅くなるような場合に外したりパラメータを調節するのが目的。 (昔はデバッグを簡単にする目的もあったけど最近のデバッガは優秀だから 最適化されていてもデバッグできたりするらしいね。)
682 名前:デフォルトの名無しさん mailto:sage [03/05/28 06:00] ほう。最近のデバッガは、最適化で消えた変数も追いかけられるようになったりするの?
683 名前:デフォルトの名無しさん mailto:sage [03/05/28 07:37] 消えたといっても、スタックローカルからレジスタに移っただけだろ? だからレジスタにある間は追いかけられる。
684 名前:デフォルトの名無しさん mailto:sage [03/05/28 10:30] 最適化について知らないなら、まず調べてから書いてください。
685 名前:デフォルトの名無しさん mailto:sage [03/05/28 11:32] 681が言ってるのはインライン展開とか実行順変更程度なら大丈夫という話 682が言ってるのは完全に消えた変数の話 683が言ってるのはレジスタ最適化の話 684が言ってるのは・・・・?
686 名前:山崎渉 mailto:(^^) [03/05/28 12:35] ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
687 名前:デフォルトの名無しさん mailto:sage [03/05/28 15:24] Compiler Design in C www.amazon.com/exec/obidos/tg/detail/-/0131550454/ www.holub.com/software/compiler.design.in.c.html て読破したかたいらっしゃいますか? 古すぎますかね。
688 名前:名無し@沢村 [03/05/28 16:00] おまいら、『コンパイラ・スクリプトエンジン』について相談してみろ?
689 名前:674 mailto:sage [03/05/28 17:41] >>680 672があまりにいいかげんなこと言っていることを踏まえての内容です。 実用性から言えば、680,681に書かれたことは誰でも認める常識かと。
690 名前:デフォルトの名無しさん mailto:sage [03/05/28 17:44] だから沢村に関わるなとあれ程言ったのに
691 名前:デフォルトの名無しさん mailto:sage [03/05/29 00:33] ここには↓を解説できる者はおらんのか? memory to memory SICD machine chemical abstract machine categorical abstract machine while-if machine
692 名前:デフォルトの名無しさん mailto:sage [03/05/29 00:49] >>691 つーかどっから拾ってきたの?論文読めよ。 名前間違ってるのもあるし。
693 名前:名無し@沢村 [03/05/29 05:08] おまいらよ、ここで『コンパイラ・スクリプトエンジン』について知ったかで語ってるやつは多いが、 その割りには世に『コンパイラ・スクリプトエンジン』はそれほど多く出てないが…? みんな自分だけで使ってんの? それとも起動したと同時に終了してしまうコンソールアプリケーション?
694 名前:デフォルトの名無しさん mailto:sage [03/05/29 05:18] 自分のアプリケーション用だろ。 はじめから世に出すつもりで作っていない。
695 名前:デフォルトの名無しさん [03/05/29 07:34] 世に出してほすぃ 設計から実装まですべてさらけだしてほすぃ
696 名前:デフォルトの名無しさん mailto:sage [03/05/29 07:42] さらけ出てるじゃない >>241 >>487
697 名前:デフォルトの名無しさん mailto:sage [03/05/29 08:49] 自分のプログラムにちょっとしたマクロを実装できたらいいなあ〜 って類がこのスレの対象だろ。
698 名前:デフォルトの名無しさん mailto:sage [03/05/29 09:53] >>693 > それとも起動したと同時に終了してしまうコンソールアプリケーション? こんなやつかW? int main() {return 0;}
699 名前:デフォルトの名無しさん mailto:sage [03/05/29 14:28] >>697 最適化に拘らないならXMLとXMLパーサーを使ってみるという選択は? (APIはSAXでもDOMでもお好みで。) 文法の自由度は減るけど ちょっとしたものなら自分でパーサー書くより楽だよ。 例えばmakeと同じような仕事をするANT(だったっけ?)の プロジェクトファイル(だったっけ?)はXMLらしいぞー(じゃー、ゴボゴボゴボ)。
700 名前:デフォルトの名無しさん mailto:sage [03/05/29 14:42] >>699 続き 入力にフォーム、出力はスタイルファイル(CSSでもXSLでも)とでもすれば偽IDE環境も簡単w。 またあるいは、かつてWEB(だっけ?今文献は引越しダンボールの中なんで)という TeX+Pascalの文芸的プログラミングに憧れた人にもXMLマークアップでプログラミング言語というのは それなりに面白い選択かと。
701 名前:デフォルトの名無しさん mailto:sage [03/05/29 17:52] >>699 XMLなんてクソ
702 名前:名無し@沢村 [03/05/29 18:53] >>698 コンソールアプリケーションって、たいがい起動したと同時に終了するだろ?
703 名前:名無し@沢村 [03/05/29 18:56] >>698 てか、コンソールアプリケーションって、一応処理はするんだが、起動して処理をして終了までが、あっという間だから、起動したと同時に終了するように見えるんだな。
704 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:25] 名無し@沢村はどんな『コンパイラ・スクリプトエンジン』を作っているのかな?
705 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:43] >>701 何故ぇ?w
706 名前:デフォルトの名無しさん mailto:sage [03/05/29 19:47] >>702-703 ( ´_ゝ`)
707 名前:デフォルトの名無しさん mailto:sage [03/05/29 20:58] >>699 素から書いたら面倒だけどyacc/lexとかツール使うと工数はxmlと殆ど変わらないと思うけど。 むしろ切り出した後のエラーチェックとか加工とかがxmlだと面倒だなぁとか感じたりするんですけど。
708 名前:名無し@沢村 [03/05/29 21:01] >>704 おれは、起動、コンパイル、実行、終了までが一瞬のうちに終わるスクリプト言語をつくったよ。 コンソールアプリケーションでね。
709 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:03] >>708 int main() {return 0;} が実行できるスクリプトか? すばらしい(藁)
710 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:18] Parrotでいいじゃんよ
711 名前:デフォルトの名無しさん mailto:sage [03/05/29 21:59] >>707 エラーチェックはXML Schema + 検証機能つきパーサで。 切り出し&加工はDOMでやれば楽かも。 書ける言語がXML整形式の範囲に縛られるわけだから なにがなんでもXMLとは思わないけど、文書としても利用されるような 宣言的なスクリプト(例えばモジュールの依存関係を記述するメイク・ファイルや プロジェクトファイルみたいなのとか、環境設定とか、各種ポリシーの記述とか、 各種シーンの記述とか…。)にはいいかなと。 私自身はとあるTRPGのシナリオを記述する言語につかえる 語彙(XML世界におけるマークアップ文法のライブラリ)を 趣味で書いてみているところ。実行系はたぶんJavaで書くと思うけど。
712 名前:デフォルトの名無しさん mailto:sage [03/05/30 07:31] 行単位、スペース区切りでいいじゃん。
713 名前:デフォルトの名無しさん [03/05/30 10:57] >>712 確かにそれが一番便利w 設定ファイルの読み込みや簡単なスクリプトでバッチ処理するときは最強。 しかし、より高機能なものを求めてコンパイラが欲しいのだから そのような提案は無意味
714 名前:フォールトの名無しさん [03/05/30 11:33] オブジェクト指向言語を作ってみたいのですが、良い教科書など 無いでしょうか? 一応、ドシロウトではなくて、括弧の使える四則演算電卓を作った 実績があります(C言語を用いて3ヶ月ほどで開発しました)。 その辺を踏まえて、オブジェクト指向言語の実装に関する、標準的 な書籍なりペーパーなりを紹介していただけないでしょうか? また、このような自作言語に継続的な利用者が現れることを期待 するのですが、どのような場で、どの程度の進捗状況で発表すれ ば良いのか見当がつきません。 成功した開発プロジェクトの実施スキームについて紹介していた だけないでしょうか? せっかく開発する予定の言語なので、できれば世界中の開発者に 使ってもらいたい、プログラミングの概念を根底から覆す提案を したい、と言うのが私の願いです。
715 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:06] 夢が大きくていいけどさ、まずは凝った作りじゃなくて、 もっと単純なコンパイラを練習として作ってみたら? それならこのスレに情報もたくさんあるし。
716 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:09] >>714 がんがれ!!
717 名前:デフォルトの名無しさん mailto:sage [03/05/30 12:39] >>714 Tiger本じゃだめ?
718 名前:フォールトの名無しさん [03/05/30 13:05] >>717 >Tiger本じゃだめ? ISBNコードわかります?
719 名前:デフォルトの名無しさん mailto:sage [03/05/30 13:13] >>714 www.ruby-lang.org/ja/ ソース嫁
720 名前:フォールトの名無しさん [03/05/30 13:25] >>717 Webで検索したらそれらしい本「ISBN 0-521-58388-8」 が見つかりましたが、洋書のため書店での入手が難しく、 あきらめざる得ません(トイレで読むのに丁度よさそうな レベルの本なのに残念です)。 日本で入手容易な、翻訳本など無いでしょうか? >>719 このプロジェクトが終了してからじっくり読んでみたいと 思います。
721 名前:デフォルトの名無しさん mailto:sage [03/05/30 13:35] >プログラミングの概念を根底から覆す提案 って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。
722 名前:デフォルトの名無しさん mailto:sage [03/05/30 14:50] >>718 著者のページ: www.cs.princeton.edu/~appel/modern/
723 名前:デフォルトの名無しさん mailto:sage [03/05/30 14:52] >>721 ま、そりゃそうだが、コードで語るってのもカコイイ ・・・かも知れないw。
724 名前:フォールトの名無しさん [03/05/30 16:32] >>721 >>プログラミングの概念を根底から覆す提案 >って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。 まるで、具体的な計画を持たない香具師のように聞こえてしまう じゃないか(はぁ)。。。この場で核心となるアイディアや 技術を披露するのは、未だ一寸早いと思う。私の考えに基づいた 言語仕様や実装方法が世間に受け入れられるためには、この パラダイムギャップを埋めるための下地が不充分です。
725 名前:_ mailto:sage [03/05/30 16:33] homepage.mac.com/hiroyuki43/hankaku06.html
726 名前:デフォルトの名無しさん mailto:sage [03/05/30 16:40] >>724 と思うなら、まずプロトタイプでも作ってみるしかないんじゃないか。
727 名前:デフォルトの名無しさん mailto:sage [03/05/30 20:28] >>724 どうせ、他に誰か1000人くらいは考えたことがある案だから気にするな。
728 名前:デフォルトの名無しさん mailto:sage [03/05/31 01:55] FPGAの発想を応用して、VMを高速化
729 名前:デフォルトの名無しさん [03/05/31 18:20] 『システムソフトウェアプログラミング ― コンパイラの設計法と並行処理の基礎』 デイビッド クラーク (著) ってのもあるぞ。個人的にはお世話になりました。
730 名前:デフォルトの名無しさん mailto:sage [03/05/31 18:24] >>728 PS3
731 名前:ろうひ男爵 mailto:sage [03/06/05 02:06] >>721 自分的には、 今後はHTのおかげで、ディスクトップレベルででも 16CPU(物理的ではなくね)とか実装される その後、256CPUとか実装されて、 ソフトウェアによって4CPUとか使われるようになる。 オブジェクト指向でつくられたプログラムで、 オブジェクト単位でCPUが割り振られるとか。 (すでにやってそうですね)
732 名前:デフォルトの名無しさん mailto:sage [03/06/05 10:05] >>731 > オブジェクト指向でつくられたプログラムで、 > オブジェクト単位でCPUが割り振られるとか。 CPU間のスイッチが多すぎて激しく遅くなりそうな。
733 名前:ろうひ男爵 mailto:sage [03/06/05 12:17] >>732 メモリーもシェアメモリー部分だけ共有で、 1CPUあたり1GB位ずつ個別に持ってたりとか。 これ以上はすれ違いですね。スミマセン
734 名前:デフォルトの名無しさん [03/06/10 15:09] lexの勉強をしています。 入力先の切り替えをするとき、 AT&T lexの場合は、input()とunput()を再定義する必要がありますが、 flexの場合、YY_INPUTの再定義だけで切り替えができます。 これは、flexが文字の返却をしないアルゴリズムで動作しているとのことでしょうか?
735 名前:直リン [03/06/10 15:13] homepage.mac.com/yuuka20/
736 名前:デフォルトの名無しさん [03/06/10 18:34] >>734 flexの実装については知らないけど、自前で文字バッファ持っていれば unputはいらないでしょう。 lexical analyzerの本質からいって1文字先読みは避けられません。
737 名前:734 [03/06/10 19:42] >>736 そうですよね。 YY_INPUTは、flex側のバッファに文字列をコピーして渡すから、 後はflexの内部バッファの問題になるでしょうね。 確かに文字の返却なしってのは無理かw
738 名前:デフォルトの名無しさん [03/06/10 23:48] >>731 > オブジェクト指向でつくられたプログラムで、 > オブジェクト単位でCPUが割り振られるとか。 ここのJ3Cなんか近いかも? www.nk.rim.or.jp/~jun/j3w/
739 名前:デフォルトの名無しさん [03/06/11 18:33] yaccを使おうとしたら、liby.aがないことに気がつく。 どうしてyaccが入っているのにliby.aがないのかと小一時間・・・ findしてもどこにもないし・・・馬犬 目 ぽ..._〆(゚▽゚*)
740 名前:739 [03/06/11 19:01] www.yuge.ac.jp/home/~nagao/teaching/Compiler/YaccLex/ > Linuxでは liby.a(Yacc用のダミーの yyerror,main)が提供されていません。 > そのため、自分で書く必要があります。 最初からないのね・・・
741 名前:100人に1人 mailto:age [03/06/11 19:16] ◎人の嫌がることをズケッと言うのはこんな奴! <アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)> ●変化を嫌う web.kyoto-inet.or.jp/org/atoz3/kado/book1/Williams-Asp.htm ●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうことがある。人を傷つけるということには鈍感(相手の立場に立って考えられない)。 ●パターン的行動、生真面目すぎて融通が利かない 毎朝の通学電車では同じホームの同じ場所から、同じ時間の同じ号車に乗ることに決めていたりする。パターンを好むということは反復を厭わないことでもある。 ●アスペルガー症候群の子どもは(大人も)感覚刺激に対して敏感。敏感さは聴覚、視覚、味覚、嗅覚、温痛覚などのいずれの感覚の敏感さもありえる(特に視覚が敏感)。 ●アスペルガー症候群の子ども(大人も)は予測できないことや変化に対して苦痛を感じることが多い。 www.autism.jp/l-02-03-aspe3.htm ●独り言を言うことが多い(考えていることを口に出す) ●物事をいつまでも同じにしておこうとする欲求が強く、そうでないと非常に不安。いわゆる「こだわり」。 ●自発的に行動することが少なく、興味の幅が狭い ●物まねをしているような不自然な言語表現 ●自閉症スペクトラム全体としては一万人に91人(およそ100人に1人)。 www.ypdc.net/asuperugar.htm ★自閉症スペクトラムの考え方(アスペルガーに至らない気質の偏りもある(遺伝性)) www.imaizumi-web.com/030413.html ★アスペルガー症候群(自閉症スペクトラム)かどうかのテスト twitwi.s10.xrea.com/psy/add.htm www.geocities.co.jp/Beautycare/5917/as/marksheetmake.html
742 名前:デフォルトの名無しさん mailto:sage [03/06/11 19:46] >>740 liby.aは、あっても中身は無いも同然ですしね、昔は色々入っていたんでしょうか? 古いyaccを知っている人とかいるかな?
743 名前:名無し@沢村 [03/06/11 20:04] コンパイラやスクリプトエンジンをつくろうとしているおまいらよ、夢を見るのはいいことだぞ!! おまいらよ、いろいろコンパイラやスクリプトエンジンの構想を練ってみろ? 多いに夢を見てみろ? そしてつかの間の自己満足にひたってみろ? おまいらよ、夢を見るのはいいことだぞ!!
744 名前:デフォルトの名無しさん mailto:sage [03/06/11 20:26] RubyとかC#とかF#とかMixJuiceとか、そんなレベルじゃない、 もっとぶっ飛んだ未来の言語はありませんか?(´・ω・`)
745 名前:デフォルトの名無しさん mailto:sage [03/06/11 20:43] unlambdaとかは?<ぶっとんだ
746 名前:デフォルトの名無しさん mailto:sage [03/06/11 22:37] ということは、BrainFuckもか?
747 名前:デフォルトの名無しさん mailto:sage [03/06/11 23:44] 別に普通だが
748 名前:デフォルトの名無しさん [03/06/12 00:19] >>739 こんなもんだっけ?msgには\n含まれてたかな?忘れてしまったが。 int main(int argc, char **argv) { return yyparse(); } int yyerror(char *msg) { fprintf(stderr, "%s\n", msg); } もっともこんな手抜きのmainやyyerrorはいずれ捨てることになるんだから、 はじめからちゃんと自分で書きましょう。
749 名前:デフォルトの名無しさん mailto:sage [03/06/12 00:26] -Dyyparse=main -Dyyerror=abort
750 名前:739 [03/06/12 19:42] >>748 liby.aは、740のリンク先から作成しますた。 確かに実用上は自分で書かないとだめぽ ところで、lexにせよyaccにせよ、内部の挙動を考慮して使う必要があるのですね。 使い方を忘れると、訳が分からなくなりそう・・・
751 名前:デフォルトの名無しさん [03/06/12 19:49] >>744 CPon
752 名前:751 [03/06/13 13:45] 俺が書きこんだスレっていっつもレスが少なくなるんだけどなんでだろ?
753 名前:デフォルトの名無しさん [03/06/13 21:40] >>752 CPonって何?
754 名前:デフォルトの名無しさん mailto:sage [03/06/13 21:49] 751は妄想が過ぎるんだよ
755 名前:751 [03/06/13 23:04] >>753 宇宙のステルヴィアで使われているプログラミング言語です 多分 言語なのか怪しいけど
756 名前:デフォルトの名無しさん mailto:sage [03/06/13 23:23] >>755 ??????????????????????????????????????????????
757 名前:751 mailto:sage [03/06/13 23:33] >>756 ごめんなさい、くだらないことなんで気にしないでください
758 名前:名無し@沢村 [03/06/16 20:46] おまいらよ、脳内開発は終わったか?
759 名前:デフォルトの名無しさん mailto:sage [03/06/17 09:28] >>751 ありゃ言語というより環境だろ。 >>752 笑えないから。
760 名前:デフォルトの名無しさん [03/07/10 19:28] lex/yaccの宿題なのですが、ここで質問してもよいでしょうか?
761 名前:デフォルトの名無しさん [03/07/10 22:38] >>760 丸投げはイヤンよ。
762 名前:デフォルトの名無しさん mailto:sage [03/07/10 22:46] 自作ファイラやエディタに言語を組み込みたいんだけど どこかいい説明サイトないですか?
763 名前:デフォルトの名無しさん mailto:sage [03/07/11 00:47] emacsのソース嫁
764 名前:デフォルトの名無しさん mailto:sage [03/07/11 01:05] うーん、ここマジレスしていいとこなのか? >>763 emacsは、特定のアプリケーションにLispが組み込んであるというより、 全体がLispシステムという構成でユーザにLisp環境を与えてるんだから >>762 向きじゃないだろう。 Tclを勉強するのがいいと思う。そもそも汎用の組み込み言語を目指して 発生したものだから。ラッキーなら>>762 はTclをそのまま活用できるかも。
765 名前:764 mailto:sage [03/07/11 01:09] >>764 組み込み用言語 ↓ 言いたかったのは、券売機とか洗濯機とかNC機に組み込むソフトじゃなくて、 アプリケーションに組み込むソフトってことね。後者は何て言えばいいんだっけ?
766 名前:デフォルトの名無しさん mailto:sage [03/07/11 01:20] アプリ組み込み用言語処理系 ・・・ダサ
767 名前:760 mailto:sage [03/07/11 02:16] それではお願いします 次の条件を満たすスタックマシンのオブジェクトコードを出力するコンパイラをlex/yaccを作成せよ。 ・代入文のサポート ・if,if-else,whileのサポート ・入出力文のサポート ・ブロック構造体のサポート ・条件式のサポート ・固定変数のサポート ・int abc,xy[50];のような変数と配列の混在した宣言文が、何行でもファイルの先頭に書ける ・配列への代入、配列からの参照には、添字として数式が使える という問題なのですが、下から2つの機能を除いたものは作ることができたのですが、 下の2つを追加するのにどこをいじればいいか全くわかりません。どなたかアドバイスお願いします。
768 名前:760 mailto:sage [03/07/11 02:17] 以下プログラムです lex %% "+" return(ADDOP); "-" return(SUBOP); "*" return(MULOP); "/" return(DVIOP); "(" return(LPAR); ")" return(RPAR); "=" return(ASSIGN); ";" return(SEMI); "{" return(LLPAR); "}" return(RRPAR); "<" return(LLLPAR); ">" return(RRRPAR); "<=" return(REB); ">=" return(LEB); "==" return(EQ); "!=" return(NEQ); "if" return(IF); "put" return(PUT); "get" return(GET); "else" return(ELSE); "while" return(WHILE); "'" return(AP); "," return(CM); [0-9]+ {sscanf(yytext,"%d",&yylval);return(NUMBER);} [a-z] {yylval=yytext[0]-97;return(ALPHABET);} [ \t\n]+ ; . {yylval=yytext[0];return(CHARACTER);} %%
769 名前:760 mailto:sage [03/07/11 02:24] yacc-1 program :var_lists{kansu("INT",0,0);} lists {table[0].q=hyo[number-1].add+hyo[number-1].size; kansu("HL",0,0);for(i=0;i<codenum;i++){printf("%s %d%d\n",table[i].op,table[i].p,table[i].q);}} ; var_lists :INT arrays SEMI |var_lists KONMA INT arrays SEMI ; arrays :var_decl{A=touroku(string);} |arrays KONMA var_decl{A=touroku(string);} ; var_decl:VARIABLE|VARIABLE KAKKO5 NUMBER KAKKO6; var1 :/*empty*/{hyo[A].size=1;} |KAKKO5 NUMBER KAKKO6{hyo[A].size=$2;} ; lists :lists list |list ; list :VARIABLE{kansu("LA",0,sansyo(string));} var2 ASSIGN expression SEMI{kansu("ST",0,0);} |KAKKO3 lists KAKKO4 |if_prefix list{table[$1].q=codenum;} |if_prefix list ELSE{$$=codenum;kansu("J",0,0); table[$1].q=codenum;} list{table[$4].q=codenum;} |WHILE{$$=codenum;} KAKKO1 condition KAKKO2{$$=codenum;kansu("FJ",0,0);} list{kansu("J",0,$2); table[$6].q=codenum;}
770 名前:760 mailto:sage [03/07/11 02:25] yacc-2 |GET KAKKO1 VARIABLE{kansu("LA",0,sansyo(string));} var2{kansu("RI",0,0);} KAKKO2 SEMI |SEMI ; if_prefix:IF KAKKO1 condition KAKKO2{$$=codenum;kansu("FJ",0,0);} condition:expression YORIDAI expression{kansu("GI",0,0);} |expression IJO expression{kansu("GE",0,0);} |expression MIMAN expression{kansu("LT",0,0);} |expression IKA expression{kansu("LE",0,0);} |expression ONAJI expression{kansu("EQ",0,0);} |expression TIGAU expression{kansu("NE",0,0);} ; put_list:put_list KONMA put_parm |put_parm ; put_parm:expression {kansu("WRI",0,0);kansu("WLN",0,0);} |CHARACTER{kansu("LC",0,$1);kansu("WRC",0,0);kansu("WLN",0,0);} ; expression:expression WA expression{kansu("AD",0,0);} |expression SA expression{kansu("SB",0,0);} |expression SEKI expression{kansu("ML",0,0);} |expression SYO expression{kansu("DV",0,0);} |SA expression %prec UMINUS{kansu("NEG",0,0);} |KAKKO1 expression KAKKO2{$$=$2;} |NUMBER{kansu("LC",0,$1);} |VARIABLE{kansu("LA",0,sansyo(string));} |VARIABLE{kansu("LA",0,sansyo(string));} KAKKO5 expression KAKKO6{kansu("LI",0,0);} ;
771 名前:760 mailto:sage [03/07/11 02:28] yacc-3 %% #include "lex.yy.c" struct{int address;char op[5];int p;int q;}table[100]; struct{char name[127];int soeji;int add;int size;}hyo[128]; int codenum=0; int A,i,j; void kansu(char x[], int y, int z){ strcpy(table[codenum].op,x); table[codenum].p=y; table[codenum].q=z; codenum++;} int number =0; touroku(char a[]){ int b; /*int c; int start_add=0;*/ for(b=0;b<number;b++){ if(strcmp(hyo[b].name,a)==0){ printf("error\n"); return(NULL);}} strcpy(hyo[number].name,a); hyo[number].soeji=number; hyo[number].add=hyo[number-1].add+hyo[number-1].size; return(number++);} sansyo(char d[]){ int e; for(e=0;e<number;e++){ if(strcmp(hyo[e].name,d)==0){ return(hyo[e].add);}} printf("no name\n"); return(NULL);}
772 名前:名無し mailto:sage [03/07/12 17:58] www.experimentalstuff.com/Technologies/JavaCC/index.html ここからJavaCCをDLしようとしても The page you are looking for, /data/javacc-3.0.zip isn't here. Sorry. ってでてDLできないんですが
773 名前:デフォルトの名無しさん mailto:sage [03/07/12 22:25] >>772 zipも、tar.gzも両方落とせるけど?
774 名前:名無し mailto:sage [03/07/13 00:23] >>773 クッキーONにしたらDLできました
775 名前:デフォルトの名無しさん [03/07/13 05:23] 自己記述可能なオブジェクト指向の言語処理系で予約語や特殊記号の数が最小のものってどっかに転がってませんかね
776 名前:_ mailto:sage [03/07/13 05:25] homepage.mac.com/hiroyuki44/
777 名前:デフォルトの名無しさん mailto:sage [03/07/13 12:51] >>775 scheme
778 名前:通りすがり mailto:sage [03/07/14 07:23] 因みに何で760はスルーなんですか?
779 名前:通りすがりっていうか mailto:sage [03/07/14 07:24] 多分760をここに誘導した奴なんだけどね。
780 名前:デフォルトの名無しさん mailto:sage [03/07/14 11:45] >>778 まずインデントをどうにかしてくれんと読む気にならん。 ぱっと見、文法をどうにかしろよって感じだが。
781 名前:山崎 渉 mailto:(^^) [03/07/15 09:51] __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
782 名前:デフォルトの名無しさん mailto:sage [03/07/17 13:25] >>767 アクションは後回しにして、まず文法だけ集中して考えてみたら。 ふつうはまず文法だけで書いて動かしてみて、正しくreductionが行なわれるかを確認 しますよね。 var_lists :INT arrays SEMI |var_lists KONMA INT arrays SEMI ; これだと int v, int x; なんていうのが通ってしまうけど… かなり混乱してます。もうちょっと整理しよう。
783 名前:760 mailto:sage [03/07/19 11:17] >>782 レスありがとうございます なんとか自分で解決できました
784 名前:デフォルトの名無しさん [03/07/19 11:51] 600番台は危険な香りがしたのであげ
785 名前:デフォルトの名無しさん [03/07/23 19:12] 初歩的な質問なんですけど字句解析の段階で 「どちらとも言えない」トークンが出てきた場合はどうすればいいのでしょうか? 例えば C の * は 1 * 2 のような乗算演算子なのか *ptr -= 4 のようなデリファレンス演算子なのか 単純に字句解析だけしていくとわからないのです。 いくつか考えたのですが。 1.構文解析や意味解析から字句解析を呼び出すようにして、それらの処理内容を字句解析に使用する 2.TOKEN_ASTERISK のように中途半端な状態にして構文解析の段階で適切な物にする 3.とりあえず OP_MULTIPLY みたいにどっちかにしておいて、後で不適切だった場合に OP_DEREFERENCE など適切な物に置き換える もしくは上記以外のもっと賢い方法があるのでしょうか? よろしくお願いします。
786 名前:デフォルトの名無しさん mailto:sage [03/07/23 20:24] >>785 1*2 の形の奴が単項演算子であるわけが無い。 *ptr の形の奴が2項演算子であるわけが無い。 よってどちらともいえないトークンではない
787 名前:デフォルトの名無しさん mailto:sage [03/07/23 20:39] >>786 例が良くないだけで、問題は依然として解決していないと思うが? MyClass::Member * a; C++のこれは宣言?それとも乗算? >>785 どれでもOK。標準はない。 俺だったら2を選ぶけど、それも参考程度にね。
788 名前:785 mailto:sage [03/07/23 22:40] >>786 & >>787 レスありがとうございます。 もしかして私の「字句解析」っていう言葉への認識って間違ってるのかなと思っちゃったのですが、 字句解析って「字面からわかる範囲で」文字列をトークンに切り出していく作業だと思っていたのですが 前後のトークンの状態などまで見るべきものなのでしょうか? つまり単項か2項かというのは前後のトークンがわからなければ決定できないと思うのですが そういう所まで見るのが普通なのでしょうか? (前のトークンはともかく、後のトークンまで判別に使うとするとかなり難しい事になりますよね) 一般論という感じでいいのですが、ご教授ください。 よろしくお願いします。
789 名前:デフォルトの名無しさん mailto:sage [03/07/23 22:55] >>788 > 字句解析って「字面からわかる範囲で」文字列をトークンに切り出していく作業だと思っていたのですが それであってる。 > 前後のトークンの状態などまで見るべきものなのでしょうか? そうする処理系もある。 ただそれは、純粋に字句解析だけでなく、一部構文解析も含んだ処理ということになる。 > つまり単項か2項かというのは前後のトークンがわからなければ決定できないと思うのですが > そういう所まで見るのが普通なのでしょうか? これも処理系によりけりで、>>785 のどれになるかはいろいろ。 字句解析と構文解析の境界は、厳密に分かれているとは限らない。 今みたいに曖昧な場合や、いっそ「字句+構文解析」をしてしまうこともある。 逆に、あらかじめ曖昧さが生じないように言語を設計する場合もある。 ・・・あんまり役に立ってないな、俺。 まぁ、生きた例を知りたいなら、解析器や言語処理系のソースを読むのが一番。
790 名前:785 mailto:sage [03/07/23 23:43] >>789 レスありがとうございます。 なるほど、厳密にパートを仕切る必要はないんですね。 >・・・あんまり役に立ってないな、俺。 そんな事ないです。日曜プログラムなので、周りに聞く人もいなくて 参考書籍とか雑誌とかもいくつか引っ張り出してきたりしてみたんですが、 疑問が出てきちゃったら正解かどうか確認する手段がないので、 こういう風に「それで間違いない」とか「それはこういう意味だよ」って答えてくれるだけで とても助かります。ありがとうございました。
791 名前:ろうひ男爵 mailto:sage [03/07/24 07:53] >>785 ラベルが AAA: の場合にも、字句解析で1文字先読みして":"まで確認するものが多いですしね。 じぶんも、2)の中途半端な物にしておきます。
792 名前:デフォルトの名無しさん mailto:sage [03/07/24 08:02] C++パーサーとかjavaパーサー用の .l .yファイルってどこかで公開されてませんか?
793 名前:デフォルトの名無しさん [03/07/24 15:44] >>785 C言語のパーサーの話なら、おたずねの * に関して字句解析が気にかける必要 はありません。それらの区別は構文解析の責任です。字句解析では'*' という トークンを返せばそれで良いのです。 では字句解析はつねに文脈を気にしないで良いのかというとそうでもありません。 たとえばC のtypedef名は TYPEDEF_NAME というトークンを返さないと正しく 構文解析ができませんので、字句解析はidentifierを見たときに記号表を見て、 それがtypedef名として登録されているかどうかを調べなくてはいけません。 typedef名であれば TYPEDEF_NAME を、そうでなければ IDENTIFIER を返す のです。 # 実はCの構文解析ではこの後さらに、TYPEDEF_NAMEを通常のidentifierとし # て解釈するという処理もしなければならないのですが、初心者が混乱すると # いけないのでこのへんでやめときます。
794 名前:デフォルトの名無しさん mailto:sage [03/07/25 02:53] なぜおまえらLISPを使わんのだ
795 名前:デフォルトの名無しさん mailto:sage [03/07/25 03:04] Lispを使うスレでないから
796 名前:デフォルトの名無しさん mailto:sage [03/07/25 06:35] Lispはクソだから
797 名前:デフォルトの名無しさん mailto:sage [03/07/25 13:57] 括弧悪いから。
798 名前:デフォルトの名無しさん mailto:sage [03/07/25 19:32] 括弧(・∀・)イイ!
799 名前:ろうひ男爵 mailto:sage [03/07/25 21:14] >>797 ワタラ。
800 名前:デフォルトの名無しさん mailto:sage [03/07/26 02:50] >>799 激しく同意
801 名前:デフォルトの名無しさん mailto:sage [03/07/26 18:27] おまえらLISPは柔軟だからコンパイラやアセンブラとかを LISP自身で書けるんだぞ。そもそも記号処理は得意分野だからな。 CやJavaで組むより簡単だろう。 実装側の言語に頼る量も最小で済むんだぞ。 なぜ使わんのだ。
802 名前:デフォルトの名無しさん mailto:sage [03/07/26 18:28] >>797 括弧悪い?アホか。 括弧の量なんて些細な事でしかない。
803 名前:デフォルトの名無しさん mailto:sage [03/07/27 08:34] >>802 通じて無いよこの人
804 名前:デフォルトの名無しさん mailto:sage [03/07/27 14:24] Lisp厨うぜぇ。 括弧読みにくいんだよ。 いつまでもマイナー言語でオナニーしてろよ、ボケ!
805 名前:デフォルトの名無しさん mailto:sage [03/07/27 15:47] Lisp厨以上に厨さを醸し出す>804 コイツ、ウザッ
806 名前:デフォルトの名無しさん mailto:sage [03/07/28 07:32] >>801 Lispじゃなくても、コンパイラやアセンブラはその言語自身でかけるが・・・
807 名前:デフォルトの名無しさん mailto:sage [03/07/28 07:32] ああ、すまん。より簡単だといいたいわけね。 本当にそうなの?
808 名前:デフォルトの名無しさん [03/07/28 09:27] 字句解析についての質問なんですが、 自前でトークンを切り出すコード (もし先頭がアルファベットならwhileで延々読み込みみたいな)の実行速度と lexで吐き出すコードの実行速度ではどちらが早いんでしょうか?
809 名前:デフォルトの名無しさん mailto:sage [03/07/28 13:51] 実装次第
810 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/07/28 14:50] >>808 オートマ車とマニュアル車とどっちが燃費いいかという命題に似ている。
811 名前:デフォルトの名無しさん mailto:sage [03/07/28 18:24] >>808 のような質問をする人間にはマトモな実装が出来るわけが無い、と仮定すると lex の吐き出すコードのがマシと思われ。
812 名前:デフォルトの名無しさん mailto:sage [03/07/28 18:51] >>811 の誤りは、自明なことをあらためて仮定したこと。
813 名前:名無し@沢村 [03/07/28 20:47] おまいらよ、コンパイラやスクリプトエンジンよりも、TVウェアをつくってみないか? pc2.2ch.net/test/read.cgi/tech/1059262203/l50
814 名前:808 [03/07/28 21:53] 実装次第ですが・・・ありがとうございました。 初めてlexのコード見たんですが 移植する時間も自信も・・・なので諦めました・・・ メモリも全然使えない環境ですし・・・
815 名前:デフォルトの名無しさん [03/07/29 19:20] >>814 綴りの認識程度ならlex(というかDFA)は大袈裟な気がする。 僕だったら、連続するアルファベットと数字を連結して単語にし、事前に作っ ておいたハッシュ表を索いておしまいにします。 ハッシュ表は、完全ハッシュ関数を作成するツール(GNU gperf)を使えば、 かなり小さくできるし。
816 名前:デフォルトの名無しさん mailto:sage [03/07/29 23:49] >>808 最初で、しかも簡単な物でしたら、手で作ってみるのもいいのではないでしょうか。 それからlexを覚えた方が理解が深まりますし。
817 名前:デフォルトの名無しさん mailto:sage [03/07/30 00:31] 手作りするより、早めにlexの使い方を覚えた方が 後々楽な気がするけど。 まあ、時間に余裕があるなら。
818 名前:デフォルトの名無しさん mailto:sage [03/07/30 12:19] 801 ではないが,Lisp の場合 字句解析 -> 不要 構文解析 -> すでに終わってる なので激しく楽なのは間違いない.本の章一つで Lisp のサブセットやそのコンパイラの作成法が載るくらい.
819 名前:デフォルトの名無しさん mailto:sage [03/07/30 23:08] LISP Scheme Pert8テンプレより Lisp 言語処理系: CAMPUS LIsP, Lemon version ttp://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml Cコードによるわずか1000行の実装 ちなみにLispのマクロは字句解析と構文解析の間に作用するので、 別の言語のインタプリタをLisp上に作ることができる。 Paul GrahamのOn Lispという本(Web公開中)ではCommon Lisp上の Prologインタプリタが解説されているし、 Richard Fateman教授のサイトには(おおっぴらには載せてないが) Common Lisp上のMathematicaサブセットのインタプリタのソースが置いてある。 いずれもマクロを活用している。 おまけ bison, flexマニュアル和訳 ftp://ftp.ascii.co.jp/pub/GNU/
820 名前:デフォルトの名無しさん mailto:sage [03/07/31 12:43] lisp厨は逝けよ。 lispのマクロで満足できるならこのスレには来るわけないんだからさ。
821 名前:デフォルトの名無しさん mailto:sage [03/07/31 18:04] >>820 このスレで無駄に時間浪費した挙句、互換性のクソもない コンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。
822 名前:デフォルトの名無しさん mailto:sage [03/07/31 19:01] >>821 スレの存在そのものに疑義があるんなら立ち入ってくるなっつの。
823 名前:デフォルトの名無しさん mailto:sage [03/08/01 02:36] >lispのマクロで満足できるならこのスレには来るわけないんだからさ。 lispのマクロを極めた人しかこんなことは言えないと思うのですが。
824 名前:デフォルトの名無しさん mailto:sage [03/08/01 03:05] >>823 馬鹿だろ? lispでマクロを極めようがどうしようが、んなことはフルスクラッチで スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。 プロトタイプだけ作って満足するならともかく。 こういう場を読めないLispスノッブが大杉。
825 名前:デフォルトの名無しさん mailto:sage [03/08/01 03:46] >>824 お前こそ馬鹿だろ? lispのマクロがプロトタイプだけしか作れなくて フルスクラッチの方がえらいみたいに考えてるところが。
826 名前:デフォルトの名無しさん mailto:sage [03/08/01 05:23] 824じゃないが >> フルスクラッチの方がえらいみたいに考えてるところが。 > スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。 Lispでどんあ言語でも作ることができる何て言ってるヤシは、 Lispしかやったこと無いヤシ。
827 名前:デフォルトの名無しさん mailto:sage [03/08/01 05:46] どんな言語でも大抵の言語は作れるよ
828 名前: mailto:sage [03/08/01 07:34] flexで最後にマッチした文字列が入るyytextには'\0'は付加されるの? guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html では付加されないから注意が必要と書いてるけど www.geocities.co.jp/SiliconValley-Oakland/3432/man/flex/flex-ja_4.html#SEC35 とかのサンプルみてるといきなりstrcpy(yylval.name,yytext)見たいな感じのコードがあるんだけど。 strcpyはソース側がNULL文字終端じゃないといけないよね。 それとも自分が何か勘違いしてるのかな?教えてください。
829 名前:デフォルトの名無しさん mailto:sage [03/08/01 11:39] >>827 そりゃアセンブラでも作ることはできるだろう。 ようはどれだけ簡単に作ることができるかだ
830 名前:デフォルトの名無しさん mailto:sage [03/08/01 12:21] >>828 というかこれにぶっ飛んだよ。 %union{ char name[128]; }
831 名前:デフォルトの名無しさん mailto:sage [03/08/01 13:29] >>826 Lispスノッブ大杉って,漏れには数人しか見えないが…. コンパイラやスクリプトエンジン書くのに言語やツールなんか関係ねーだろう. フルスクラッチがいいなら Lex も Yacc も使わずに全部手でかけばいいじゃん.
832 名前:デフォルトの名無しさん mailto:sage [03/08/01 14:00] 最近Schemeを勉強し始めたんだが、現時点での感想。 利点 - GCがあるので、メモリ管理が楽 - リストや木などを処理し易い - S式を入出力する手続きが用意されている 途中結果の出力や、個々の手続きの動作検証がし易い - シンボル シンボルを使うとシンボルテーブルを新たに作らなくてもよいかもしれない。 欠点 - lexやyaccのようなデファクトスタンダードなツールがない guile絡みでLanguage Implementation Toolなるものがあるらしいが、 どういう位置づけのものなのかは知らない。 - 動作が遅い ネイティブコードを吐くコンパイラもあり、速いらしい。 それでも、チューニングをし出すとCとかで組んだ方が速くなると思う。 - マクロ Schemeは処理系によってマクロの書き方が違う。 - 資料が少ない 検索しても見つかるのは、Schemeの処理系を作る話ばかり。 On Lispに載っていたPrologインタプリタは、Prologの機能を マクロとかを使って実現するという話ぽかった。 もしかしたら前の方の章にProlog→S式変換の話があったりするとか?
833 名前:832 mailto:sage [03/08/01 14:07] まだ、Schemeではプログラムをあまり書いていないので、 先入観も含んじゃっています。
834 名前:828 mailto:sage [03/08/01 14:14] >>830 すいません、まだ勉強始めたばっかりでなんでぶっ飛んだのかわかりません。 あとflexは自動的にヌル終端文字列にしてくれるんですか?
835 名前:デフォルトの名無しさん mailto:sage [03/08/01 14:21] >>821 > 互換性のクソもないコンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。 このスレで書いてはならない事を書いたね。
836 名前:デフォルトの名無しさん mailto:sage [03/08/01 18:47] ごめん
837 名前:デフォルトの名無しさん mailto:sage [03/08/01 18:55] >>836 素直だ。
838 名前:デフォルトの名無しさん mailto:sage [03/08/01 19:00] >>834 %unionってスタックの要素になるんだが、それを128byteとる豪儀(藁)さに。 終端はしないはず。
839 名前: mailto:sage [03/08/01 21:03] >>838 おお、どうもありがとう。
840 名前:デフォルトの名無しさん mailto:sage [03/08/01 21:31] すまん、されてるっぽいよ。
841 名前:デフォルトの名無しさん mailto:sage [03/08/01 23:52] >>832 なんで Lisp 厨を刺激しそうなことを書くかね・・・。 とりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン で読めるみたいだし。
842 名前:デフォルトの名無しさん mailto:sage [03/08/01 23:52] >>832 なんで Lisp 厨を刺激しそうなことを書くかね・・・。 とりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン で読めるみたいだし。
843 名前:841 mailto:sage [03/08/01 23:54] うげ、なぜか二重カキコに。吊ってきます。
844 名前:山崎 渉 mailto:(^^)sage [03/08/02 02:12] (^^)
845 名前:デフォルトの名無しさん [03/08/02 04:03] 逆アセンブラはスレ違いですか?
846 名前:デフォルトの名無しさん mailto:sage [03/08/07 22:30] 何でもいいからネタキボンヌ
847 名前:デフォルトの名無しさん mailto:sage [03/08/11 19:10] 七度文庫
848 名前:デフォルトの名無しさん [03/08/12 13:41] ゲームキャラのAIをスクリプトで書けるようにしようと思っています。 JavaScriptを使おうとおもうのですが、組み込んで使えるものなのでしょうか? VC6使っています。
849 名前:デフォルトの名無しさん mailto:sage [03/08/12 14:18] >>848 ちょっと探したら、こんなのみつけたけど。 MozillaのJavaScriptのページ jt.mozilla.gr.jp/js/
850 名前:デフォルトの名無しさん [03/08/12 17:20] 組み込み用途なら、JavaScriptとPerl、どっちがいいですか?
851 名前:デフォルトの名無しさん mailto:sage [03/08/12 20:28] どっちもデカ過ぎるような…。コンパクトな自作言語のがよくないか? まぁ、Python なんかは組み込まれてるの見かけるから漏れの感覚が古い のやもしれず。
852 名前:850 [03/08/12 20:42] Luaが小さくてよさげなのですが、明らかにJavaScriptやPerlと劣っている点はありますか? 小さいことは気にしないのですが、いざ使ってて大きな落とし穴に落ちたら人生いやけがさして多分漏れ自殺します。
853 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:05] が ・ ん ・ ば
854 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:53] LISPがいい
855 名前:デフォルトの名無しさん mailto:sage [03/08/13 04:00] >>852 Luaは最初から組み込むことを前提に考えて作ったっぽいからいいかも。 ただ小さい代わりに言語仕様もライブラリも他と比べて貧弱なので。
856 名前:850 [03/08/13 11:23] たしかに用意されているライブラリは少ない感じがします。 ただ、組み込み用途で使うのであれば、幾つかの型が扱えて ifやwhileなどの制御構文が使えればOKかなぁ。。。 スクリプト側ではフロー制御みたいなことしかやらず、どうせ アプリ側のAPI呼び出しに徹する形になるだろうから。
857 名前:デフォルトの名無しさん mailto:age [03/08/14 17:20] JavaCC使っている人いる? 久しぶりにJavaCCを使おうと思ったら、antからビルド出来なくなっていた。 もちろん、コマンドラインからはjavaccもjjtreeも普通に使えている。 COM.sun.labs.javacc.Mainという存在しないクラスを探すのが原因らしく、 そこを"org.javacc.parser.Mainに書き換えただけで動いた。 sfに移動してから結構経っているのに、誰も気付かなかったのかな。
858 名前:山崎 渉 mailto:(^^) [03/08/15 15:24] (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
859 名前:デフォルトの名無しさん [03/08/16 18:29] ほしゅっ
860 名前:デフォルトの名無しさん [03/08/19 21:52] >>764 最近アルバイト先で使ったLSI設計ツール、Tclが組み込まれていた。 もちろん商用アプリなんだけど、Tclって商用利用に使ってもいいんですね。 いや、単に不勉強で、ちまたのスクリプトの何が商用利用(商品に組み込んだ うえで販売)でき、何はだめなのか、よく知らなかったので、たまたまTclを 見つけて「へぇ、こういうふうに商品にもつかっているんだ」と、感心したという だけの話なんですが。
861 名前:デフォルトの名無しさん mailto:ege [03/08/19 23:46] おまえらの中で、boost::spiritを使ってる人いませんか? どんな感じのものなのですか?
862 名前:デフォルトの名無しさん mailto:sage [03/08/20 05:43] ガーベッジコレクションの話題はこのスレでいいのかな?
863 名前:デフォルトの名無しさん mailto:sage [03/08/20 06:19] ↑無関係ではないが、うーん、ちと違う気がするな。
864 名前:デフォルトの名無しさん mailto:sage [03/08/20 06:58] >>862 LISP Schemeスレなら受け入れてくれると思うよ。 自作派が多いから。
865 名前:デフォルトの名無しさん mailto:sage [03/08/21 13:44] >>861 下のサイト見るか、boost スレ行って訊けば? ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html