『コンパイラ・スクリプトエンジン』 相談室 2 at TECH
[2ch|▼Menu]
[前50を表示]
550:デフォルトの名無しさん
03/03/24 11:02
>>549
まあできんことは無いんだが・・・
たんに大変だなとか思ってね。

551:デフォルトの名無しさん
03/03/24 12:52
>>546
実行時にsyntax errorが出るくらいだから、それはないと思う。


552:デフォルトの名無しさん
03/03/24 12:57
>>551
たしか予約語を中間コードに置き換えるようなことはやってたと思うが。
でも構文チェックをしたり構文木を作ったりは当然しない。

553:デフォルトの名無しさん
03/03/24 16:41
>>551
N88しか知らないけど、runした瞬間に出るエラーもあるよ。
for〜nextの対応関係だったかなぁ。

554:デフォルトの名無しさん
03/03/26 22:14
その中間言語って、なにか規格みたいなものあるの?
それともデファクトスタンダードな仮想マシンがあるの???


555:デフォルトの名無しさん
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:デフォルトの名無しさん
03/03/27 11:42
>>556
「異常に的確なエラーメッセージ」の例を挙げないと、
答えづらいと思うよ。




559:デフォルトの名無しさん
03/03/27 20:00
>>556
異常に典型的なミスを犯しているだけでは?(w


560:デフォルトの名無しさん
03/03/28 17:07
VCのエラーメッセージって異常に意味不明なものが多いと思うがな。

561:デフォルトの名無しさん
03/03/29 01:13
「予期せぬ EOF が検出されました」
のどこが的確なメッセージなのかと、小一時間t(ry

562:デフォルトの名無しさん
03/03/29 16:28
やはり、>>559だろう


563:デフォルトの名無しさん
03/03/29 18:30
>>556
>つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な

具体的にどの辺が的確なエラーメッセージだと思ったのか、書け。


564:デフォルトの名無しさん
03/03/29 19:04
>>559-563
煽りは死滅スレでやれや


565:563
03/03/29 19:24
>>564
煽りに見えてのはお前だけだと思われ。
もし>>556=>>564だとしたら被害妄想だよ。
死滅スレ居座りすぎて病気になったか(w
説明不足を解消せよってだけ。

566:デフォルトの名無しさん
03/03/29 19:27
>>565
>>558がもう指摘してるじゃん。

567:563
03/03/29 19:45
>>566
んなことわかってるよ。
これじゃ話が進まないから催促してるの。

568:デフォルトの名無しさん
03/03/29 21:15
563 は "(w" とかつけている段階で論外。
毎日見ていない人もいるだろう、そのうち書かれた時に理由を考えればいい。
ただ煽るだけで意味のないことするな。

569:デフォルトの名無しさん
03/03/29 21:49
結局556がアホなだけだな。

570:デフォルトの名無しさん
03/03/30 20:24
インタプリタの中間コードは8ビットが普通ですか?
いきなり32ビットとはしてるものはありますか?


571:デフォルトの名無しさん
03/03/30 20:35
>>570
Java。全て4バイトがベース。

572:デフォルトの名無しさん
03/03/30 20:52
皆さんのお力でぜひぬるぽをageて下ちい。
  ∧_∧
 ( ´∀`)< ぬるぽ

ぬるぽ 投票ヨロシク
URLリンク(pumpkinnet.to)


573:デフォルトの名無しさん
03/03/30 21:50
Javaは8bitじゃないのか?

574:デフォルトの名無しさん
03/03/31 00:29
そういえば、java関係の本はそれこそ腐るほど(?)あるが、
バイトコードとか仮想マシンの説明をしてるものってある?


575:デフォルトの名無しさん
03/03/31 00:49
>>574
オライリがバーチャルマシン仕様の解説本出してるよ。

576:デフォルトの名無しさん
03/03/31 00:50
>>574
本屋で立ち呼んだ記憶があるからあるんじゃない?

577:デフォルトの名無しさん
03/03/31 02:52
ソースコード読めばいんじゃないの?
そこまでやるのはちょっと、、、という
のなら、そもそもVMの勉強なんてしなくても
いいんじゃないの?

578:デフォルトの名無しさん
03/03/31 03:31
Structured Computer Organization by Andrew S. Tanenbaum
URLリンク(www.amazon.com)

にちょっとだけ説明があります。
オペコードが1バイトで全体としては1〜3バイトのがほとんどだそうです。

URLリンク(java.sun.com)
のどこかに説明あるかと思いましたが、発見できませんでした。
見落としあるかもしれません。

あとamazon.comをjava virtual machineで検索すると7冊ほどひっかかりますね。
URLリンク(www.amazon.com)


579:デフォルトの名無しさん
03/03/31 04:36
WSHとかってプログラム上から使ってその結果を受け取ることは出来ないのでしょうか?
MSDNを見ますと「IActiveScript」と言うのが在るのですが,
いまいちサンプルが乏しくて困っています.

580:デフォルトの名無しさん
03/03/31 04:43
一通りの使い方ならRuby256本の邪道編に書いてあった気がするが。
スレ違いじゃないか?

581:579
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:デフォルトの名無しさん
03/03/31 20:19
良い子は検索したり、過去ログ読んだりします。

584:デフォルトの名無しさん
03/04/01 01:40
<死ね>
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

VMはオープンソースのプロジェクトがいくつかあったはず。
GNUにもあった気がする。
俺が知ってるのはOSがマイナーなんで言ってもしょうがない。
</死ね>

585:デフォルトの名無しさん
03/04/01 01:43
<死ね target=">>582">
URLリンク(www.amazon.com)
全部読んだわけではないが書き方が変わってるんでVMの勉強としては素直に薦められない。

URLリンク(www.amazon.com)
は上にあげたとおり邦訳が出てるんでそっちを読め。訳に問題はない。

あとの洋書は大体到着待ち。
</死ね>


586:デフォルトの名無しさん
03/04/01 02:32
>>582
www.kaffe.org
とか…

587:デフォルトの名無しさん
03/04/05 17:27
いろいろと参考になりますね、この擦れ。
ところで、JAVAのVMがやはり事実上のスタンダードになりつつあるのでしょうかね?


588:デフォルトの名無しさん
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:デフォルトの名無しさん
03/04/06 02:48
>>587
スタンダードというか、参照・参考にするのに比較的お手軽なのは確か。

592:デフォルトの名無しさん
03/04/08 21:55
VMってJAVAスクリプト自体は解釈できんのね?


593:デフォルトの名無しさん
03/04/08 22:17
JavaとJavaScriptは何の関係も無い(たしか)

594:名無し
03/04/09 01:24
VMが理解できるのはバイトコードだけかと

595:デフォルトの名無しさん
03/04/09 11:34
はぁ?

596:デフォルトの名無しさん
03/04/09 13:44
>>593
そだね最初はNetscape社のLiveScript。でJavaが現れて
なんとなく名前をJavaScriptに変更。

URLリンク(www.howtocreate.co.uk)

つうかこれくらいはgoogleですぐ見つかるんだが…

597:デフォルトの名無しさん
03/04/10 11:47
Javaを意識してみたという点では、まったく無関係でもない。

598:デフォルトの名無しさん
03/04/10 12:40
>>597
ばーか

599:コンパイラを勉強するには?
03/04/10 15:41
今まで、業務でJavaを1年半使った以外、プログラム経験はありません。そのJavaもWeb系が主です。

こんな僕でも、コンパイラの事を理解する事ができるでしょうか?JavaCCと言うのをやろうとしているのですが、
これをやるには、Java以外の知識よりもプログラム全般に詳しくないとできないですよね?

『おまえには、まだ無理だ。そんなんじゃJavaCCなんて理解できるはずはない。』なんてことは、皆さん思いませんか?
それとも、私ほどの経験でもJavaCCを理解する事は可能なんでしょうか?

何年かかっても良いので、最良の道を行きたいと思っています。
それには、やはりC言語などからプログラムというものを理解し、一般のコンパイラ事情を知ってから、JavaCCに行った方が良いのでしょうか?

よろしくお願いします。

600:デフォルトの名無しさん
03/04/10 15:50
愛さえあればできるよ。

601:デフォルトの名無しさん
03/04/10 15:52
できちゃった♥

602:デフォルトの名無しさん
03/04/10 16:15
>>599
個人的にゃJavaって泥臭いとこを隠してるから一回Cでそういう所を
見た方がいい気がする。

UNIX使えるならシェル書いてみるのはどうよ。

603:デフォルトの名無しさん
03/04/10 16:17
Java慣れてるならJavaでいいじゃん。
なんで遠回りすんの?>602

604:デフォルトの名無しさん
03/04/10 16:28
んー?別にCで全部やれっちゅうワケじゃないのよ。
ただ、作ろうとしてるモンはJavaでもCでもない「別の言語」
だから他の言語との違いを知っとった方がいいかと思う。

605:デフォルトの名無しさん
03/04/10 16:34
あ、でもJavaってアプリ自身がJavaで書かれたコードを実行する機能を
持たれられた気がするな…

マクロとかだとそっちの方が早いか?

606:デフォルトの名無しさん
03/04/10 17:50
>>599
C yacc lex は書籍が多いから、それがいいかもね。
とりあえず C をマスターしておいて、整数だけbasicからjavaへのトランスレータとか作ってみたらどう?
でき上がったものは無意味だけど、やり方は理解できると思うよ。

607:デフォルトの名無しさん
03/04/10 18:05
(´-`).。oO(>602 コンパイラ作るのになんでシェルが関係あるんだろう?)

最終的に機械語やバイトコードに落とす必要は必ずしもないのだし、
そこまでいくには道のりは遠いので、まずは構文解析できるように
なればいいのでは。
ただ、言語を作るのはただツールをいじっていればなんとかなるものでもない。
きちんとしたものを作れるようになるには知識が必要なので、しっかりした
解説を読むべし。
Java + JavaCC で書いてあるwebなり本なりが見つかればそれでもいいし、
見つからなければCを覚えて本を読む方がいい。理論がわかればツールを使うの
はJavaCCだろうがyaccだろうがたいしてかわらない。

過去ログを見ればweb上の講義ノートもあったと思う。(前スレだったかも)


608:デフォルトの名無しさん
03/04/10 18:24
シェルスクリプトあたりからってことじゃないの

609:デフォルトの名無しさん
03/04/10 18:40
だとしてもなんでshなんだよ。
まだLISPでもやってた方がいいぞ。

610:コンパイラを勉強するには?
03/04/10 19:55
どうも、皆さん幅広いご意見ありがとうございます。
大変参考になったのですが、やはり難しそうですね。しかし、生まれつき、計算とかが
好きなものですから、話しを見ているだけで、とてもわくわくしてきます。

やはり、いきなり、JavaCCに入るのではなく、他の方から入っていく事にします。

もっといろいろ読みたいので、良ければみなさん、またいろいろ書いておいてください。

よろしくお願いします。

611:デフォルトの名無しさん
03/04/10 20:36
>>610
yacc lex なら、そんな難しいものじゃないから、習うより馴れろでガンガンいけばいいよ。
ただCは押さえて置かないと進むものも進まないから、Cはがんばってね。
多分なじみの薄い物で参考資料も少なく、yacc を使うにあたって必要不可欠なCの概念は union だと思います。
そこは気合で行ってくれ。

612:コンパイラを勉強するには?
03/04/10 21:32
気合で行くわ。

613:デフォルトの名無しさん
03/04/10 21:38
どうも、仕事で簡易スクリプトを作ることになりそう。
基本的には、引数付の関数呼び出しと変数への値代入程度
で済ませたいけど、制御構造も作らざるを得ないかも・・・。

まあ、ちょうどよい勉強と思ってやってみるつもりです。


614:デフォルトの名無しさん
03/04/10 23:03
仕事なら既存のやつ使った方がいいんじゃねーの?

615:デフォルトの名無しさん
03/04/11 00:59
この時期だし研修用でそ

616:デフォルトの名無しさん
03/04/11 09:34
>>614
アプリケーション組み込み物のスクリプトだと既存という訳にはいかんよ、作るしかないです。
仮にソースが取得できたとしても、殆どがGPLに侵されたコードで再利用は不可能だからね。

617:デフォルトの名無しさん
03/04/11 12:46
>>616
perlもpythonもrubyもtclもGPL以外での利用を認めてるが。

618:デフォルトの名無しさん
03/04/11 13:17
>>617
たとえば
URLリンク(www.ruby-lang.org)
とかは?
近は過激な運動家がいたりして危ないから、そういう報流すのは良くないよ〜

619:デフォルトの名無しさん
03/04/11 13:18
近→最近

620:デフォルトの名無しさん
03/04/11 13:37
つーかGNU謹製のguileですら非GPLソフトへの組み込みを認めていたりするのだが。

621:デフォルトの名無しさん
03/04/11 13:45
>>620
お仕事用というのだから、組み込みよりもソースの公開が問題なんじゃないの?

622:デフォルトの名無しさん
03/04/11 14:16
>>621
GPLと互換性のないライセンスのソフトに組み込める==ソース公開の義務がない(スクリプトエンジン以外は)

623:デフォルトの名無しさん
03/04/11 14:25
>>622
その解釈は結構きわどいと思うな・・・

624:デフォルトの名無しさん
03/04/11 14:46
スクリプトエンジンに手を加えずに使うんだったらいいんじゃない?
手を加えたくなってもフィルタで済ます。

625:デフォルトの名無しさん
03/04/11 19:46
>>618
> URLリンク(www.ruby-lang.org)
「または以下に示す条件で」って書いてあるじゃん。
rubyに関しては何度かMLでもそういう話があるが、結論としては
「迷惑をかけないでくれ」だけのはず。

ところで過激な運動家って何だ?


626:デフォルトの名無しさん
03/04/11 21:34
Qちゃん

627:デフォルトの名無しさん
03/04/12 00:43
>>626
過激だったのか。中の人も(ry

628:デフォルトの名無しさん
03/04/12 06:46
そろそろスレ違い気味なのでGPLスレでも建てて議論してくだちゃい

629:デフォルトの名無しさん
03/04/12 12:46
ここだな?
【殺しの】ライセンス【道で拾った】
スレリンク(tech板)


630:デフォルトの名無しさん
03/04/12 17:19
>>599
JavaCC使うなら、LL解析法だからLALR解析法を使うyaccは勉強しなくていいよ。
ちょっとした簡単な言語のインタプリタを作ったことがかなり前にあるんだけど、
簡単なインタプリタならそんなに難しくないはず。
LL文法とBNFがわかれば、JavaCCは使えるようになると思う。
言語処理系の本を1冊借りてきて、Let's Try!

631:デフォルトの名無しさん
03/04/12 17:23
追加。
ドキュメントが英語で分かりにくいから、
URLリンク(village.infoweb.ne.jp)
URLリンク(www.asahi-net.or.jp)
この辺を参考に。
大量にサンプルがついてるから、それを参考にして作るといいかも。

632:デフォルトの名無しさん
03/04/14 21:08
LL(k)らしいんだけど誰か使てる?
URLリンク(spirit.sourceforge.net)



633:デフォルトの名無しさん
03/04/16 23:30
func();
という長い関数があったとして、これを
func1();
func2();
func3();
と分割するようなプログラムを作ってみたいと思ってます。

なにか参考になる情報、またはすでにそういうものがあったら教えてください。
それでは宜しくお願いします。


634:デフォルトの名無しさん
03/04/16 23:41
>>633
リファクタリングで検索

635:デフォルトの名無しさん
03/04/16 23:43
>>634
それは手作業でやるのでは?

636:デフォルトの名無しさん
03/04/16 23:49
>>635
おまえは一体どう分割したいのかと(ry
まさか単純にぶった切るつもりか?


637:デフォルトの名無しさん
03/04/16 23:52
単純にぶったぎりますが、ちゃんと途中経過を保存・復元する部分を付け加えたいです。


638:デフォルトの名無しさん
03/04/17 00:11
>>633の説明だけで何を判れと言うのか。

639:デフォルトの名無しさん
03/04/17 00:20
>>637
ローカル変数を全部構造体に入れてfunc()で確保、
func1(),func2(),func3()にそいつのポインタを渡してアクセス。

真面目にやるならフロー解析が必要。

640:山崎渉
03/04/17 15:16
(^^)

641:デフォルトの名無しさん
03/04/19 08:22
荒したい策の保守あげ

642:デフォルトの名無しさん
03/04/19 15:36
荒らしたい 策

643:山崎渉
03/04/20 03:02
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

644:山崎渉
03/04/20 03:41
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

645:デフォルトの名無しさん
03/04/23 03:52


646:棄教者 ◆egKIKYO7cg
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:デフォルトの名無しさん
03/05/23 18:31
大したこと書いてないので、斜め読みで十分。
とにかく、実際に作ってみるのが○

653:652
03/05/23 18:34
中田育男の「コンパイラ」本のことね。

654:649
03/05/23 18:48
>>652-653
レスありがとうございます。
私は情報工学は素人なので、斜め読みするほどの能力はありませんが、
理論から導き出される結論自体はそれほど難しいとは思っていないので
なんとか最後まで読んで見ます。

655:逆コンパイラ
03/05/23 20:16
EXEファイルをC言語に戻す逆コンパイラソフトを教えてもらえませんか。

656:デフォルトの名無しさん
03/05/23 20:22
戻す?

657:デフォルトの名無しさん
03/05/23 20:38
>>655
URLリンク(www.itee.uq.edu.au)
URLリンク(www.backerstreet.com)

658:逆コンパイラ
03/05/23 20:47
>>657
上の一番のHPのdcc Decompiler はどこからダウンロードしますか

659:デフォルトの名無しさん
03/05/23 22:32
>>658
Table of Contentsの中に思いっきり「配布」という単語があるわけだが。
辞書とか翻訳サイトつかってでもContentsの一覧ぐらいは一通り嫁。

660:デフォルトの名無しさん
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
03/05/27 15:51
>>661
そりゃ天下のGCCだって構文解析器はBisonを使って書かれているからね。


663:デフォルトの名無しさん
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:デフォルトの名無しさん
03/05/27 16:46
どうも。やってみます。ただ、23歳はもう若者じゃなかったかもしれません。

667:デフォルトの名無しさん
03/05/27 17:52
あっというまに

668:649
03/05/27 17:53
>>665
手書きの経験が必要でつか?
漏れは若者じゃないからいいや・・・

669:デフォルトの名無しさん
03/05/27 17:56
手書きの方が速い

670:デフォルトの名無しさん
03/05/27 18:05
昔、手書きでCコンパイラを作るとかぶちあげて、全く後が続かず、
入院したことにして結局うやむやにした香具師がいたな。


671:デフォルトの名無しさん
03/05/27 18:10
ただのツール使いはヘタレ。

672:名無し@沢村
03/05/27 20:29
おまいらよ、コンパイラは字句解析と構文解析だけではないぞ。
いいか、コンパイラはな、字句解析、構文解析、意味解析、最適化、リンカ、ローダとどれが欠けてもダメよ。わかるか?
おまいらに、コンパイラをつくる能力があるか?

673:デフォルトの名無しさん
03/05/27 20:53
アセンブラなら作ったことあるぞ。
コンパイラからアセンブリコード吐かせればOKだな。

674:デフォルトの名無しさん
03/05/27 20:59
最適化はあくまでオブションだし、ローダはOSの仕事だがなw

675:デフォルトの名無しさん
03/05/27 21:14
>>672
大半の人が作りたいのはスクリプトのコンパイラでないの?
それなら、字句解析、構文解析、意味解析だけで何とかなるのでは。

676:デフォルトの名無しさん
03/05/27 21:30
>スクリプトのコンパイラ
バイトコードコンパイルという意味だよね?


677:デフォルトの名無しさん
03/05/27 22:40
>>676
そうっす

678:デフォルトの名無しさん
03/05/27 22:50
リンカはリンカだろ・・

679:デフォルトの名無しさん
03/05/27 23:07
>>678
Delphiのよーに、コンパイラがリンクまでやってくれると便利なときがあるよ。
同じシンボルがエクスポートされた.objも、別々のユニットから{$L}で取り込めば呼び分けられるし、
リンクエラーとか名前の衝突とかも、リンカじゃなくてコンパイラのエラーになるので
原因となるソースコード上での位置がわかるし。

680:デフォルトの名無しさん
03/05/28 05:29
>>674
正直、最近のマシンは最適化してやらないと実力が出ないから
コンパイラ/インタプリタでの最適化は重要だし、
処理系のコード的にも非常に大きな部分を占めてるんだが。

681:デフォルトの名無しさん
03/05/28 05:36
>>680
追伸:
オプションなのは最適化なんてしなくていいってコトじゃなくて
様々な最適化技法がプログラムの性質によってそれぞれ有効度があり、
あまり効かなかったり却って遅くなるような場合に外したりパラメータを調節するのが目的。
(昔はデバッグを簡単にする目的もあったけど最近のデバッガは優秀だから
最適化されていてもデバッグできたりするらしいね。)

682:デフォルトの名無しさん
03/05/28 06:00
ほう。最近のデバッガは、最適化で消えた変数も追いかけられるようになったりするの?

683:デフォルトの名無しさん
03/05/28 07:37
消えたといっても、スタックローカルからレジスタに移っただけだろ? だからレジスタにある間は追いかけられる。

684:デフォルトの名無しさん
03/05/28 10:30
最適化について知らないなら、まず調べてから書いてください。

685:デフォルトの名無しさん
03/05/28 11:32
681が言ってるのはインライン展開とか実行順変更程度なら大丈夫という話
682が言ってるのは完全に消えた変数の話
683が言ってるのはレジスタ最適化の話
684が言ってるのは・・・・?

686:山崎渉
03/05/28 12:35
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

687:デフォルトの名無しさん
03/05/28 15:24
Compiler Design in C
URLリンク(www.amazon.com)
URLリンク(www.holub.com)

て読破したかたいらっしゃいますか?
古すぎますかね。

688:名無し@沢村
03/05/28 16:00
おまいら、『コンパイラ・スクリプトエンジン』について相談してみろ?

689:674
03/05/28 17:41
>>680
672があまりにいいかげんなこと言っていることを踏まえての内容です。
実用性から言えば、680,681に書かれたことは誰でも認める常識かと。

690:デフォルトの名無しさん
03/05/28 17:44
だから沢村に関わるなとあれ程言ったのに

691:デフォルトの名無しさん
03/05/29 00:33
ここには↓を解説できる者はおらんのか?
memory to memory
SICD machine
chemical abstract machine
categorical abstract machine
while-if machine

692:デフォルトの名無しさん
03/05/29 00:49
>>691
つーかどっから拾ってきたの?論文読めよ。
名前間違ってるのもあるし。

693:名無し@沢村
03/05/29 05:08
おまいらよ、ここで『コンパイラ・スクリプトエンジン』について知ったかで語ってるやつは多いが、
その割りには世に『コンパイラ・スクリプトエンジン』はそれほど多く出てないが…?
みんな自分だけで使ってんの?
それとも起動したと同時に終了してしまうコンソールアプリケーション?

694:デフォルトの名無しさん
03/05/29 05:18
自分のアプリケーション用だろ。
はじめから世に出すつもりで作っていない。

695:デフォルトの名無しさん
03/05/29 07:34
世に出してほすぃ
設計から実装まですべてさらけだしてほすぃ

696:デフォルトの名無しさん
03/05/29 07:42
さらけ出てるじゃない >>241 >>487


697:デフォルトの名無しさん
03/05/29 08:49
自分のプログラムにちょっとしたマクロを実装できたらいいなあ〜
って類がこのスレの対象だろ。

698:デフォルトの名無しさん
03/05/29 09:53
>>693
> それとも起動したと同時に終了してしまうコンソールアプリケーション?
こんなやつかW?

int main() {return 0;}

699:デフォルトの名無しさん
03/05/29 14:28
>>697
最適化に拘らないならXMLとXMLパーサーを使ってみるという選択は?
(APIはSAXでもDOMでもお好みで。)
文法の自由度は減るけど
ちょっとしたものなら自分でパーサー書くより楽だよ。

例えばmakeと同じような仕事をするANT(だったっけ?)の
プロジェクトファイル(だったっけ?)はXMLらしいぞー(じゃー、ゴボゴボゴボ)。

700:デフォルトの名無しさん
03/05/29 14:42
>>699続き
入力にフォーム、出力はスタイルファイル(CSSでもXSLでも)とでもすれば偽IDE環境も簡単w。

またあるいは、かつてWEB(だっけ?今文献は引越しダンボールの中なんで)という
TeX+Pascalの文芸的プログラミングに憧れた人にもXMLマークアップでプログラミング言語というのは
それなりに面白い選択かと。

701:デフォルトの名無しさん
03/05/29 17:52
>>699
XMLなんてクソ

702:名無し@沢村
03/05/29 18:53
>>698
コンソールアプリケーションって、たいがい起動したと同時に終了するだろ?

703:名無し@沢村
03/05/29 18:56
>>698
てか、コンソールアプリケーションって、一応処理はするんだが、起動して処理をして終了までが、あっという間だから、起動したと同時に終了するように見えるんだな。

704:デフォルトの名無しさん
03/05/29 19:25
名無し@沢村はどんな『コンパイラ・スクリプトエンジン』を作っているのかな?

705:デフォルトの名無しさん
03/05/29 19:43
>>701
何故ぇ?w

706:デフォルトの名無しさん
03/05/29 19:47
>>702-703
( ´_ゝ`)


707:デフォルトの名無しさん
03/05/29 20:58
>>699
素から書いたら面倒だけどyacc/lexとかツール使うと工数はxmlと殆ど変わらないと思うけど。
むしろ切り出した後のエラーチェックとか加工とかがxmlだと面倒だなぁとか感じたりするんですけど。


708:名無し@沢村
03/05/29 21:01
>>704
おれは、起動、コンパイル、実行、終了までが一瞬のうちに終わるスクリプト言語をつくったよ。
コンソールアプリケーションでね。

709:デフォルトの名無しさん
03/05/29 21:03
>>708
int main() {return 0;}
が実行できるスクリプトか?
すばらしい(藁)

710:デフォルトの名無しさん
03/05/29 21:18
Parrotでいいじゃんよ

711:デフォルトの名無しさん
03/05/29 21:59
>>707
エラーチェックはXML Schema + 検証機能つきパーサで。
切り出し&加工はDOMでやれば楽かも。

書ける言語がXML整形式の範囲に縛られるわけだから
なにがなんでもXMLとは思わないけど、文書としても利用されるような
宣言的なスクリプト(例えばモジュールの依存関係を記述するメイク・ファイルや
プロジェクトファイルみたいなのとか、環境設定とか、各種ポリシーの記述とか、
各種シーンの記述とか…。)にはいいかなと。

私自身はとあるTRPGのシナリオを記述する言語につかえる
語彙(XML世界におけるマークアップ文法のライブラリ)を
趣味で書いてみているところ。実行系はたぶんJavaで書くと思うけど。

712:デフォルトの名無しさん
03/05/30 07:31
行単位、スペース区切りでいいじゃん。


713:デフォルトの名無しさん
03/05/30 10:57
>>712
確かにそれが一番便利w
設定ファイルの読み込みや簡単なスクリプトでバッチ処理するときは最強。
しかし、より高機能なものを求めてコンパイラが欲しいのだから
そのような提案は無意味

714:フォールトの名無しさん
03/05/30 11:33
オブジェクト指向言語を作ってみたいのですが、良い教科書など
無いでしょうか?

一応、ドシロウトではなくて、括弧の使える四則演算電卓を作った
実績があります(C言語を用いて3ヶ月ほどで開発しました)。

その辺を踏まえて、オブジェクト指向言語の実装に関する、標準的
な書籍なりペーパーなりを紹介していただけないでしょうか?

また、このような自作言語に継続的な利用者が現れることを期待
するのですが、どのような場で、どの程度の進捗状況で発表すれ
ば良いのか見当がつきません。

成功した開発プロジェクトの実施スキームについて紹介していた
だけないでしょうか?

せっかく開発する予定の言語なので、できれば世界中の開発者に
使ってもらいたい、プログラミングの概念を根底から覆す提案を
したい、と言うのが私の願いです。


715:デフォルトの名無しさん
03/05/30 12:06
夢が大きくていいけどさ、まずは凝った作りじゃなくて、
もっと単純なコンパイラを練習として作ってみたら?
それならこのスレに情報もたくさんあるし。

716:デフォルトの名無しさん
03/05/30 12:09
>>714
がんがれ!!

717:デフォルトの名無しさん
03/05/30 12:39
>>714
Tiger本じゃだめ?

718:フォールトの名無しさん
03/05/30 13:05
>>717
>Tiger本じゃだめ?
ISBNコードわかります?


719:デフォルトの名無しさん
03/05/30 13:13
>>714
URLリンク(www.ruby-lang.org)
ソース嫁

720:フォールトの名無しさん
03/05/30 13:25
>>717
Webで検索したらそれらしい本「ISBN 0-521-58388-8」
が見つかりましたが、洋書のため書店での入手が難しく、
あきらめざる得ません(トイレで読むのに丁度よさそうな
レベルの本なのに残念です)。

日本で入手容易な、翻訳本など無いでしょうか?

>>719
このプロジェクトが終了してからじっくり読んでみたいと
思います。


721:デフォルトの名無しさん
03/05/30 13:35
>プログラミングの概念を根底から覆す提案
って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。

722:デフォルトの名無しさん
03/05/30 14:50
>>718
著者のページ:
URLリンク(www.cs.princeton.edu)

723:デフォルトの名無しさん
03/05/30 14:52
>>721
ま、そりゃそうだが、コードで語るってのもカコイイ


・・・かも知れないw。

724:フォールトの名無しさん
03/05/30 16:32
>>721

>>プログラミングの概念を根底から覆す提案
>って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。

まるで、具体的な計画を持たない香具師のように聞こえてしまう
じゃないか(はぁ)。。。この場で核心となるアイディアや
技術を披露するのは、未だ一寸早いと思う。私の考えに基づいた
言語仕様や実装方法が世間に受け入れられるためには、この
パラダイムギャップを埋めるための下地が不充分です。


725:_
03/05/30 16:33
URLリンク(homepage.mac.com)

726:デフォルトの名無しさん
03/05/30 16:40
>>724
と思うなら、まずプロトタイプでも作ってみるしかないんじゃないか。

727:デフォルトの名無しさん
03/05/30 20:28
>>724
どうせ、他に誰か1000人くらいは考えたことがある案だから気にするな。

728:デフォルトの名無しさん
03/05/31 01:55
FPGAの発想を応用して、VMを高速化

729:デフォルトの名無しさん
03/05/31 18:20
『システムソフトウェアプログラミング ― コンパイラの設計法と並行処理の基礎』
                         デイビッド クラーク (著)
ってのもあるぞ。個人的にはお世話になりました。

730:デフォルトの名無しさん
03/05/31 18:24
>>728
PS3

731:ろうひ男爵
03/06/05 02:06
>>721
自分的には、
今後はHTのおかげで、ディスクトップレベルででも
16CPU(物理的ではなくね)とか実装される

その後、256CPUとか実装されて、
ソフトウェアによって4CPUとか使われるようになる。

オブジェクト指向でつくられたプログラムで、
オブジェクト単位でCPUが割り振られるとか。
(すでにやってそうですね)

732:デフォルトの名無しさん
03/06/05 10:05
>>731
> オブジェクト指向でつくられたプログラムで、
> オブジェクト単位でCPUが割り振られるとか。
CPU間のスイッチが多すぎて激しく遅くなりそうな。

733:ろうひ男爵
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
URLリンク(homepage.mac.com)

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なんか近いかも?
URLリンク(www.nk.rim.or.jp)

739:デフォルトの名無しさん
03/06/11 18:33
yaccを使おうとしたら、liby.aがないことに気がつく。
どうしてyaccが入っているのにliby.aがないのかと小一時間・・・
findしてもどこにもないし・・・馬犬 目 ぽ..._〆(゚▽゚*)

740:739
03/06/11 19:01
URLリンク(www.yuge.ac.jp)

> Linuxでは liby.a(Yacc用のダミーの yyerror,main)が提供されていません。
> そのため、自分で書く必要があります。

最初からないのね・・・

741:100人に1人
03/06/11 19:16
◎人の嫌がることをズケッと言うのはこんな奴!
<アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)>
●変化を嫌う
URLリンク(web.kyoto-inet.or.jp)

●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうことがある。人を傷つけるということには鈍感(相手の立場に立って考えられない)。
●パターン的行動、生真面目すぎて融通が利かない
 毎朝の通学電車では同じホームの同じ場所から、同じ時間の同じ号車に乗ることに決めていたりする。パターンを好むということは反復を厭わないことでもある。
●アスペルガー症候群の子どもは(大人も)感覚刺激に対して敏感。敏感さは聴覚、視覚、味覚、嗅覚、温痛覚などのいずれの感覚の敏感さもありえる(特に視覚が敏感)。
●アスペルガー症候群の子ども(大人も)は予測できないことや変化に対して苦痛を感じることが多い。
URLリンク(www.autism.jp)

●独り言を言うことが多い(考えていることを口に出す)
●物事をいつまでも同じにしておこうとする欲求が強く、そうでないと非常に不安。いわゆる「こだわり」。
●自発的に行動することが少なく、興味の幅が狭い
●物まねをしているような不自然な言語表現
●自閉症スペクトラム全体としては一万人に91人(およそ100人に1人)。
URLリンク(www.ypdc.net)

★自閉症スペクトラムの考え方(アスペルガーに至らない気質の偏りもある(遺伝性))
URLリンク(www.imaizumi-web.com)  
   
★アスペルガー症候群(自閉症スペクトラム)かどうかのテスト
URLリンク(twitwi.s10.xrea.com) 
URLリンク(www.geocities.co.jp)




742:デフォルトの名無しさん
03/06/11 19:46
>>740
liby.aは、あっても中身は無いも同然ですしね、昔は色々入っていたんでしょうか?
古いyaccを知っている人とかいるかな?

743:名無し@沢村
03/06/11 20:04
コンパイラやスクリプトエンジンをつくろうとしているおまいらよ、夢を見るのはいいことだぞ!!
おまいらよ、いろいろコンパイラやスクリプトエンジンの構想を練ってみろ?
多いに夢を見てみろ?
そしてつかの間の自己満足にひたってみろ?
おまいらよ、夢を見るのはいいことだぞ!!


744:デフォルトの名無しさん
03/06/11 20:26
RubyとかC#とかF#とかMixJuiceとか、そんなレベルじゃない、
もっとぶっ飛んだ未来の言語はありませんか?(´・ω・`)

745:デフォルトの名無しさん
03/06/11 20:43
unlambdaとかは?<ぶっとんだ

746:デフォルトの名無しさん
03/06/11 22:37
ということは、BrainFuckもか?

747:デフォルトの名無しさん
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:デフォルトの名無しさん
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:デフォルトの名無しさん
03/06/13 21:49
751は妄想が過ぎるんだよ

755:751
03/06/13 23:04
>>753
宇宙のステルヴィアで使われているプログラミング言語です 多分 言語なのか怪しいけど

756:デフォルトの名無しさん
03/06/13 23:23
>>755
??????????????????????????????????????????????

757:751
03/06/13 23:33
>>756
ごめんなさい、くだらないことなんで気にしないでください

758:名無し@沢村
03/06/16 20:46
おまいらよ、脳内開発は終わったか?

759:デフォルトの名無しさん
03/06/17 09:28
>>751
ありゃ言語というより環境だろ。
>>752
笑えないから。

760:デフォルトの名無しさん
03/07/10 19:28
lex/yaccの宿題なのですが、ここで質問してもよいでしょうか?

761:デフォルトの名無しさん
03/07/10 22:38
>>760
丸投げはイヤンよ。

762:デフォルトの名無しさん
03/07/10 22:46
自作ファイラやエディタに言語を組み込みたいんだけど
どこかいい説明サイトないですか?

763:デフォルトの名無しさん
03/07/11 00:47
emacsのソース嫁

764:デフォルトの名無しさん
03/07/11 01:05
うーん、ここマジレスしていいとこなのか?

>>763
emacsは、特定のアプリケーションにLispが組み込んであるというより、
全体がLispシステムという構成でユーザにLisp環境を与えてるんだから
>>762向きじゃないだろう。

Tclを勉強するのがいいと思う。そもそも汎用の組み込み言語を目指して
発生したものだから。ラッキーなら>>762はTclをそのまま活用できるかも。

765:764
03/07/11 01:09
>>764
組み込み用言語

言いたかったのは、券売機とか洗濯機とかNC機に組み込むソフトじゃなくて、
アプリケーションに組み込むソフトってことね。後者は何て言えばいいんだっけ?

766:デフォルトの名無しさん
03/07/11 01:20
アプリ組み込み用言語処理系

・・・ダサ

767:760
03/07/11 02:16
それではお願いします
次の条件を満たすスタックマシンのオブジェクトコードを出力するコンパイラをlex/yaccを作成せよ。
・代入文のサポート
・if,if-else,whileのサポート
・入出力文のサポート
・ブロック構造体のサポート
・条件式のサポート
・固定変数のサポート
・int abc,xy[50];のような変数と配列の混在した宣言文が、何行でもファイルの先頭に書ける
・配列への代入、配列からの参照には、添字として数式が使える

という問題なのですが、下から2つの機能を除いたものは作ることができたのですが、
下の2つを追加するのにどこをいじればいいか全くわかりません。どなたかアドバイスお願いします。

768:760
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
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;}


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4934日前に更新/200 KB
担当:undef