- 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
- 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ヶ月ほどで開発しました)。 その辺を踏まえて、オブジェクト指向言語の実装に関する、標準的 な書籍なりペーパーなりを紹介していただけないでしょうか? また、このような自作言語に継続的な利用者が現れることを期待 するのですが、どのような場で、どの程度の進捗状況で発表すれ ば良いのか見当がつきません。 成功した開発プロジェクトの実施スキームについて紹介していた だけないでしょうか? せっかく開発する予定の言語なので、できれば世界中の開発者に 使ってもらいたい、プログラミングの概念を根底から覆す提案を したい、と言うのが私の願いです。
|

|