「コンパイラ・スクリプトエンジン」相談室6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/05/06(金) 08:28:29字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,
それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。
意味論に関する話題も歓迎です。
前スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/
3 http://pc5.2ch.net/test/read.cgi/tech/1070089173/
4 http://pc5.2ch.net/test/read.cgi/tech/1100097050/
5 http://pc8.2ch.net/test/read.cgi/tech/1106129164/ (前スレ)
関連リンクは多分 >>2-10 あたり
0002デフォルトの名無しさん
2005/05/06(金) 08:28:55・色々なツールの紹介
http://catalog.compilertools.net/
・コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
・スクリプティング言語資料室(仮) (リンク集)
http://www.kt.rim.or.jp/~kbk/
・Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html
・Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html
・情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html
・OS/Programming 簡単な C コンパイラ
http://www.csg.is.titech.ac.jp/~chiba/lecture/os/
・正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm
・コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
・Links and Selected Readings
http://www.gnu.org/software/gcc/readings.html
・国産のコンパイラ共通インフラストラクチャCOINS
http://www.coins-project.org/
0003デフォルトの名無しさん
2005/05/06(金) 08:29:18・Lex and YACC primer/HOWTO (邦訳)
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
・Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html
・Jim Roskind's LALR(1) C++ Grammar
http://www.empathy.com/pccts/roskind.html
・Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
・KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/
・bison用のC++ LALR skeleton
http://www.bj-ig.de/software/bison/
・ANTLR(非yaccのパーサジェネレータ)
http://www.antlr.org/
・JavaCC(Java Compiler Compiler)
https://javacc.dev.java.net/
http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
・CUP, JLex, JFlex
http://www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP)
http://www.jflex.de/
・SableCC
http://www.sablecc.org/
・¬<><∪∪ (notavacc)LALR(1)
http://ne.cs.uec.ac.jp/~koto/notavacc/
・boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
http://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0004デフォルトの名無しさん
2005/05/06(金) 08:29:35・GC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html
・A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
・一般教養としての Garbage Collection
http://www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html
・Garbage Collection : Algorithms for Automatic Dynamic Memory Management
http://www.amazon.com/exec/obidos/ASIN/0471941484/
★処理系,スクリプト
・kikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/
・tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html
・6809用 Micro C コンパイラ
http://www.axe-inc.co.jp/pds/mc09.html
・Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html
・自作コンパイラの部屋(PL/1, Pascal等)
http://www.tokumaru.org/
・『Rubyソースコード完全解説』サポートページ
http://i.loveruby.net/ja/rhg/
・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』
http://www.okisoft.co.jp/esc/go.html
・MSによるPEフォーマット仕様書(日本語)
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0005デフォルトの名無しさん
2005/05/06(金) 08:29:53・コンパイラ 原理・技法・ツール 1&2
http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
通称ドラゴンブック。バイブル。
・コンパイラ構成法 原田 賢一
http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/
http://www.hara.cs.keio.ac.jp/kCompiler/ (ソース、正誤表のダウンロード)
・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
一冊で済ませたい人へ。
・コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
最適化がメイン。
・コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
薄い奴(185p)を読みたい人に。
・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
いつ出るんだ?
・スモールコンパイラの制作で学ぶプログラムのしくみ
http://www.cbook24.com/bm_detail.asp?sku=4774121770
0006デフォルトの名無しさん
2005/05/06(金) 08:30:07・PLDI
http://research.ihost.com/pldi2005/
コンパイラの研究に関する最新成果を知りたければまずはここ。
・POPL
http://www.cs.princeton.edu/~dpw/popl/05/
PLDIよりは理論寄りだが大いに参考になる。
・ICFP
http://www.brics.dk/~danvy/icfp05/
関数型言語に関する学会。とても難しい。
・OOPSLA
http://www.oopsla.org/2005/ShowPage.do?id=Home
オブジェクト指向言語に関する学会。最近はやや低調?
・ICCC
http://cc05.cs.berkeley.edu/
かなり実用寄り。
0007デフォルトの名無しさん
2005/05/06(金) 08:31:380008デフォルトの名無しさん
2005/05/06(金) 17:56:210009デフォルトの名無しさん
2005/05/07(土) 09:05:250010三遊亭円楽
2005/05/07(土) 10:19:03プログラミング言語処理系をネタにした大喜利は上記すれでどうぞ
0011デフォルトの名無しさん
2005/05/08(日) 08:10:360012デフォルトの名無しさん
2005/05/08(日) 11:41:07>>1
糞スレ
0013あぼーん
NGNG0014あぼーん
NGNG0015あぼーん
NGNG0016デフォルトの名無しさん
2005/05/08(日) 14:45:380017あぼーん
NGNG0018デフォルトの名無しさん
2005/05/08(日) 14:49:36意味なく上げるなボケッ
0019デフォルトの名無しさん
2005/05/08(日) 15:42:28時刻からして手動っぽい?
0020マニュアル嫁
2005/05/08(日) 15:54:04http://www.asahi-net.or.jp/~WG5K-ICKW/html/online/flex-2.5.4/flex_toc.html
Bison
http://www.gnu.org/software/bison/manual/html_mono/bison.html
0021デフォルトの名無しさん
2005/05/08(日) 15:57:50http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html
0022あぼーん
NGNG0023デフォルトの名無しさん
2005/05/08(日) 17:05:100024あぼーん
NGNG0025あぼーん
NGNG0026あぼーん
NGNG0027あぼーん
NGNG0028あぼーん
NGNG0029デフォルトの名無しさん
2005/05/08(日) 23:19:370030デフォルトの名無しさん
2005/05/08(日) 23:46:10意味の無い書き込みで上げるな、ボケッ
0031デフォルトの名無しさん
2005/05/09(月) 00:08:110032デフォルトの名無しさん
2005/05/09(月) 00:35:390033デフォルトの名無しさん
2005/05/09(月) 00:39:19>>1を読む限りじゃこっちだと思われる。
つかネタないの?
0034デフォルトの名無しさん
2005/05/09(月) 00:49:270035デフォルトの名無しさん
2005/05/09(月) 00:58:06超エリート中学生の私にいろいろ教えてください。
0036デフォルトの名無しさん
2005/05/09(月) 01:02:46ビットマップで管理するのとどっちが好きですか?
0037デフォルトの名無しさん
2005/05/09(月) 01:06:22ただしリニアなメモリブロックを強要される。
0038あぼーん
NGNG0039デフォルトの名無しさん
2005/05/09(月) 09:38:29lexのスタート状態を変更できるようにすればいいのではと思うことがあります。
ただlexにはy.tab.hのようなのを吐かないので
多少冗長なコードを書く(もしくはそれを生成するツールを書く)必要があり、
標準ではそれが簡単にできるようにはなっていません。
しかしそれが有用ならとっくにflexあたりには実装されているでありましょうし、
やはり上記の思いつきはあまり有用ではないのでしょうか...?
0040デフォルトの名無しさん
2005/05/09(月) 19:02:28なるほど確かに弁理かもしれんな。
じゃが、標準というものは得てしてそういうものじゃ。
ex. /bin/sh
0041デフォルトの名無しさん
2005/05/09(月) 20:38:15flexあたりには、という部分を読んどらんのか?
0042デフォルトの名無しさん
2005/05/09(月) 20:59:06よくわからん。
.lファイルの%%の後ろに、
void start_hoge() {
BEGIN HOGE;
}
って書いといて、yacc側からstart_hoge()を呼んだらだめなんだっけ?
0044デフォルトの名無しさん
2005/05/10(火) 00:45:55それが
> 多少冗長なコードを書く(もしくはそれを生成するツールを書く)必要があり、
という部分なのでは。
>>43
読んでたら>>40には繋がらんような。flexは標準じゃないだろ。
/bin/shに例えられるのはAT&T lexとかじゃねえ? flexはbashとかzshだと思われ。
004542
2005/05/10(火) 08:20:34うーん、たいした手間じゃないし、lexerのカプセル化という点から考えても、
むしろその手間は「かけるべき手間」なんでは。
だいたいparserがlexerに頻繁にちょっかい出すってのもなあ…
Rubyじゃあるまいし。
0046デフォルトの名無しさん
2005/05/10(火) 17:45:200047デフォルトの名無しさん
2005/05/10(火) 18:28:43うーん、スタート状態の変更は実質的にスキャナの切り替えとみることもできるから
BEGINマクロというインタフェースが公開されれば
むしろ変数で情報を渡すよりカプセル化に有益なんでは。
だいたいlexがマクロの定義をヘッダに出力するオプションが一つあれば済む話なのに
それ以後%startと整合性をとる必要を生じるのが「かけるべき手間」ってのもなあ…
マゾじゃあるまいし。
0048デフォルトの名無しさん
2005/05/10(火) 19:50:040049あぼーん
NGNG0050デフォルトの名無しさん
2005/05/10(火) 20:46:08LISPじゃあるまいし
0051デフォルトの名無しさん
2005/05/10(火) 23:27:57005242
2005/05/10(火) 23:42:48>Rubyに限らずわりとよくある要求だろ。 > lexerに文脈を渡す
そうかねえ。
Cあたりでも、typedefなんかでparserがlexerにちょっかい出すけど、
parserがlexerに『頻繁に』ちょっかい出すのはやっぱり行儀悪いと俺は思うよ。
人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
>>47
>むしろ変数で情報を渡すよりカプセル化に有益なんでは。
「変数で状態を渡す」と言った覚えはないし、
>それ以後%startと整合性をとる必要を生じるのが「かけるべき手間」ってのもなあ…
「%startと整合性をとる必要を生じる」ってのがわからないんだけど。
俺アホだからなにか気付いてないことがあるんかね。だとしたら教えてくれや。
>マゾじゃあるまいし。
クラスにsetterメソッド書くのがマゾだ、とまで言うんならもう何も言わないけどさ。
現状で、flexでさえそんな機能がないってことが、大半のプログラマはそんな
機能を望まない、っていうひとつの証拠だと思うよ。
0053デフォルトの名無しさん
2005/05/11(水) 00:00:130054デフォルトの名無しさん
2005/05/11(水) 02:18:35機能がないことがその証拠ってのもおかしいだろ。機能がないからほとんどの人間が気づいていないだけ、という可能性も十分あるわな。
いろんな記号を多用するような言語(スクリプト言語では多いよな)なら、コンテキストによってlexerの動作を変えたいという要求はすごくある。
それが今までのツールじゃ難しかったか面倒くさかったから、言語の機能が増えるたびに予約語も増える傾向にある。
0055デフォルトの名無しさん
2005/05/11(水) 03:05:04> 人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
ここに全く同意できない。
開発する人間とって曖昧な、落とし穴の多い実装になりそうだ。
↑これなら納得するし説得されてやる。
0056デフォルトの名無しさん
2005/05/11(水) 04:44:45>開発する人間とって曖昧な、落とし穴の多い実装になりそうだ。
んで、だからこそそれをサポートする>>39の提案が意味を持つわけだね。
0057デフォルトの名無しさん
2005/05/11(水) 20:41:25WindowsのC++処理系のほとんど(全て?)はtry catchの例外機構を
SEHで実装してるけど、
UNIXでは何使って実装するもんなの?まさかsetjmp/longjmpとか?
0058デフォルトの名無しさん
2005/05/11(水) 20:54:310059デフォルトの名無しさん
2005/05/11(水) 21:01:17そのアセ自体が何してるのか知らんが。
0060デフォルトの名無しさん
2005/05/11(水) 21:07:35言いたいことはわからんでもないが,SEHとはtry/catchのような構文によるエラー処理の
総称では?
SEHをCで実装する場合、setjmp/longjmpもしくは2返戻値によるのが普通かな。
0061デフォルトの名無しさん
2005/05/11(水) 21:09:26> try catchの例外機構をSEHで実装してるけど、
という言い方は変だよな。
0062デフォルトの名無しさん
2005/05/11(水) 21:10:15つまり、そのまさか。
0063デフォルトの名無しさん
2005/05/11(水) 21:12:12知ったかぶんなよ。
WindowsにはSEHという機構がOSに組み込まれてるの。
0064デフォルトの名無しさん
2005/05/11(水) 21:19:39そんなことは分かってる
0065デフォルトの名無しさん
2005/05/11(水) 21:20:25デフォルトのダイアログ(ご迷惑をお掛けしています〜)は、
OS側にこの機構があるおかげです。
UNIXの糞ダンプと違って、そのままデバッガに飛ぶなりできます。。。
0066デフォルトの名無しさん
2005/05/11(水) 21:22:08いや、おまえ判ってない。
ぜんぜんわかってない。
0067デフォルトの名無しさん
2005/05/11(水) 21:23:08なんせこんなこと言ってるし
0068デフォルトの名無しさん
2005/05/11(水) 21:25:450069デフォルトの名無しさん
2005/05/11(水) 21:28:21ワロタ
0070デフォルトの名無しさん
2005/05/11(水) 21:29:360071デフォルトの名無しさん
2005/05/11(水) 21:31:13そんな奴おらんだろw
0072デフォルトの名無しさん
2005/05/11(水) 21:33:250073デフォルトの名無しさん
2005/05/11(水) 21:34:28なんか信じられないけど。
まあgcc読んできますが。
0074デフォルトの名無しさん
2005/05/11(水) 21:39:00SEHとはこれのことだろ。
http://www.microsoft.com/japan/msdn/library/ja/jpdndeepc/htm/deep051099.asp?frame=true
http://www.microsoft.com/japan/msdn/library/ja/jpdndeepc/htm/deep060399.asp?frame=true
0075デフォルトの名無しさん
2005/05/11(水) 21:42:23サーバでそんな事してたらアホだろ
0076デフォルトの名無しさん
2005/05/11(水) 21:42:36ところで上でもめてるようだが、SEHという言葉には
・win32固有の機能(よく__try, __exceptで利用するものね)
・try〜catch的なエラー処理構文(on error goto等との対比で)
のふたつの意味があり、Microsoftでもその両方を文脈に応じて使いわけている。
0077デフォルトの名無しさん
2005/05/11(水) 21:45:19Windowsにはサービスというものが(以下略
ほんと糞UNIXerは使えねえなw
0078デフォルトの名無しさん
2005/05/11(水) 21:46:000079デフォルトの名無しさん
2005/05/11(水) 21:46:44文脈から理解できなかったアフォの言い訳だなw
0080デフォルトの名無しさん
2005/05/11(水) 21:48:080081デフォルトの名無しさん
2005/05/11(水) 21:49:08UNIX嫌いのバカが一匹いるだけか
0082デフォルトの名無しさん
2005/05/11(水) 21:49:500083デフォルトの名無しさん
2005/05/11(水) 21:50:15一生モニタのお守りしてるつもり?
0084デフォルトの名無しさん
2005/05/11(水) 21:50:180085デフォルトの名無しさん
2005/05/11(水) 21:51:110086デフォルトの名無しさん
2005/05/11(水) 21:51:14無知がでしゃばるなって。
サービス登録すれば勝手に再起動とか色々できるわけですよ。
0087デフォルトの名無しさん
2005/05/11(水) 21:51:420088デフォルトの名無しさん
2005/05/11(水) 21:52:060089デフォルトの名無しさん
2005/05/11(水) 21:52:400090デフォルトの名無しさん
2005/05/11(水) 21:54:02ヘェ、凄い凄いw
0091デフォルトの名無しさん
2005/05/11(水) 21:54:130092デフォルトの名無しさん
2005/05/11(水) 21:54:332chのサーバだってUNIXですよ?
0093デフォルトの名無しさん
2005/05/11(水) 21:54:440094デフォルトの名無しさん
2005/05/11(水) 21:55:510095デフォルトの名無しさん
2005/05/11(水) 21:56:070096デフォルトの名無しさん
2005/05/11(水) 21:56:26おれが馬鹿にしてるのはUNIXでなくてここにいるUNIX使いだってばw
0097デフォルトの名無しさん
2005/05/11(水) 21:56:59おい、レベル下がってるぞ
もっと面白い事言ってくれよ
0098デフォルトの名無しさん
2005/05/11(水) 21:57:000099デフォルトの名無しさん
2005/05/11(水) 21:57:290100デフォルトの名無しさん
2005/05/11(水) 21:57:470101デフォルトの名無しさん
2005/05/11(水) 21:58:380102デフォルトの名無しさん
2005/05/11(水) 21:59:520103デフォルトの名無しさん
2005/05/11(水) 22:00:33( ゚∀゚)彡 windows! windows!
⊂彡
0104デフォルトの名無しさん
2005/05/11(水) 22:00:38デバッガを自分で起動できますが何か?
0105デフォルトの名無しさん
2005/05/11(水) 22:02:200106デフォルトの名無しさん
2005/05/11(水) 22:03:53最高に頭悪そうな発言してください in ム板 (V)
http://pc8.2ch.net/test/read.cgi/tech/1115386557/
0107デフォルトの名無しさん
2005/05/11(水) 22:06:380108デフォルトの名無しさん
2005/05/11(水) 22:10:480109デフォルトの名無しさん
2005/05/11(水) 22:12:140110デフォルトの名無しさん
2005/05/11(水) 22:40:37馬鹿の見本みたいな奴だなw
0111デフォルトの名無しさん
2005/05/11(水) 22:41:580112デフォルトの名無しさん
2005/05/11(水) 22:42:570113デフォルトの名無しさん
2005/05/11(水) 22:44:000114デフォルトの名無しさん
2005/05/11(水) 22:44:42UNIXでも最近まともに動いてるサーバはWebぐらいだよ。
正直ApacheやJavaのおかげと言っていい。
他の用途では正直使い物にならない。
0115デフォルトの名無しさん
2005/05/11(水) 22:44:500116デフォルトの名無しさん
2005/05/11(水) 22:46:41Oracleとかのおかげだけど。
0117デフォルトの名無しさん
2005/05/11(水) 22:47:070118デフォルトの名無しさん
2005/05/11(水) 22:48:250119デフォルトの名無しさん
2005/05/11(水) 22:48:530120デフォルトの名無しさん
2005/05/11(水) 22:50:010121デフォルトの名無しさん
2005/05/11(水) 22:50:10一応誘導しておきます。
UNIXプログラミング質問すれ Part5
http://pc8.2ch.net/test/read.cgi/tech/1105723117/
UNX板
http://pc8.2ch.net/unix/
0122デフォルトの名無しさん
2005/05/11(水) 22:50:510123デフォルトの名無しさん
2005/05/11(水) 22:52:310124デフォルトの名無しさん
2005/05/11(水) 22:56:59でもほとんどのお店で売ってるPCに何故か付いてきます。
何故でしょうね。
この謎を解き明かしてみるのも面白いかもしれませんよ。
0125デフォルトの名無しさん
2005/05/11(水) 22:57:10なんとたったの28,350円(価格コム調べ)
http://kakaku.com/prdsearch/detail.asp?PrdKey=03107010192
さらに今お買い上げいただくと
012642
2005/05/11(水) 23:16:31で話を戻すけど、
>>55
>> 人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
>ここに全く同意できない。
根拠もなしにんなこと言われてもなあ。実際Rubyは落し穴の多い言語になってるし。
http://i.loveruby.net/ja/rhg/contextual.html
で、Rubyのlexerには状態が9種類あるようだけど、parserから設定するのは
4種類だけだ(EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_FNAME)。
だったらlexerにsetterを4個付ければ済む話。
たいした手間じゃないし、勝手に他の状態にされる危険もないし(カプセル化の基本)。
>>54
>機能がないからほとんどの人間が気づいていないだけ、
>という可能性も十分あるわな。
本気でそう思ってるんならパッチでも何でも作って公開すりゃいいじゃん。止めないよ。
>>57
ちなみにだが、Rubyの実装ではsetjmpもlongjmpも使いまくってるよ。
# ありゃひでえ。
0127デフォルトの名無しさん
2005/05/11(水) 23:41:250128デフォルトの名無しさん
2005/05/12(木) 09:48:50例外が発生しない場合のオーバーヘッドを0にする手法がある。
setjump/longjumpだと、tryに入ったときにsetjumpして、
例外が発生したらlongjumpすると思うけど、
setjumpを省く代わりに、例外が発生したらスタックを遡りながら、
例外を起こしたコードのアドレスから対応するcatchを特定する。
0129デフォルトの名無しさん
2005/05/12(木) 11:37:430130デフォルトの名無しさん
2005/05/12(木) 12:18:260131デフォルトの名無しさん
2005/05/12(木) 12:41:16具体的に酷いところを挙げてみてほしいなぁ
0132三遊亭円楽
2005/05/12(木) 14:42:43何故、windowsやらunixやらですれがのびるんだね。
0133デフォルトの名無しさん
2005/05/12(木) 19:05:56setjmp法、>>60の2返戻法、>>128の例外表法
の3つかな。
個人的には、変換後最適化が色々適用できる2返戻法が好きかも。
定量的な比較はしてないが…
0134デフォルトの名無しさん
2005/05/12(木) 19:59:16これの説明だれかしてください
意味わかんねえよ
0135デフォルトの名無しさん
2005/05/12(木) 20:30:02だとググらずにカキコ
0136デフォルトの名無しさん
2005/05/12(木) 20:40:49つーか>>133説明してくれよ
そもそもそんな〜法なんて言い方あるのかも
0137デフォルトの名無しさん
2005/05/12(木) 20:50:25千葉 雄司という人の造語?
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-13308-7
0138デフォルトの名無しさん
2005/05/12(木) 21:26:46735円だって
0139デフォルトの名無しさん
2005/05/12(木) 22:05:10そうではない。
古いいまのパーサやスキャナの枠組に入らないだけ。
「古いブドウ酒は、新しい皮袋に馴染まない」
とは、まさにことこと。
新しい言語は、古い開発パラダイムを駆逐する。
0140デフォルトの名無しさん
2005/05/12(木) 23:15:18信者乙。
0142デフォルトの名無しさん
2005/05/12(木) 23:41:110143デフォルトの名無しさん
2005/05/12(木) 23:46:43古いタイプの人間?
0144デフォルトの名無しさん
2005/05/12(木) 23:47:24014542
2005/05/13(金) 00:16:26>具体的に酷いところを挙げてみてほしいなぁ
だから挙げてるじゃん。
(eval.cにおいて)setjmp, longjmpを使いまくってること、
parserがlexerにむやみにちょっかい出すこと。
まあ後者は言語仕様の問題だが、それを実装するために、
グローバル変数で通信してるってのはどうかと思う。
eval.cとparse.yが汚いってのは作者も認めてたと思う。
>>141
いやみったって、意味わかんねえんだけど。
むしろparserとlexerがきれいに分かれない言語の方が、古い言語っていうイメージが
あるけどね。俺は。
0146デフォルトの名無しさん
2005/05/13(金) 00:23:32処理系自体がどういう実装になってようが、処理系のユーザにはあまり関係ないよね。
0148デフォルトの名無しさん
2005/05/13(金) 00:42:27スペースの入れ方で解釈が変わる言語ってどうなのよ?
0149ヽ(´ー`)ノ ◆.ogCuANUcE
2005/05/13(金) 00:43:42> 処理系自体がどういう実装になってようが、処理系のユーザにはあまり関係ないよね。
それを言っちゃうとこのスレの存在意義がなくなってしまうのだが。
0150デフォルトの名無しさん
2005/05/13(金) 00:50:48a[i] = 1 # a[i] = (1)
a [i] # a([i])
前者はインデックス代入であり、後者はメソッド呼び出しの括弧を省略して引数に配列の要素を渡している。
また次のような場合もある。
a + 1 # (a) + (1)
a +1 # a(+1)
このあたりの仕様は一部の地域でやたらと嫌われているようだ。
つうかわざわざこんな仕様にした作者の意図を激しく聞いてみたい
0151デフォルトの名無しさん
2005/05/13(金) 02:42:38メソッド呼び出しの括弧を省略できるようにした結果だろうね。
0152デフォルトの名無しさん
2005/05/13(金) 02:47:39そんなことない。
効率的な実装で処理系が速くなるならユーザにも意味はあるし、
言語仕様や意味論の話題だってあるだろう。
0153デフォルトの名無しさん
2005/05/13(金) 02:49:33構成考えた後に気づいて鬱…orz
0154デフォルトの名無しさん
2005/05/13(金) 02:49:590155デフォルトの名無しさん
2005/05/13(金) 03:19:28なんというか・・・そのために文法が複雑になり、パーサーが複雑になり・・・って
そこまでするほどのメリットなのかそれ?
0156デフォルトの名無しさん
2005/05/13(金) 03:19:510157デフォルトの名無しさん
2005/05/13(金) 04:45:370158デフォルトの名無しさん
2005/05/13(金) 07:00:580159デフォルトの名無しさん
2005/05/13(金) 07:04:320160デフォルトの名無しさん
2005/05/13(金) 11:12:25何が不満だ?
0161デフォルトの名無しさん
2005/05/13(金) 11:50:49不満じゃなくてな、変数隠蔽とか以前の時代のソフトに今時の概念入れろとか言うのって不毛じゃないのかって事
そんなメンテナが泣きそうな事するくらいならいっそ1から作るとしたらどうするかって話する方がよかないか?
最近の処理系ならちゃんと備わってたりするし(メジャーじゃないけどさ)
0162デフォルトの名無しさん
2005/05/13(金) 12:28:46Perlのlexer/parserってあんな言語でも実は綺麗なの?
>>155
もちろん主観の問題だけど、Rubyの1ユーザとしては
引数が0個か1個の場合は括弧省略したいかな。
ary.sortとかary.push 1とか。
あと、a [i]やa +1なんて現実的には書かなくない?
0163デフォルトの名無しさん
2005/05/13(金) 12:37:10そんなんだったらsmalltalk風の呼び出しの方がきれいだと思う。
0164デフォルトの名無しさん
2005/05/13(金) 13:01:14smalltalkを知らない俺様にもわかるように
5行で説明してくださいおながいします
0165デフォルトの名無しさん
2005/05/13(金) 13:15:390166デフォルトの名無しさん
2005/05/13(金) 13:25:01>Perlのlexer/parserってあんな言語でも実は綺麗なの?
知らないけどPerlが汚いからといってRubyが汚くないという話にはならないでしょ
>もちろん主観の問題だけど、Rubyの1ユーザとしては
(中略)
>あと、a [i]やa +1なんて現実的には書かなくない?
いや、だからメソッドの括弧省略のために作者自らわざわざスキャナを複雑にしてるんだよね、
それほどまでにメソッドの括弧省略にメリットがあるのかなと思ってさ・・・
あと現実には書かなくてもやっぱりスペースの位置だけで動きが変わるのは混乱の元だと思う。
0167デフォルトの名無しさん
2005/05/13(金) 13:36:47セレクタとかある時点で比較対象になってなくない?
>>166
なんでRubyばっかり槍玉にあがるのかな、って。
RubyがRubyが言ってるのみると、
アンチRuby厨の戯れ言にみえてしょうがないんだよね。
メリットがあるかどうかはやっぱり主観によるけど、
混乱の元だと思う人がいるのは理解はできる。
0168デフォルトの名無しさん
2005/05/13(金) 13:59:34そんなにRubyの話ばかりされるのが嫌なら他の話題を振ればいい
0169デフォルトの名無しさん
2005/05/13(金) 14:38:09lexとyaccが協調動作することの是非や方法の話題はおもしろいのに
いちいちRubyの場合ばかり持ってきてRubyを叩くアンチがうざいのには同意。
そしてそれにいちいち反応するRuby信者もうざいぞ。
0170デフォルトの名無しさん
2005/05/13(金) 14:50:12神が文法設計しないかぎり、当たり前じゃないの?
0171デフォルトの名無しさん
2005/05/13(金) 17:55:12嫌です
0172デフォルトの名無しさん
2005/05/13(金) 18:31:44> あと、a [i]やa +1なんて現実的には書かなくない?
ギャハハ、腹痛ぇw
0173デフォルトの名無しさん
2005/05/13(金) 18:56:530174デフォルトの名無しさん
2005/05/13(金) 19:12:20「俺の方が深く理解してるぜ。お前は全然分かってない。大馬鹿野郎だ」
みたいな。仲良くやっていきたいものだが。
0175デフォルトの名無しさん
2005/05/13(金) 19:15:152ちゃんねらって、誇れるものをあまり持たない人が多いような気がします。
だから、そうなるのでしょうね。
0176デフォルトの名無しさん
2005/05/13(金) 19:36:23017742
2005/05/13(金) 20:46:09>Perlのlexer/parserってあんな言語でも実は綺麗なの?
最初にRubyを出したのは俺だけど、Perlを出さなかったのは、Perlは
あまりにソースが読みにくくて読むのを断念したからだ w
だから、parserがlexerにどれくらいちょっかい出してるのかも知らない。
「Rubyソースコード完全解説」に相当する日本語解説もないしね。
別にアンチRubyってわけじゃないよ。>>150だって、推測だけどたぶん
ふだんはCとかJavaとかC++とかC#とか使ってて、たまたま>>126のリンク見て
びっくり仰天なんじゃこりゃ、と思っただけだと思うよ。
なんでもかんでもアンチだの信者だのにしたがる方こそ病んでないか。
ところで、メソッド呼び出しの括弧が省略できるのは、
「引数がひとつもないとき」は明らかなメリットがあるよな。
ひとつでも引数があるのなら、括弧ぐらいつけりゃいいじゃん、と
俺は思うけど。文末のセミコロンもね。
>>174
というわけで俺はアホだから、>>47の
>むしろ変数で情報を渡すよりカプセル化に有益なんでは。
>それ以後%startと整合性をとる必要を生じる
という発言の趣旨を>>52以来ずーっと教えて欲しいと思ってるんだが。
0178デフォルトの名無しさん
2005/05/13(金) 21:11:42文法は厳格かつ単純な方が好きだな
if-then-else の else が省略出来ないとか、四則演算に優先順位が無いとかでも問題無し
0179デフォルトの名無しさん
2005/05/13(金) 21:54:46究極の汎用プログラミング言語
0180デフォルトの名無しさん
2005/05/13(金) 22:00:280181デフォルトの名無しさん
2005/05/13(金) 23:32:47>>178
単純で、四則演算に優先順位が無くてもOK
あなたにオススメの言語はHSPです。よかったね。
0182デフォルトの名無しさん
2005/05/13(金) 23:33:32以後、HSPの話題はゲ製板で行ってください。
0183デフォルトの名無しさん
2005/05/13(金) 23:36:34>>182
そんなあなたにオススメの言語はHSP3です。
コレは優先順位つくらしいよ。よかったね。
0184デフォルトの名無しさん
2005/05/13(金) 23:36:550185デフォルトの名無しさん
2005/05/13(金) 23:41:33ものは試しに、
LISP
↑この横棒を少し上に持ち上げてご覧
直ぐに HSP に変わるから。
0186デフォルトの名無しさん
2005/05/13(金) 23:45:570187デフォルトの名無しさん
2005/05/14(土) 00:16:370188デフォルトの名無しさん
2005/05/14(土) 06:23:37ソースコードを読めないとコーディングの汚さのせいにし、
Rubyを読んだ程度でさも様々な言語のソースコードを読んだように振舞う42の
いるスレはここですか?
0189デフォルトの名無しさん
2005/05/14(土) 06:57:530190デフォルトの名無しさん
2005/05/14(土) 06:58:42糞なのは、は言い過ぎた。
汚く見えるのは、に読み替えてね。
つい本音が出てしまった。
0191デフォルトの名無しさん
2005/05/14(土) 07:06:35悪口いいっぱはともかく、言語の規模考えても、準拠ポイントとしてはちょうどいいんじゃないか。
0192デフォルトの名無しさん
2005/05/14(土) 07:19:18本という形態だとすでにバージョン的に無意味になってる部分も多いだろうし。
Rubyの動作原理ならともかく、糞ソース読む練習に良いとか?
0193デフォルトの名無しさん
2005/05/14(土) 07:23:59なんつーか、ad hoc 感ブリバリで好きになれないな
0194デフォルトの名無しさん
2005/05/14(土) 07:53:49「ソースが糞」じゃないプロジェクトなんてあるの?
0195デフォルトの名無しさん
2005/05/14(土) 07:55:25> Rubyの動作原理ならともかく、糞ソース読む練習に良いとか?
あの本、能書きにはそれっぽく書いてある。だけど実際の本文は
「わかった奴が教えを垂れる」スタイルなんで、あんまり
ソースの読み方の参考というのにはならない。
前提となる知識が先に書いてあるのは別にいいんだが、何をとばして何を読む
ってのが説明の都合で決まりすぎで、ソースの読み手から見た判断という視点
じゃない。
0196デフォルトの名無しさん
2005/05/14(土) 10:40:28ホントダw
I-I S P
0197デフォルトの名無しさん
2005/05/14(土) 10:41:29019842
2005/05/14(土) 12:19:46eval.cのsetjmp/longjmpの乱用と、parserとlexerがグローバル変数で
状態を共有してるのがひどいと言ってるだけ。他はまあ、普通のCソースだと思う。
>>188
>ソースコードを読めないとコーディングの汚さのせいにし、
Perlのソース読んだことあるかい?
019942
2005/05/14(土) 12:39:23setjmp/longjmpの乱用についても、実行形態を考えるとやむを得ないところは
あるんだよな。
いっそバイトコードインタプリタにでもした方がよかったんじゃないかとも
思う。そうするとGCも今のコンサバGCじゃなくなって、もはや原型をとどめなく
なりそうだが。
0200デフォルトの名無しさん
2005/05/14(土) 15:42:13Perlのソースコードが汚いって?
少なくともRubyが***自力で***読めてPerlが読めない理由はねえよ。
てめえのおつむが足りないってことを精一杯開陳しつつしかも自分では
認めないって、最悪じゃね?
しかもいっちょまえに批評家気取って、はーゲラゲラゲラ
しかもえらそうなくせに何言ってるかわかってなさげなトンチンカンぶりがラブリー
0201デフォルトの名無しさん
2005/05/14(土) 15:44:11ソースは汚いと思わないが、build課程はかなりひどい物の一つだと思うぞ。
0202デフォルトの名無しさん
2005/05/14(土) 17:01:52020342
2005/05/14(土) 19:50:57何がそんなに気に入らないんだか。
>少なくともRubyが***自力で***読めてPerlが読めない理由はねえよ。
へえ。
Rubyのソースが間違いなく***自力で***読める人のご意見。
http://jp.rubyist.net/magazine/?0001-Hotlinks
| Perl のソースコードは印象的だよね。すごい。読めない。
| マクロの嵐で、よくわからない識別子が山のように出てきて、
| いったい何? みたいな、すごい略語でさぁ。ほんとに、名前重要。]
| この識別子は、何を表しているのか、何をしようとしているのか、
| わかんないんだよ。
0204デフォルトの名無しさん
2005/05/14(土) 20:02:36それが論拠になると本気で思ってる? 痛い奴。
0205デフォルトの名無しさん
2005/05/14(土) 20:20:43>>53
0206デフォルトの名無しさん
2005/05/14(土) 22:53:41その通り!
めずらしく、いい書き込みだなw
0207デフォルトの名無しさん
2005/05/14(土) 23:33:01ことあるごとにPerlをもちだしてくる信者はいい加減にしろ
0208デフォルトの名無しさん
2005/05/14(土) 23:44:40実用レベルなのか知らないけど
0209デフォルトの名無しさん
2005/05/15(日) 00:04:59高速な事は事実。
0210デフォルトの名無しさん
2005/05/15(日) 01:17:27Cで処理系書いてる限りソースが糞になるのはやっぱり避けられないのかも?
0211デフォルトの名無しさん
2005/05/15(日) 01:22:45それぞれの言語自身で記述する風習みたいなのがあるからかね。
0212デフォルトの名無しさん
2005/05/15(日) 02:02:08表現能力のなさを露呈してるようなもんじゃないかな。
WindowsをUnixで作ってるみたいな。
SubversionのソースをCVSで管理してるみたいな。
もちろんスクリプト言語のように目指すところが違えば話は別だけど。
0213デフォルトの名無しさん
2005/05/15(日) 03:37:32SBCL は C の部分が汚くて悶絶した
0214デフォルトの名無しさん
2005/05/15(日) 03:45:280215デフォルトの名無しさん
2005/05/15(日) 03:59:02けっこうあったよ。-Wall 付けてビルドするとやたら Warning が出るし。
たまにクリーンアップのパッチが提出されてるけど、マージされてるのか疑問。
0216デフォルトの名無しさん
2005/05/15(日) 07:41:040217デフォルトの名無しさん
2005/05/15(日) 07:44:340218デフォルトの名無しさん
2005/05/15(日) 08:24:59サンクス。
人の名前かと思ったんでワケワカラン様になってた。
0219デフォルトの名無しさん
2005/05/15(日) 11:39:02ブートストラップの意味おしえて
0220デフォルトの名無しさん
2005/05/15(日) 11:40:28ストローストラップの弟
0221デフォルトの名無しさん
2005/05/15(日) 13:08:41コンパイラが自分自身のソースをコンパイルすること。
(だよね?
0222デフォルトの名無しさん
2005/05/15(日) 13:38:45Engineering a Compiler
http://www.amazon.com/exec/obidos/tg/detail/-/155860698X/
ってどんなもんでしょうね?
0223デフォルトの名無しさん
2005/05/15(日) 14:56:04☆☆☆☆★
初学者はドラゴンブック嫁って事になってるの?メリケンでもいまだに。ちょっと安心していい?
0225デフォルトの名無しさん
2005/05/15(日) 17:38:46ひょっとしてストラウストラップのこと?
ストローストラップって発音することがあるの?
0226デフォルトの名無しさん
2005/05/15(日) 17:44:520227デフォルトの名無しさん
2005/05/15(日) 17:45:000228デフォルトの名無しさん
2005/05/15(日) 18:05:330229デフォルトの名無しさん
2005/05/15(日) 18:08:300230デフォルトの名無しさん
2005/05/15(日) 18:11:32耳腐ってんのか?
ステゥーステュオァプ
0231デフォルトの名無しさん
2005/05/15(日) 18:21:41「ステゥーステュオァプでも読んどけ」
「……宇宙人?」
0232デフォルトの名無しさん
2005/05/19(木) 14:36:35ソースコードの意味解析をやる必要があるかどうかが直感的にわからなくなってしまいました。
#define文は型検査をする必要はないので、いわゆる意味解析の必要ってない気もするのですが、
プリコンパイルはそれはそれで一つの言語であるので、どこかで意味解析が必要になりそうな気もします。
実際に必要なのかどうなのか、簡単な理由と共に教えてもらえないでしょうか?
どうぞよろしくお願いします。
0233232
2005/05/19(木) 15:30:190234デフォルトの名無しさん
2005/05/19(木) 16:26:450235デフォルトの名無しさん
2005/05/19(木) 16:30:36そんな俺様が勘で答えてやろう。
C言語本体としての意味解析はいらない(と思う、というか構文解析もできないだろう)。
マクロ言語としての意味解析はいるかもしれない。
ただ、Cのマクロ言語は本当に簡単な言語なので、
構文解析まで通れば意味解析はほとんど何もすることが
ないかもしれない。ひょっとしたらあるかもしれない。
0236235
2005/05/19(木) 16:32:40そういうレベルの話なの?
やっぱり全然見当違いのレスしちゃったかも。
ごめん、なかったことにしてくれ。
0237232
2005/05/19(木) 17:22:08直感ですが、cppやgccのpre-processorのコードは高速化のために最適化されていて、
私みたいな知識のない人間が追うには辛いのではないかと思っていました。
反省して読んでみることにします。
>>235
まさにそういう感じです<言葉だけ覚えてほとんど理解できてない。
理解するために簡単そうに見えるプリプロセッサを作ろうと思ったのですが、
作る前に色々と考えていたら意味解析のセクションが必要なのかどうかがわからなくなって…
とりあえず、プリプロセッサの意味規則がどんなものかを考えることが重要なのですね。
まだ紙の上で考えている状態なので、具体的にどのような構文木を出せばよいのか、
そこのところで悩んでいる途中で出た疑問でした。
わかっていない私にわかりやすく説明してくれてありがとうございました。
0238デフォルトの名無しさん
2005/05/19(木) 21:07:54世の中のCのプリプロセッサはバグだらけ
みたいな論文を見たような気がする。
0239232
2005/05/19(木) 21:50:18(あくまで参考として:ttp://www.sra.co.jp/wingnut/gcc/cpp-j.html)
0240デフォルトの名無しさん
2005/05/19(木) 22:15:21小さいCPP(1ファイルに収まるくらいのやつ)が入ってるよ
http://www.lsi-j.co.jp/freesoft/
0241デフォルトの名無しさん
2005/05/20(金) 02:20:540242デフォルトの名無しさん
2005/05/20(金) 03:23:190243デフォルトの名無しさん
2005/05/20(金) 05:55:55結局ソース見るのが一番早い。
0244デフォルトの名無しさん
2005/05/20(金) 09:44:1510行くらいならね。
0245デフォルトの名無しさん
2005/05/20(金) 17:22:180246デフォルトの名無しさん
2005/05/20(金) 17:44:30http://java.sun.com/docs/books/jls/
0247デフォルトの名無しさん
2005/05/20(金) 18:57:23早速構文チェッカーでも書いてみます。
やはりC++より構文規則は見た目きれいですね。
C++の構文はどこもかしこもオプションだらけでよくJavaプログラマが汚いという意味がよくわかりました。
私もC++パーサを書いたあと、しばらくはC++でプログラムしなくなりました。
0248デフォルトの名無しさん
2005/05/20(金) 21:23:32たぶんこれだろ。
http://lc.linux.or.jp/lc2002/papers/matsui0920p.pdf
http://www.ipa.go.jp/jinzai/esp/15mito/mdata/11-6.html
0249デフォルトの名無しさん
2005/05/20(金) 22:49:23その意見には激しく同意した上で、なおかつC++が最高の言語だと思う自分がいる
0250デフォルトの名無しさん
2005/05/20(金) 23:17:35統一したほうがいいのだろうか。
0251デフォルトの名無しさん
2005/05/20(金) 23:24:33やめられない
0252デフォルトの名無しさん
2005/05/20(金) 23:27:550253デフォルトの名無しさん
2005/05/20(金) 23:35:070254デフォルトの名無しさん
2005/05/20(金) 23:39:04Scheme処理系は何個あっても困らないからねえ
0255デフォルトの名無しさん
2005/05/21(土) 00:54:160256デフォルトの名無しさん
2005/05/21(土) 00:55:17実装なんか興味ないからさ。
0257デフォルトの名無しさん
2005/05/21(土) 01:18:360258デフォルトの名無しさん
2005/05/21(土) 01:33:11公開キボンヌ
0259デフォルトの名無しさん
2005/05/21(土) 01:33:48な頭の俺をどうにかしてください
0260デフォルトの名無しさん
2005/05/21(土) 01:35:50そんなあなたに「りんg(ry」
0261デフォルトの名無しさん
2005/05/21(土) 01:50:59用途は、たとえば自分でソートのプログラムを作ったけど正しいか自信が無いときに、
単純で遅いが明らかに正しいソートプログラムと比較させる。
全自動は無理だと思うから、人間が色々手伝ってもかまわない。
「入力の長さnの帰納法」とかヒントをあげると、少なくてもn=1のときは
単純にn=1が保証されるものとして最適化するだけで判定できそうな気がする。
0262デフォルトの名無しさん
2005/05/21(土) 01:54:55どうやらスレ違いぽいな
完璧なプログラム
http://pc8.2ch.net/test/read.cgi/tech/1041126217/
0263デフォルトの名無しさん
2005/05/21(土) 09:35:34JavaScriptでScheme処理系を書いてください
0264デフォルトの名無しさん
2005/05/21(土) 10:38:57しかも、内容が馬鹿っぽいw
0265デフォルトの名無しさん
2005/05/21(土) 10:59:05計算論で結論出てなかったっけ?
0266デフォルトの名無しさん
2005/05/21(土) 11:05:29少なくとも、理論上無理。そんなことができるなら、世の中もっと幸せになってる。
0267デフォルトの名無しさん
2005/05/21(土) 11:51:13>>263をR5RS準拠でヨロスク
0268デフォルトの名無しさん
2005/05/21(土) 14:49:330269デフォルトの名無しさん
2005/05/21(土) 15:08:56「有限時間内で」が大事。
0270デフォルトの名無しさん
2005/05/21(土) 15:25:18理論上無理とか言ってるやつは
proof assistantというものが存在することすら知らんのだろうな。
いずれにせよ>>262の言うとおりスレ違いだろう。
0271デフォルトの名無しさん
2005/05/21(土) 16:19:22後学の為に是非公開してくださいませんか。宜しくお願いします。
0272デフォルトの名無しさん
2005/05/22(日) 00:51:20読みやすさ重視orお遊びのトイプロジェクトまで、山ほどあるぞ。
0273デフォルトの名無しさん
2005/05/22(日) 07:48:12R5RS規格書は50ページ程度と言われてるけど内容濃いしね
省かれた暗黙仕様もあるから準拠しようとすればそれなりに工数掛かる
>>267
おれが今回作ったのは継続もなくスタックベースでそもそもRxRS前提に書いてない
throwみたいに親側へ飛ぶだけだし、スタックオーバーフローもする
ちゃんとしたのは別にあるんだけど、デカくなりすぎた
そこそこの速度で動く&俺言語やアプリへの組み込みが目的だった
俺言語2k行ぐらいで最低限の最適化だけやったいい加減なやつ
速度はguile1.7.2と同じぐらい。。。guileは速度捨ててるね
0274デフォルトの名無しさん
2005/05/22(日) 08:52:51おー、俺言語大好き人間って結構いるんだな
俺はSelf系つかprototype系好きなんで何個も作ったけど、Schemeは一度も作ったコトないや
0275デフォルトの名無しさん
2005/05/22(日) 16:33:47どんなものか想像できない。
0276デフォルトの名無しさん
2005/05/22(日) 16:49:51prologを組み込むと時々便利。
0277デフォルトの名無しさん
2005/05/23(月) 16:39:26何かの仕様に準拠しないと達成感がない。
でもRxRSの複素数とかくだらないの実装するのは面倒くさい上に、
母言語(javascriptとか)の数値表現がそのまま使えなくなって
滅多に使わないのに全体的に遅くなりそうなあげく、利便性まで下がる。
同じことで悩んだor悩んでるやついる?
0278デフォルトの名無しさん
2005/05/23(月) 18:49:26つcoercion semantics
0279デフォルトの名無しさん
2005/05/23(月) 19:22:56Schemeに型はないんですが、soft-typingしろってことでしょうか。
誤解があったかもしれないので捕捉。
Scheme in javascriptってjavascriptで書かれたScheme実行エンジンを意図してました。
i = scheme_eval("(+ 1 2)");
みたいに実行できるようなの。これでiには普通の3が代入されるか、
自分で定義したclass SchemeNumberのインスタンスが入るか、が問題です。
前者が嬉しいけど、複素数とかの対応はどうするべきかな、と。
0280デフォルトの名無しさん
2005/05/23(月) 22:06:51俺言語との通信やプリプロセッサの拡張とか
funclist.scm:((f 1) (g 2) (h 3))
俺言語:
#s (define func-list (with-input-from-file "funclist.scm" read))
#s(for-each (lambda(x) (puts x "() { printf(\"myname:" (car x)
"\\n\"); return " (cadr x) "; }")) func-list)
register_func() {
#s(for-each (lambda(x) (puts "scm_add_proc(\""(car x)"\", (scm_proc_t)"(car x)", 0);"
" printf(\"defined:"(car x)"\\n\");")) func-list)}
main() {
register_func();scm_write(scm_eval_string(#ss`(+ ,@(map(lambda(x)(list(car x))) func-list))));;scm_newline();}
↓
f() { printf("myname: f \n"); return 1; }
g() { printf("myname: g \n"); return 2; }
h() { printf("myname: h \n"); return 3; }
register_func() {
scm_add_proc("f", (scm_proc_t)f, 0); printf("function defined:f\n");
scm_add_proc("g", (scm_proc_t)g, 0); printf("function defined:g\n");
scm_add_proc("h", (scm_proc_t)h, 0); printf("function defined:h\n");
}
main() {
register_func();scm_write(scm_eval_string("(+ (f) (g) (h))"));scm_newline();}
↓
function defined:f
function defined:g
function defined:h
myname: h
myname: g
myname: f
6
0281デフォルトの名無しさん
2005/05/23(月) 22:09:36おれだったらevalの結果をそのままwriteできるようにする。
結果が数値だけとは限らないので。
scheme_write(scheme_eval(scheme_read()));
もしくは
scheme_write(scheme_eval_string("(+ 1 2)"));
経験的に特に明示しない限りschemeならschemeの型で持ちまわる方が都合良い。
0282デフォルトの名無しさん
2005/05/23(月) 23:45:06イラネw
0283デフォルトの名無しさん
2005/05/23(月) 23:50:14説明を加えただけにしか見えないのだが。
0284デフォルトの名無しさん
2005/05/23(月) 23:55:31でも中田先生の教科書は(・∀・)イイ!!
0285デフォルトの名無しさん
2005/05/24(火) 00:41:48>schemeならschemeの型で持ちまわる方が都合良い。
処理系の作成者としては当然その通りで、気持ちもわかるんだけど、
処理系のユーザとしては不便だと思うんだよね。
いちいちscheme_number_from_javascript_number(1)とかしなきゃならんのは。
どうにかならんかな、みんなどうしてるかな、って疑問でした。
0286デフォルトの名無しさん
2005/05/24(火) 02:28:26900行ほどのTinyBASIC以下のダメ言語だけど
とりあえず、エラトステネスの篩が動いてる
しかし、明らかにヘボい機械語を吐いているのに
エラトステネスでVC++とほとんど実行速度に差が無い
うちのマシンがefficeonだからかなあ?
やっぱコンパイラは速いね
0287デフォルトの名無しさん
2005/05/24(火) 02:36:05言語つくりを学ぶとかなりプログラミングの理解度が高まることが実感できました。
少し高度だけど、プログラミングを生業にするなら、1度はチャレンジすることをお勧めします。
決して損とは思いません。
0288デフォルトの名無しさん
2005/05/24(火) 02:49:35しかも半分は、STLとVC++の使い方の勉強だった気がするw
残りはVC++のデバッガーに機械語を教えてもらってたかんじ
しかし、カウンタのインクリメントでさえpushとpopを二回ずつりながら
へぼへぼと計算するうちのヘボコンパイラと
inc eacだけで済ませそうなVC++が
ほとんど実行速度に差が無いのは解せないなあ
0289デフォルトの名無しさん
2005/05/24(火) 07:35:110290デフォルトの名無しさん
2005/05/24(火) 17:27:21clock_t c = clock();
Sieve();
cout << double( clock() - c ) / CLK_TCK << end;
こんなかんじ
一億までの素数を全部求めた場合の所要時間は、
efficeon 1.6GHzで、VC++が30.5秒程、へぼ言語が31.5秒程
計算結果は、VC++とへぼ言語で一緒にしかならないから
コンパイラのバグで不当に速い可能性はうすい
ちなみにへぼのカウンタ変数のインクリメントのコードは↓、我ながらひどいもんだw
mov eax, i
push eax
mov eax, i
mov eax, [eax]
push eax
mov eax,1
pop ebx
add eax,ebx
pop ebx
mov [ebx],eax
VC++は↓、まとも
mov edx, [i]
add edx, 1
mov [i], edx
0291デフォルトの名無しさん
2005/05/24(火) 19:23:34メモリアクセスがネックになるんじゃないかな。
伝統にのっとってfactやfibで。
0292デフォルトの名無しさん
2005/05/24(火) 19:35:32どうでもいいが,>290のVCのコードでループカウンタにレジスタが割りついてないのが気になる.
0293デフォルトの名無しさん
2005/05/24(火) 19:42:200294デフォルトの名無しさん
2005/05/24(火) 20:43:05つかスタックマシンのコードをx86へ分解してるだけだと思うよ。
コードジェネレータで頭ひねらずに済むから処理系を作ってる途中では有用だろうし。
0295デフォルトの名無しさん
2005/05/24(火) 21:49:05とりあえず mov eax, i は lea eax, i だとして、
それぞれのコードを1億回ループするのを適当に計ると
へぼ: 1613771636
VC++: 1119915436
クロック掛かる。1.6GHz に換算すると
へぼ: 1.0秒
VC++: 0.7秒
程度の違いだな。
0296デフォルトの名無しさん
2005/05/24(火) 21:50:51失礼。 mov eax, i でよかった。
0297デフォルトの名無しさん
2005/05/24(火) 22:08:35クロック数って そんなに正確に測れるんですか?
シミュレーション?
CPU のマニュアルから計算したやつ?
0298デフォルトの名無しさん
2005/05/24(火) 22:17:21しかし1億で30秒は遅い気もするが…>290でループ変数が
レジスタに載ってないあたりを見ると、元ソースの問題かな。
0299デフォルトの名無しさん
2005/05/24(火) 22:29:07発想が逆だ
0300デフォルトの名無しさん
2005/05/24(火) 22:29:21(ふるいのソース、処理系そのもののソースじゃなくて)
0301デフォルトの名無しさん
2005/05/24(火) 22:48:54array sieve[1000000]
i = 0
init:
sieve[i] = 1
i = i + 1
if i <= 1000000 then jump init
i = 2
loop1:
if sieve[i] = 0 then jump skip
j = i + i
loop2:
sieve[j] = 0
j = j + i
if j <= 1000000 then jump loop2
skip:
i = i + 1
if i <= 1000 then jump loop1
i = 2
fin:
primes = primes + sieve[i]
i = i + 1
if i <= 1000000 then jump fin
1000*1000; "未満の素数が"; primes; "個あります\n"
0302デフォルトの名無しさん
2005/05/24(火) 22:50:36array sieve[1000000]
i = 0
init:
sieve[i] = 1
i = i + 1
if i <= 1000000 then jump init
i = 2
loop1:
if sieve[i] = 0 then jump skip
j = i + i
loop2:
sieve[j] = 0
j = j + i
if j <= 1000000 then jump loop2
skip:
i = i + 1
if i <= 1000 then jump loop1
i = 2
fin:
primes = primes + sieve[i]
i = i + 1
if i <= 1000000 then jump fin
1000*1000; "未満の素数が"; primes; "個あります\n"
0303デフォルトの名無しさん
2005/05/24(火) 22:58:42初出の変数は0?
0304デフォルトの名無しさん
2005/05/24(火) 23:01:49labelに使われてない変数は初出時に0
0305デフォルトの名無しさん
2005/05/25(水) 01:00:41(efficeonならなおさらだ)、その段階でスタック操作がレジスタに割り当てられて、
内部的には似たようなコードで実行されてたりするのかね。
だとしたらすげー。
0306デフォルトの名無しさん
2005/05/25(水) 01:39:20速度全くといっていいほど変わらない
信じられない
Pen4ではどうなるのか知りたいなあ
0307デフォルトの名無しさん
2005/05/25(水) 12:07:51だとしたらマイクロオペコードすげー。
0308デフォルトの名無しさん
2005/05/25(水) 15:48:09ローカル変数実装するのが、(ちょっとだけ)面倒だから
まじめに比較したい人がいるなら、ソース出すけど
0309デフォルトの名無しさん
2005/05/25(水) 18:38:400310デフォルトの名無しさん
2005/05/25(水) 18:40:290311300
2005/05/26(木) 00:06:05ソースTNX!
へぼ言語どころか、めっちゃ気に入りそう(ハート)
あんた、センスあるねぇ。。。
0312デフォルトの名無しさん
2005/05/26(木) 02:47:24r = 1
fact:
r = r * i
i = i + 1
if i <= 1000000 then jump fact
"1000000! = "; r; "\n"
多倍長じゃないとか気にするな。
ただのベンチマークだから。
0313デフォルトの名無しさん
2005/05/26(木) 03:31:29もう飽きたし・・・
ttp://rerere.sytes.net/up/source/up6309.zip
0314デフォルトの名無しさん
2005/05/26(木) 19:17:26んなわけない
sieveみたいな2重ループ程度じゃ適当に作っても差はあんま出ない
>>313見た限りでは関数作れないっぽいけど
同じやり方でループのネスト深くしたり、fiboとかアッカーマン関数で
比較したりすると倍以上差が出てくるよ
VMとかインタプリタに比べれば問題ない差だろうけどね
0315デフォルトの名無しさん
2005/05/26(木) 22:17:47ヤッターマン関数って何?
ぐぐっても出てこんかったorz
0316デフォルトの名無しさん
2005/05/26(木) 22:32:08アッカーマン関数でもヤッターマン関数でも出てくるけど?
0317デフォルトの名無しさん
2005/05/26(木) 22:54:330318デフォルトの名無しさん
2005/05/27(金) 00:20:48Ackermannはコンパイラが末尾再帰を認識するかどうかでかなり差が出るはず
普通の処理でも変数の数や間接参照とかが増えてくれば違ってくる
0319デフォルトの名無しさん
2005/05/27(金) 01:08:54c:\bcc32\Bin の中に
bcc32.cfgを作って
-I"c:\Bcc32\include"
-L"c:\Bcc32\lib"
と書きます
ILINK32.cfgを作って
-I"c:\Bcc32\include"
-L"c:\bcc32\lib"
と書きます
http://www.kumei.ne.jp/c_lang/bcc/bcc_05.htm
ここのソースをコピペしてコンパイルします
bcc32 -W menu01.cpp のほうはうまく行きました
brc32 menu01.rc menu01.exe って入力しても、windous.hが見つからないとエラーでます
brc32 -i c:\bcc32\include menu01.rc menu01.exe とディレクトリを指定してやったらコンパイルできました
このようにディレクトリを指定せずにコンパイルさせる設定ってどこでするのでしょうか?
0320デフォルトの名無しさん
2005/05/27(金) 02:13:26http://pc8.2ch.net/test/read.cgi/tech/1115958601/
0321デフォルトの名無しさん
2005/05/27(金) 02:39:07これどういう意味?
0322デフォルトの名無しさん
2005/05/27(金) 05:46:160323remi@id5214.bbs.盗撮倶楽部
2005/05/27(金) 14:32:00向こうのbbsで質問したところ、こちらで聞いたほうがより高度な技法を
教えていただけると紹介いただき、まかりこしました。
のぞき穴最適化技法についてお知恵をお借りできませんか。
尚、使用レンズ口径は3.00mmです
よろしくお願いします
0324デフォルトの名無しさん
2005/05/27(金) 15:09:36見える範囲が終わったら視野を移動するかスクロールします。
ファイルの最後までいったらおしまいです。お疲れ様でした。
0325デフォルトの名無しさん
2005/05/27(金) 18:52:21業者にしてはまったく意味が無い。
誰かAIのテストでもしてるのか?
0326デフォルトの名無しさん
2005/05/27(金) 18:54:350327デフォルトの名無しさん
2005/05/27(金) 18:57:130328デフォルトの名無しさん
2005/05/27(金) 19:04:44すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ
メモ化すれば当然速くなる
0329デフォルトの名無しさん
2005/05/27(金) 20:24:000330デフォルトの名無しさん
2005/05/27(金) 20:50:020331デフォルトの名無しさん
2005/05/27(金) 20:52:11lispの例題とかで見たこと無い?
ものすげーえげつない再帰呼び出しのテストだと思ってくれ。
0332デフォルトの名無しさん
2005/05/27(金) 21:35:57すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ
0333デフォルトの名無しさん
2005/05/27(金) 21:41:48extern yattarman(){
printf("アフォ\n");
}
0334デフォルトの名無しさん
2005/05/27(金) 21:50:56ack(m-1, 1) if n = 0
ack(m-1, ack(m,n-1)) otherwise
0335デフォルトの名無しさん
2005/05/27(金) 21:53:10すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ
0336デフォルトの名無しさん
2005/05/27(金) 22:06:19各人がしたいように話を転がしていくだけだ。
0337デフォルトの名無しさん
2005/05/27(金) 22:08:150338デフォルトの名無しさん
2005/05/28(土) 00:28:16すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ
0339デフォルトの名無しさん
2005/05/28(土) 03:12:13そう、それだ!
0340デフォルトの名無しさん
2005/05/28(土) 04:15:37extern coffee(){
printf("ボケ\n");
}
extern lighter(){
printf("ゴルァ\n");
}
0341デフォルトの名無しさん
2005/05/28(土) 23:34:480342デフォルトの名無しさん
2005/05/29(日) 01:10:170343デフォルトの名無しさん
2005/06/04(土) 04:52:170344デフォルトの名無しさん
2005/06/04(土) 12:18:56どんな畑になることやらw
0345デフォルトの名無しさん
2005/06/04(土) 21:04:29???
0346デフォルトの名無しさん
2005/06/04(土) 21:16:13しぃーっ!見ちゃだめ!
0347デフォルトの名無しさん
2005/06/04(土) 22:01:33マニュアルには含まれてないと思うのですが、ありますか?
0348デフォルトの名無しさん
2005/06/04(土) 22:05:10人が見て理解できれば十分だと思うけど……
*.output ファイル自体をいじるとか、そういうことを考えているの?
0349デフォルトの名無しさん
2005/06/04(土) 22:34:23state 100
nls -> '\n' . (rule 200)
とかあった場合、この点(.)は何を意味するものなの?
0350デフォルトの名無しさん
2005/06/05(日) 00:02:52なくてもそれくらい見当つかないんじゃ困るとは思う。
0351デフォルトの名無しさん
2005/06/05(日) 00:12:320352デフォルトの名無しさん
2005/06/05(日) 00:22:290353デフォルトの名無しさん
2005/06/05(日) 03:26:05それ以前に2000年問題に対応してください
0354デフォルトの名無しさん
2005/06/05(日) 03:35:030355デフォルトの名無しさん
2005/06/05(日) 11:17:47LALR(1)
0357デフォルトの名無しさん
2005/06/05(日) 18:47:49標準かどうかしらんが
LALR(1)を勉強した人なら一瞬で分かる。
0358デフォルトの名無しさん
2005/06/05(日) 19:46:23畑は1年単位のサイクルの筈。
0359デフォルトの名無しさん
2005/06/05(日) 23:06:160360デフォルトの名無しさん
2005/06/06(月) 08:56:20なにをどうすればいいかわかりません
良い本、サイトなどあれば教えてください
0361デフォルトの名無しさん
2005/06/06(月) 09:14:010362デフォルトの名無しさん
2005/06/06(月) 10:51:43それとも複数の演算素子にコードを割り振る方?
0363360
2005/06/06(月) 17:05:121から勉強できるようなものがあると助かるとです
0364デフォルトの名無しさん
2005/06/06(月) 18:37:440365デフォルトの名無しさん
2005/06/06(月) 19:54:03まずは、りんご畑系の本を勧める。
0367デフォルトの名無しさん
2005/06/07(火) 23:42:17字句解析時に行ったほうがわかりやすいような気もするけど、構文解析時に行ったほうが柔軟になるし(予約語と同じ名前のメソッド名を定義できるとか)。
みなさんはどうしてますか。
0368デフォルトの名無しさん
2005/06/07(火) 23:52:07決めればいいんじゃない?
つまんない意見でごめんな
0369デフォルトの名無しさん
2005/06/07(火) 23:59:39ps.りんご畑だとパーサだったかな?
0370デフォルトの名無しさん
2005/06/08(水) 00:12:20×文法を合うように
○文法に合うように
0371デフォルトの名無しさん
2005/06/08(水) 01:10:48>予約語と同じ名前のメソッド名を定義できるとか
そもそもこんなことができると紛らわしいからよした方が…
ワインバーグが「プログラミングの心理学」のどっかにそんなことを書いていたはず。
0372デフォルトの名無しさん
2005/06/08(水) 01:17:01古い概念にとらわれるな
0373デフォルトの名無しさん
2005/06/08(水) 10:02:30歴史に学べ
0374デフォルトの名無しさん
2005/06/08(水) 10:04:01ifという名前のローカル変数を作ってしまってif文が使えない
とかいうことになるので、字句解析でやっといた方がいいんじゃないかな。
0375デフォルトの名無しさん
2005/06/08(水) 10:41:04IDENT expr IDENT block IDENT block
で$1と$3と$5がそれぞれ"if" "then" "else"であることを
アクションでチェック?現実に実現可能なもの?
0376デフォルトの名無しさん
2005/06/08(水) 12:25:520377デフォルトの名無しさん
2005/06/08(水) 12:26:47育男ちゃんに代打ちしてもらえばいいじゃん
0378デフォルトの名無しさん
2005/06/08(水) 13:08:320379デフォルトの名無しさん
2005/06/08(水) 13:39:49全てが式の言語なら式。Cみたいのなら文か関数。
例外処理のcatchのようなもんだ。
0380デフォルトの名無しさん
2005/06/08(水) 20:52:34極端な言語で言えば、LISP系はソースコードの何行目でエラーが出た、
とかの検出が困難。
S式として妥当ならreadが通ってしまう。
readに通した時点で行の情報は失われる。
よく知らないけどLISPのエラー検出の最小単位って関数かな?
エラー検出とかのためにリストがどの行のものか保存するLISP処理系ってある?
0381デフォルトの名無しさん
2005/06/08(水) 20:56:29bccではそのようなコンパイルオプションってないですか?
0382367
2005/06/08(水) 21:04:00そもそもの動機は、事前にすべての予約語を予測することができない(あとで必ず新しい予約語を追加したくなる)ので、
せめて識別子がくることが明確にわかっている場所でなら、予約語でも識別子として使えるようにしておけば、
新しい予約語を追加したときに、多少なりとも影響を小さくできるかなと思ったからです。
また個人的には「switch」や「end」をメソッド名として使えたらなーと思うことがあったので、メソッド名であることが明らかなら
予約語でもメソッド名にできるようにしたかったのです。(Rubyだとそれができるみたい)
しかーし、発想をかえまして、予約語になんらかのプレフィックスをつけることにしました。
PHPやPerlでは、変数名と予約語がかぶらないように変数名のほうにプレフィックスをつけますが、
それとは逆に予約語にプレフィックスをつければ、変数名やメソッド名とかぶらなくてすむんじゃないかと。
ifやwhileにプレフィックスをつける言語なんてきわものっぽいですが、なんか気に入ったのでこれでいくことにします。
スレ汚しすみませんでした。
0383デフォルトの名無しさん
2005/06/08(水) 21:06:52いや、俺が気になるのは、それが全てのエラーを正しく捕まえてくれるのかと、無限ループが起きないかどうかです
……多分、yyerrok の挙動の理解が甘いような気がするんだけど
根元に error を仕込みたいですけど、エラーリカバリ後のゴミが結構引っかかります orz
0384デフォルトの名無しさん
2005/06/08(水) 21:54:440385デフォルトの名無しさん
2005/06/08(水) 21:59:44どっからそういう話になるんだ?
誤爆?
0386デフォルトの名無しさん
2005/06/08(水) 22:12:00Parrotの実装について
0387デフォルトの名無しさん
2005/06/08(水) 23:24:31後から追加した予約語の文法定義はどうやって追加するの?
ってあたりが気になった。
0388デフォルトの名無しさん
2005/06/09(木) 20:22:41gaucheとか、エラー時に行番号を表示してくれるから何かやってるんじゃない?
0390デフォルトの名無しさん
2005/06/10(金) 00:05:29(´,_ゝ`)プッ
0391デフォルトの名無しさん
2005/06/10(金) 00:49:480392デフォルトの名無しさん
2005/06/10(金) 00:50:19法務省 第154回国会(常会)提出主要法律案 人権擁護法(案)
http://www.moj.go.jp/HOUAN/JINKENYOUGO/refer02.html
ズームイン朝でおなじみ、 辛坊治郎さんのコラムです。
ttp://shinsho.shueisha.co.jp/toranomaki/020724/index.html
こちらは櫻井よしこさんのコラムです。
ttp://blog.yoshiko-sakurai.jp/archives/2005/03/post_324.html
櫻井よしこ 人権擁護法案緊急リポ(SAPIO 6月22日号6月8日発売)
http://www.uplo.net/www/vip14260.jpg
http://www.uplo.net/www/vip14261.jpg
http://www.uplo.net/www/vip14262.jpg
http://www.uplo.net/www/vip14263.jpg
他にもこのような方々が危険性を危惧しています。
西尾幹二
ttp://nitiroku-nishio.jp/blog/
西村幸祐
ttp://nishimura-voice.seesaa.net/
タックルと報道2001とチャンネル桜の動画。
http://nur.ath.cx/no0/50/tset/no0050292.zip
参考資料 国連の勧告といわれる物
国内機構の地位に関する原則(パリ原則)
http://www.moj.go.jp/SHINGI/010525/refer05.html
0393デフォルトの名無しさん
2005/06/10(金) 09:18:46するよん。バックトレースにも表示される。
0394デフォルトの名無しさん
2005/06/10(金) 13:02:02字句解析で識別するしかない。
予約語のない(キーワードと同じ変数名が使える)言語としてはPL/Iがある(あっ
た、というべきか)。が、たとえ予約語のない言語でもキーワードは字句解析
で識別しないとダメだろう。
そのような言語では、具体的にはこういうふうにする。
stmt: IF expr THEN ....(略)
expr: Identifier
Identifier: IDENTIFIER | IF | THEN ...
むろんCのような文法ではこれはconflictをおこすので無理だが、
PL/Iならなんとかなるかもしれない。もっともPL/IがLR(1)で記述できるかど
うかは不勉強にして知らない。もっと長い先読みが必要かもしれない。
0395りんごタン
2005/06/11(土) 11:18:27> むろんCのような文法ではこれはconflictをおこすので無理だが、
> PL/Iならなんとかなるかもしれない。
どういうことですか?
PL/1 自体、リアルでは使ったこと無いんですが(つまり、本の知識のみ)
conflict の発生に大きな違いがでますか?
0396デフォルトの名無しさん
2005/06/11(土) 12:39:18LISP みたいに () で囲むというような規則を厳守すれば、キーワードの識別は意味解析まで遅らせられる気がしますが
0397デフォルトの名無しさん
2005/06/12(日) 10:53:24RubyComp: A Ruby-to-LLVM Compiler Prototype (Anders Alexandersson, M.S. Thesis)
Abstract:
Dynamic programming languages are not generally precompiled, but are interpreted at run-time.
This approach has some serious drawbacks, e.g. complex deployment,
human readable source code not preserving the intellectual properties of the developers and
no ability to do optimizations at compile-time or run-time.
In this paper we study the possibility to precompile the Ruby language, a dynamic object-oriented language,
into Low Level Virtual Machine (LLVM) code for execution by the LLVM run-time,
a compiler framework for lifelong optimization of an application.
The result of the project is a Ruby compiler prototype, describing the infrastructure and overall design principles
to map the highly dynamic properties of the Ruby language into low-level static constructs of the LLVM language.
The LLVM framework supports different hardware platforms, and by using LLVM as the target of compilation
the benefits of that portability are gained.
0398デフォルトの名無しさん
2005/06/12(日) 13:34:32漏れ自身はRubyは全然使ってないんだが、
世界中にファンが居るんですね。
動的言語としてのRubyの言語仕様のうち、
コンパイルしにくい要素って何なのでしょうか
0399デフォルトの名無しさん
2005/06/12(日) 17:17:280400デフォルトの名無しさん
2005/06/12(日) 17:23:550401デフォルトの名無しさん
2005/06/12(日) 17:38:48>>400
ないの?
lisp系以外でevalのある言語のコンパイラってある?
perlccやexerbのようなのでなく。
0402デフォルトの名無しさん
2005/06/12(日) 17:53:24Lisp と同じようにすれば良いかと
(スタンドアローンは要件に無かったから)
0403デフォルトの名無しさん
2005/06/12(日) 18:29:580404デフォルトの名無しさん
2005/06/12(日) 18:31:030405デフォルトの名無しさん
2005/06/12(日) 19:38:280406デフォルトの名無しさん
2005/06/12(日) 20:48:332大棒
0407デフォルトの名無しさん
2005/06/12(日) 21:30:37コンパイルしにくいというよりは、staticに決めにくいということでは?
メソッド呼び出しをstaticにすることなんか絶対にできないし、
クラス定義でさえ実行文だから、staticにクラスを作成しておくこともできないし、
ローカル変数と引数なしのメソッドの見分けもつかないし。
staticにできることといえば、事前に構文解析してツリーつくるぐらいだけじゃねえか?
0408デフォルトの名無しさん
2005/06/12(日) 22:13:27Rubyは知らないが、アンタの話がピント外れなのはよく判る。
0409デフォルトの名無しさん
2005/06/12(日) 22:34:09スレ的にピントをぼかしてるのはおまい様ではないのかえ?
0410デフォルトの名無しさん
2005/06/12(日) 22:37:21>staticにできることといえば、事前に構文解析してツリーつくるぐらいだけじゃねえか?
そう、exerbはまさにそれ。
でもevalがあるからパーサが不要というわけじゃない。
結局スクリプトにインタプリタをくっつけただけ(に毛が生えた程度)
0411デフォルトの名無しさん
2005/06/12(日) 23:01:58でもその”毛”は結構デカイんだよな(w
0412デフォルトの名無しさん
2005/06/12(日) 23:06:400413デフォルトの名無しさん
2005/06/12(日) 23:13:18lispのevalってコンパイラではどんな風に実装されてるの?
多分S式に特化した工夫があるんだよね。
>>411
作るのは大変だろうけど、そんなに実行効率変わるもんなの?
0414デフォルトの名無しさん
2005/06/12(日) 23:33:120415デフォルトの名無しさん
2005/06/13(月) 00:13:17ほっといてやれよ、408が知らないのはRubyだけじゃないだろ。
0416デフォルトの名無しさん
2005/06/13(月) 00:51:55コードと見なしてマクロ展開しながら評価してくだけ。
S式になってる時点で字句解析が済んだリストの状態ってことだから、
たとえば動的に作成した引数リストを渡したいだけならreadしたものを
そのままapplyに渡せたりするので、少し工夫すればevalを使う
必要はあんまりない。
ほとんどコンパイル済みのクロージャとかで間に合う。
この辺rubyとかperlのevalの事情とはだいぶ違う。
0417デフォルトの名無しさん
2005/06/13(月) 01:18:371) プログラム全体のS式(パースなどはされてるかも)
2) S式を評価するインタプリタ(eval)
に加えて、最適化用に
3) defineされた関数をコンパイルしたネイティブコード
があらかじめ含まれてる、って理解でいいかな。
しかし一部のschemeコンパイラ(chezとか)の異常な速さには、
もっと秘密がありそうだw
0418デフォルトの名無しさん
2005/06/13(月) 01:30:090419デフォルトの名無しさん
2005/06/13(月) 01:44:14ChezやGaucheなどの速い部類のschemeは
read後のevalの代わりにcompileフェーズが入る。
もちろんマクロはcompile直前に全て展開される。
read→compile→run(→write)
0420デフォルトの名無しさん
2005/06/13(月) 01:59:54あ、schemeはリフレクションみたいにプログラムをデータとして扱うことはできないのか。
じゃquoteされてるとこだけでいいのかも。(自信なし)
>>419
あー、JITか。なるほどなるほど。サンクスです。
Rubyも爆速コンパイラ作ってJITやhotspotすればいいんだな。(無理)
0421デフォルトの名無しさん
2005/06/13(月) 02:01:09むしろevalが出てくるLISPコードは下手糞が書いたものか、
自分で評価周りを拡張するとかの特殊用途ぐらい。
0422デフォルトの名無しさん
2005/06/13(月) 02:02:31誤解があるようだけど
schemeのS式もLISPと同じくプログラム=データですよ。
0423デフォルトの名無しさん
2005/06/13(月) 02:09:49(define (f x) x) の f から '(lambda (x) x) を取り出すみたいな。
だとしたら>>417の1がいるかな、と思ったんですが。
0424デフォルトの名無しさん
2005/06/13(月) 02:46:12かなり昔のLISPの本を読んだね?
今はdefine定義された関数を評価するとクロージャという
Schemeオブジェクトとして抽象化される。
クロージャからデータ(コードの印字表現)は基本的に取り出すことはできない。
コンパイルすると不要な情報は消えてしまうし、できたとしても処理系依存で実装される。
もちろん取り出せる処理系もある。
まあ、これ以上詳しくはschemeスレで聞くか、適当な入門サイトでも見た方が。
0425398
2005/06/13(月) 12:14:36>>397の研究内容を踏まえて、
動的言語としてのRubyの言語仕様のうち、
コンパイルしにくい要素って何なんだろうね。
0426デフォルトの名無しさん
2005/06/13(月) 13:26:07は?今まで言われてきた通りじゃないの?
>the main difficulty of compiling Ruby is the fact that the program can
>be updated during run-time
とあるから、論文の著者自体は>>407を問題視してると思われ。
つか、論文あるんだから読めよ。
0427デフォルトの名無しさん
2005/06/13(月) 13:43:04なるほど、ありがとうございました。
schemeというとプログラム=データだってよく聞くんですが、
その本質の意味や利点をいまいち理解できてないんですよね。
入門サイトに行ってきます。
0428デフォルトの名無しさん
2005/06/13(月) 14:05:56ちょっと目を通した。
>>407そのまんまの話で、proof of conceptという事でがっくり。
今後に期待といった感じか。
0429398
2005/06/13(月) 18:15:38論外だな。もう一回言うね。
>>397の研究内容を踏まえて、
動的言語としてのRubyの言語仕様のうち、
コンパイルしにくい要素って何なんだろうね。
0430398=428 ◆Nj.Bk96Vy2
2005/06/13(月) 18:21:490431デフォルトの名無しさん
2005/06/13(月) 19:47:55そもそもrubyはコンパイルできないじゃん
しにくいという以前に、できない言語なんだよ
0432デフォルトの名無しさん
2005/06/13(月) 20:41:350433デフォルトの名無しさん
2005/06/13(月) 21:28:11はぁ?
そんな言語ありませんが?
アフォですか?
0434デフォルトの名無しさん
2005/06/13(月) 21:44:050435デフォルトの名無しさん
2005/06/13(月) 21:44:440436デフォルトの名無しさん
2005/06/13(月) 22:35:400437デフォルトの名無しさん
2005/06/13(月) 23:19:26発狂?
0438デフォルトの名無しさん
2005/06/13(月) 23:23:150439デフォルトの名無しさん
2005/06/13(月) 23:25:500440ptr->433
2005/06/14(火) 00:13:090441デフォルトの名無しさん
2005/06/14(火) 00:31:05コンパイルするメリットがあるかどうかはともかく。
0442デフォルトの名無しさん
2005/06/14(火) 01:18:120443デフォルトの名無しさん
2005/06/14(火) 03:51:04>>397の研究内容を踏まえて、
動的言語としてのRubyの言語仕様のうち、
コンパイルしにくい要素って何なんだろうね。
0444デフォルトの名無しさん
2005/06/14(火) 03:57:460445デフォルトの名無しさん
2005/06/14(火) 07:50:410446デフォルトの名無しさん
2005/06/14(火) 07:59:05こういう奴がいると強制ID制度ほしくなるな。
0447デフォルトの名無しさん
2005/06/14(火) 10:36:44件の論文は、中間コードへのコンパイルの事だと思うのだけど。Ruby-toLLVM compiler
こっちではネイティブコードへのコンパイルを想定してる様な雰囲気ですよね。
>>428
sRubyについて調べてみては?
0448デフォルトの名無しさん
2005/06/14(火) 10:54:58最初からLLVMって書いてあるのに。
0449デフォルトの名無しさん
2005/06/14(火) 11:02:24> sRubyについて調べてみては?
えぇ〜と、なんか前聞いた覚えあるんだけどこれかな?
http://thekode.net/misc/sruby.pdf
Robert Feldt, sRuby - A Ruby dialect for low-level programming
0450デフォルトの名無しさん
2005/06/14(火) 11:15:290451デフォルトの名無しさん
2005/06/14(火) 11:51:46本質的に他言語への翻訳でしょ。
コンパイルの定義で揉めるというのは、
「インタプリタとスクリプトをくっつけて単体実行可能にしたもの」
を出力するのはコンパイルと言えるか否か、という話じゃないの?
>>450
まあでも、字句解析構文解析のかみ合わなくて不毛な話題よりは
今の方が面白いよ。
0452デフォルトの名無しさん
2005/06/14(火) 18:30:27>>397の研究内容を踏まえて、
動的言語としてのRubyの言語仕様のうち、
コンパイルしにくい要素って何なんだろうね。
0453デフォルトの名無しさん
2005/06/14(火) 19:03:05まずはコンパイルしにくくない要素のコンパイルをあなたが説明してね。
0454デフォルトの名無しさん
2005/06/14(火) 19:55:330455デフォルトの名無しさん
2005/06/14(火) 20:22:40lispもなw
0456デフォルトの名無しさん
2005/06/14(火) 21:15:48Ruby で荒れる理由: ユーザが厨だから
0457デフォルトの名無しさん
2005/06/14(火) 21:18:31Lispユーザーが平気でこう言うあたりが、荒れる真の理由かねw
0458デフォルトの名無しさん
2005/06/14(火) 21:39:520459デフォルトの名無しさん
2005/06/14(火) 21:45:030460デフォルトの名無しさん
2005/06/14(火) 21:46:43こういう FUD を平気で言うあたりがアンチが厨だという証拠w
0461デフォルトの名無しさん
2005/06/14(火) 21:50:000462デフォルトの名無しさん
2005/06/14(火) 21:55:53アンチLISP=Rubist
アンチRuby=LISPer
0463デフォルトの名無しさん
2005/06/14(火) 21:58:230464デフォルトの名無しさん
2005/06/14(火) 22:02:58すなわち、こういう事のようだな(↓)
LISPシンパ≒Rubyシンパ
0465デフォルトの名無しさん
2005/06/14(火) 22:18:290466デフォルトの名無しさん
2005/06/14(火) 22:20:02たったこの一言が原因で、しつこく粘着して
しっかりと荒らすんだから、ある意味すごい
0467デフォルトの名無しさん
2005/06/14(火) 22:28:370468デフォルトの名無しさん
2005/06/14(火) 22:46:480469デフォルトの名無しさん
2005/06/14(火) 22:55:050470デフォルトの名無しさん
2005/06/14(火) 23:11:53単に話が理解できないバカが原因だろ?
0471デフォルトの名無しさん
2005/06/14(火) 23:11:57Li(ry
Ru(ry
りん(ry
0472デフォルトの名無しさん
2005/06/14(火) 23:14:03ってことは、煽りでなくて若者には人気がないってことですか?(LISP)
素朴な疑問としてなんでなんでしょうね?
(書籍が少ないから?)
0473デフォルトの名無しさん
2005/06/14(火) 23:15:10はげどう
0474デフォルトの名無しさん
2005/06/14(火) 23:19:01↓で同じ質問をして、身をもって知ってみてはどうか?
http://pc8.2ch.net/test/read.cgi/tech/1115901841/
しかし粘着がまだいるな
0475デフォルトの名無しさん
2005/06/14(火) 23:24:31書籍って言語解説書のこと?
そんなもの必要なの??
要らないと思うなぁ。
0476デフォルトの名無しさん
2005/06/14(火) 23:27:03Lispの黄金時代というのが太古の昔あっての。
汎用機屋以外は、猫も杓子もLisp Lisp、
Lispしか動かないマシンが続々と発売された。
普通の商売としてLispを使った経験のある人間がその世代なんじゃ。
0477デフォルトの名無しさん
2005/06/14(火) 23:31:32数式処理屋、エキスパートシステム屋、AI屋、あと画像処理屋くらいなもんだろう
Lisp専用機使ってたのは
0478デフォルトの名無しさん
2005/06/14(火) 23:37:11LISPの機能とかは他の言語で代用は無理だからなあ。
まあEmacsなかったらm4以下の存在だったかもしれない。
0479デフォルトの名無しさん
2005/06/14(火) 23:39:590480デフォルトの名無しさん
2005/06/14(火) 23:42:360482デフォルトの名無しさん
2005/06/14(火) 23:56:080483デフォルトの名無しさん
2005/06/15(水) 00:02:03「Lisp専用機」という存在自体が今の人間にとってはそれこそ「ありえん」だろう。
この黄金期も短かった。
最大の理由は、当時登場した万能太陽神に信仰を奪われたこと。
おまけの理由としては、一大国家施策としてヤンキーでなくおふらんすの言語を推進したこと。
今となっては>>478が言うように、エディタのおまけ言語としてしかLispをさわったことのない
人間のほうが多くなってしまった。
0484デフォルトの名無しさん
2005/06/15(水) 00:04:03ワークステーション・Lispマシン
http://www.ipsj.or.jp/katsudou/museum/history/history_ws.html
http://www.ipsj.or.jp/katsudou/museum/history/profile_ws.html
1974:MIT:CONSマシン
1974:Xerox PaloAlto:Altoワークステーション上にInterLispを移植
1976:MIT AIラボ:CADRマシン
→Symbolics、LMI(LISP Machine Inc.)社の商用Lispマシンの原型となった
1979:神戸大:神戸大Lispマシン開発
http://www.ipsj.or.jp/katsudou/museum/computer/Kobe-Lisp.html
1982:大阪大:LispマシンEVLIS開発
http://www.ipsj.or.jp/katsudou/museum/computer/Handai-EVLIS.html
1983:電電公社:通研LISPマシンELIS試作機稼動
http://www.ipsj.or.jp/katsudou/museum/computer/NTT-ELIS.html
1984:理研:数式処理計算機FLATS開発
http://www.ipsj.or.jp/katsudou/museum/computer/Riken-FLATS.html
1984:富士通:Lispマシン FACOM α 発表
http://www.ipsj.or.jp/katsudou/museum/computer/FUJ-Alpha.html
0485デフォルトの名無しさん
2005/06/15(水) 00:08:57フランス産はどれも優雅だねぇ。
0486デフォルトの名無しさん
2005/06/15(水) 00:29:25OCaml は何やら汚らしい感じがするが
0487デフォルトの名無しさん
2005/06/15(水) 00:37:500488デフォルトの名無しさん
2005/06/15(水) 01:59:55すげーな富士通までやってたのかw
当時どれだけ影響力あったかわかるな。
0489デフォルトの名無しさん
2005/06/15(水) 02:15:24神戸大TAKITEC→富士通FACOM α(試作機)→理研FLATS(発案:故後藤英一先生, 設計協力:富士通, 製作:三井造船)→FLATS2
→富士通FACOM α(製品版)
阪大EVLIS(並列処理)…→?
湯浅先生達の超並列機は、どういう技術的系譜にあるのだろう・・・?
0490489
2005/06/15(水) 02:29:29・神戸大TAKITEC→富士通FACOM α(試作機)→富士通FACOM α(製品版)
\NTT武蔵野通研 ELIS → NTT-IT ELIS-8100/VME/8200 (LSI開発協力:沖電気)
・理研FLATS(発案:故後藤英一先生, 設計協力:富士通, 製作:三井造船)
→後藤磁束量子情報プロジェクト FLATS2
・阪大EVLIS(並列処理)…→?
0491デフォルトの名無しさん
2005/06/15(水) 02:29:360492デフォルトの名無しさん
2005/06/15(水) 02:31:330493デフォルトの名無しさん
2005/06/15(水) 02:41:27Rubyが出てくると荒れてるだけ
0494デフォルトの名無しさん
2005/06/15(水) 02:51:33これだけスレ違いのレスが続いて何が「Lispは別に問題ないよ」だよ
0495デフォルトの名無しさん
2005/06/15(水) 03:19:400496デフォルトの名無しさん
2005/06/15(水) 08:25:59CommonLisp Scheme Part13
http://pc8.2ch.net/test/read.cgi/tech/1115901841/
0497デフォルトの名無しさん
2005/06/15(水) 13:18:50地面に置かれた砂糖に集まるアリみたい。
アリは嫌いだよ。急所噛まれた事あるから。
0498デフォルトの名無しさん
2005/06/15(水) 14:30:40>なんだRubyの人って説明不足で揉めるような書き込みが大得意なんだな。
この内容で揉めたほうがマシだったな。現状よりは。
0499デフォルトの名無しさん
2005/06/15(水) 18:51:24LISP専用マシンが何故必要とされたの?
今に例えると、例えば、 Ruby専用マシンみたいなものだよね?
全然考えられない!
0500デフォルトの名無しさん
2005/06/15(水) 19:15:090501デフォルトの名無しさん
2005/06/15(水) 19:26:30速いからだよ
0502デフォルトの名無しさん
2005/06/15(水) 20:16:45特定の言語を効率よく実行できる専用マシンは、昔のようにハードのオマケでソフトが在った時代には普通だった
ちなみに、今の御時世では Java 専用マシンがあったりする
別に不思議じゃない
0503デフォルトの名無しさん
2005/06/15(水) 20:27:33それ以外のアーキテクチャはまだまだ未発達もしくは未普及だった。
当時の汎用機アーキテクチャでは必ずしも効率的に実行できない処理のために、
科学技術計算専用マシンや特定言語専用マシンの研究が始まりつつあった。
・MITのMacプロジェクトでLispアプリケーションを蓄積したが、
実行には高価な中〜大型汎用機(ITS, GE Multics, DEC-10/20)が必要で、
小回りが効かなかった。
そこでPDP並みの価格で中〜大型機並みの性能を持つ
Lisp用パーソナル・ワークステーションが開発された。
0504デフォルトの名無しさん
2005/06/15(水) 22:11:570505デフォルトの名無しさん
2005/06/15(水) 22:22:50>>500-504まで、誰もわかってないようだからわからないことを気に病むことはないよ。
同時代のおっさんにはあまりに自明のことなんだが、
わかったからといって何かの足しになるわけでもなし。
スレ違いだし、このへんでひっぱるのはやめよう。
0506デフォルトの名無しさん
2005/06/15(水) 22:34:420507デフォルトの名無しさん
2005/06/15(水) 22:50:41おっさんネタはさっぱりわからんなあ
昔のPC板ってのがあるから
いいかげん懐古ネタは他所でやんなさいよ
昔のPC
http://bubble3.2ch.net/i4004/
0508デフォルトの名無しさん
2005/06/15(水) 22:54:22いやPCの話じゃないんだが…
と一応ツッコミは入れとくが、スレ違いということには同意
0509デフォルトの名無しさん
2005/06/15(水) 23:04:49ちらっとその板みたが、自分からみたらちっとも昔ではないのですな。
すでにPC前提ってあたりで昔ではないのですよ。
荒らすつもりじゃ無く純粋に懐古趣味としての昔話かと思って期待がはずれたのです。
0510デフォルトの名無しさん
2005/06/15(水) 23:42:23アホか。リアルタイムで知らない事でも、
文献やWebを駆使して勉強するもんだよ。
特にLispなんて80年代に最盛期を迎えた言語だからな
0511デフォルトの名無しさん
2005/06/16(木) 19:36:390512デフォルトの名無しさん
2005/06/16(木) 20:28:40> MLは今なんだよ…。
いいえ。
0513デフォルトの名無しさん
2005/06/16(木) 21:22:310514デフォルトの名無しさん
2005/06/16(木) 21:24:57桜木君…
0515デフォルトの名無しさん
2005/06/16(木) 22:03:410516デフォルトの名無しさん
2005/06/16(木) 23:46:50| L_ , - ´  ̄ ̄ ` ヽ 、 ',ヽー/_ヽーヽ/ヽイ _) u
な < / ヽ, / λ ヽ. b
の // イ ヽ .i く チ\イ_レヽ_/ルノヽ ) y
か \! !イ-/─レイ、ル─ヽ, / >i .レイ ,r=、 ,.-=ゝiイ ヽ, y
| .| ̄i /イ,r=-、 ,-=ヽiミ}<] !レイレi { !_r! i、_r! リ ) 最
,、 / .レ| i { i、r! i、_r!} ア | | !,"" ___ "" ! ! く. 高
` | i,"" ____ "" | | | .| ! i ヽ、 ! j ,イレ > ! !
i リヽ、 ! `j ,イ !| | |ノル `レ ,_--_イiレ - 、/ ̄ヽ、
レi レ`レ ,--_イ レ、 リレ' rイくi-/ / , ---ヽ、/__
人/ヽ、_ ,イくi--//__人__人_ ,く,_[><]__//_(⌒)-、i,_ ノ
はあ / / i (>Y<) ) 最R今 ( ,ヽi ' (_ゝ_ヽ_ノノノ ´
はは i / .! `´ ). 高u 夜 ( ./ .! ヽ、___ノ
はは > / イ、 ヽ, ! b も ( / <、_ 、 _ く
はは < / ヽr----─> ! y ( / / / ヽ\
0517516
2005/06/17(金) 00:33:330518俺の学生時代はi386でGoferかな
2005/06/17(金) 00:36:23さっさと氏ねよ
>>511-512
定理証明系の開発は70年代
SML/NJの開発は80年代半ば
その後87〜98がHaskell標準化・・・もしかして進歩止まってるやん
0519デフォルトの名無しさん
2005/06/17(金) 00:39:16スレ違いのお前もな
0520デフォルトの名無しさん
2005/06/17(金) 00:42:570521デフォルトの名無しさん
2005/06/17(金) 00:44:16どこからどう見てもスレ違い
0522デフォルトの名無しさん
2005/06/17(金) 00:45:07まともな人はしばらくお待ち下さい
0523デフォルトの名無しさん
2005/06/17(金) 00:47:390524デフォルトの名無しさん
2005/06/17(金) 03:45:370525デフォルトの名無しさん
2005/06/17(金) 20:09:56ではmallocとfreeについて話そう。
0526デフォルトの名無しさん
2005/06/17(金) 20:11:36やっぱこのスレではコンパイラについて話さないとな
0527デフォルトの名無しさん
2005/06/17(金) 21:22:290528デフォルトの名無しさん
2005/06/19(日) 04:50:11つかLispもMLも禁止の言語処理系スレって…。
>>526
コンパイラの定義を教えてくれ。
>>527
http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?lambda+lifting
0529デフォルトの名無しさん
2005/06/19(日) 09:55:44教えて下さい。
0530デフォルトの名無しさん
2005/06/19(日) 11:02:50http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
0531デフォルトの名無しさん
2005/06/19(日) 15:27:01よくわからない
変数が増えただけに見えるorz
引数渡しにするってことかな?
0532デフォルトの名無しさん
2005/06/19(日) 16:10:29そんな話はLispやMLのスレでやれよ
0533デフォルトの名無しさん
2005/06/19(日) 16:52:39処理系を作る立場で考えてみると良いんじゃないかな。
0534デフォルトの名無しさん
2005/06/19(日) 18:01:40それって最適化でしょ?メインは
0535デフォルトの名無しさん
2005/06/19(日) 19:57:38Dragon Bookでいいんじゃないの。
0536デフォルトの名無しさん
2005/06/19(日) 20:34:44良書には違いないが、LALRつーわけどもないだろ。
0537デフォルトの名無しさん
2005/06/19(日) 20:56:36?
0538デフォルトの名無しさん
2005/06/19(日) 21:05:16教えて下さい。
0539デフォルトの名無しさん
2005/06/19(日) 21:08:06・コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
0540デフォルトの名無しさん
2005/06/19(日) 21:13:07Dragon Bookでいいんじゃないの。
0541536
2005/06/19(日) 22:33:020542デフォルトの名無しさん
2005/06/20(月) 00:02:19> LALRつーわけでもないだろ。
?
コンパイラ本の一つも読まずにアフォレス、とても痛い小学生だな
0543デフォルトの名無しさん
2005/06/20(月) 07:23:45教えて下さい。
LALRの良書っていうわけでも無いだろ
ってことか?
じゃあ>>541がLALRの良書を薦めてくれ。
0544デフォルトの名無しさん
2005/06/20(月) 17:15:350545デフォルトの名無しさん
2005/06/20(月) 19:51:09それってyaccの入門書のレベルな希ガス
0546デフォルトの名無しさん
2005/06/20(月) 21:58:07いや、案外その手の本は扱ってない。
0547デフォルトの名無しさん
2005/06/20(月) 22:17:16LALRわかんなきゃyacc/bisonは使えないじゃん
0548デフォルトの名無しさん
2005/06/20(月) 22:28:32理屈ではそうだけど、実際はそうじゃないんだよ。
0549デフォルトの名無しさん
2005/06/21(火) 01:20:40わけわかんないけど使ってるって?へ
0550デフォルトの名無しさん
2005/06/21(火) 01:31:52LALRアルゴリズムの詳細なんて知らなくても良い
ということじゃないかなあ。
いや、ある程度は知ってないとまずいかな。
yaccの作成するテーブルがどういう理屈で作成されてるかぐらいは・・
0551デフォルトの名無しさん
2005/06/21(火) 01:33:23単にyaccが吐いたコードにアクション追加したり文法をデバッグするのが無理
0552デフォルトの名無しさん
2005/06/21(火) 04:07:32どうだろう?yaccって結構簡単に使えるけど、それとLALRの理解は別だと思う。
極端な話し、関数電卓ぐらいのパーサならLALRの知識なんて必要ないし。
ちがうかな?
0553デフォルトの名無しさん
2005/06/21(火) 04:29:040554デフォルトの名無しさん
2005/06/21(火) 09:30:36LALRだけ勉強しようというのは効率が悪いから
普通の文法解析の教科書では一通りの文法を説明している。
・再帰下降パーサで書ける文法
・LALRパーサじゃないと書きにくい文法
・その他、演算子順位文法、属性文法
とか知っておくと、扱いたい文法が上記のいずれに近いのか、
素早くもしくは効率的に実装するには、どうすれば良いか
判断できるようになると思う。
0555デフォルトの名無しさん
2005/06/21(火) 11:58:26ただし,底辺の長さ,高さ,面積の値を入れる変数名をそれぞれteihen, takasa,mensekiとし,いずれも実数型(double型)とする.
void main( void )
{
double teihen, takasa, menseki;
printf( "底辺は?\n" ); /* 入力を促すメッセージを表示 */
scanf( "%d", &teihen );
menseki = teihen * takasa / 2;
printf("%f\n",menseki);
}
これ誰か完成させてくれ
0556デフォルトの名無しさん
2005/06/21(火) 12:28:110557デフォルトの名無しさん
2005/06/21(火) 13:09:35この文字だけ見て書き込んでいるとしか思えない致傷多すぎる。
0558デフォルトの名無しさん
2005/06/21(火) 13:24:090559デフォルトの名無しさん
2005/06/21(火) 21:03:15それを考慮すると行番号の計測ってどうやるんでしょうか
0560デフォルトの名無しさん
2005/06/21(火) 21:13:370561デフォルトの名無しさん
2005/06/21(火) 23:43:160562デフォルトの名無しさん
2005/06/22(水) 01:15:480563デフォルトの名無しさん
2005/06/22(水) 01:24:54むしろ他人の作った完成品を貶したり褒めたりするのはよそでやってほしい。
0564デフォルトの名無しさん
2005/06/22(水) 04:10:23他人の作った完成品の工夫を見て学ぶのもおもしろいよ。
つか、このスレはいつまでたっても構文解析か荒らしの話しかしてないし…。
0565デフォルトの名無しさん
2005/06/22(水) 13:00:54意味解析・目的コード生成 ⇒ 各々の機械語スレへどうぞ
各種言語に依存した…… ⇒ 厨は引っ込め
このスレは、何について話すスレなんだ?
0566デフォルトの名無しさん
2005/06/22(水) 13:20:55実装レベルの話はどうでもいい。
0567デフォルトの名無しさん
2005/06/22(水) 13:21:16というか厨はお前だろ。
0568デフォルトの名無しさん
2005/06/22(水) 16:42:34うーん、そこで「他でヤレ」っつってるのは、
単なる荒らしだと思うよ。相手にする必要なし。
つか荒らし被害者のフリして荒らすなって(笑
0569デフォルトの名無しさん
2005/06/22(水) 18:08:49> 字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,
> CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,
> それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。
> 意味論に関する話題も歓迎です。
字句解析・構文解析以外にも沢山話題はあるじゃない。
0570デフォルトの名無しさん
2005/06/22(水) 18:12:09最近、プログラミング言語系の開発とかやってないなぁ〜(遠い目
0571デフォルトの名無しさん
2005/06/22(水) 18:17:23最近は制御フロー解析はstructuralな手法に移りつつあるようだけど、reducibleでないループ
はどうしてる? そこだけ古典的な方法でやってる?
0572デフォルトの名無しさん
2005/06/22(水) 18:20:19>>570に書いたとおり、俺はスルー
0573572
2005/06/22(水) 18:23:37コンパイラーに関する体系的な勉強が止まってる。
ドラゴンブックに型変数の話がちょこっとしか載ってなくて、興味が萎えたんだよなぁ。
0574デフォルトの名無しさん
2005/06/22(水) 18:33:58y : { x in Int | P(x)}みたいな感じで。
ただしimpredicativeなものは勘弁。
0575デフォルトの名無しさん
2005/06/22(水) 18:34:320576デフォルトの名無しさん
2005/06/22(水) 18:52:50Pascalの範囲型みたいな話だね。
構文上の判りやすさはさておいて、
そーゆーのはObject指向で解決できるのでわ?
(constractorや各種演算子で範囲型を外れないようにチェックして、
もし外れたら例外発生、とか)
0577デフォルトの名無しさん
2005/06/22(水) 18:55:320578デフォルトの名無しさん
2005/06/22(水) 19:10:02通常のOOプログラミングでは、型とクラスの相違は曖昧にされる事が多い。
理論では識別したがるみたいだけどw
0579デフォルトの名無しさん
2005/06/22(水) 19:12:12何度か読んだ覚えがあるけどど忘れした
0580デフォルトの名無しさん
2005/06/22(水) 20:13:180581デフォルトの名無しさん
2005/06/22(水) 20:31:22そういう意味じゃないの?
0582デフォルトの名無しさん
2005/06/22(水) 20:32:480583デフォルトの名無しさん
2005/06/22(水) 21:06:03それまで言語処理系の内部機構だったものが、
言語ユーザに安全かつ判りやすい形で開放される事がある。
・・・メモリー・アロケーション然り、ユーザ定義型しかり。型変数、型推論も。
Lispとか、OOとか、そーゆー「開放」を前倒しした形で試すには、
良いプラットフォームなのでわ?と
0584デフォルトの名無しさん
2005/06/22(水) 21:11:57日本語でお願いします
0585583じゃないが
2005/06/22(水) 21:15:44って読んだ
0586デフォルトの名無しさん
2005/06/22(水) 21:21:16これまでの言語処理系発展の歴史の中で、
それまで言語処理系内部の仕組みとしてユーザの立ち入りを禁止していた機構
例えば:メモリーの動的アロケーション、型の追加定義、型を推測する仕組み
が、簡潔かつ安全な形でユーザに開放されてきた。
・Lispのように高階関数で言語の実行機構を弄る事ができる言語、
・オブジェクト指向言語のように、データと操作をカプセル化して新しい型を定義しやすい言語、
は、上記のような「新しい機構のユーザへの開放」を実験するのに適しているのではないか?
以上
0588583じゃないが
2005/06/22(水) 21:25:170589デフォルトの名無しさん
2005/06/22(水) 21:28:39さっき翻訳の真似事で下訳してたから、
むちゃくちゃな語順の日本語をしゃべってるかもしれない・・・
0590デフォルトの名無しさん
2005/06/23(木) 00:07:11アフォ
0591デフォルトの名無しさん
2005/06/23(木) 00:11:250592デフォルトの名無しさん
2005/06/23(木) 02:12:10コンパイルも通って実行もできる
でも実行した結果は意味不明
そんな感じの文章
0593デフォルトの名無しさん
2005/06/23(木) 04:16:570594デフォルトの名無しさん
2005/06/24(金) 04:24:43O'Reilly の Lex & Yacc には少なくても無い。
用語の説明コーナーに出ているだけ
0595デフォルトの名無しさん
2005/06/24(金) 22:01:28スクリプト言語を作ろうとしてて
入力にエラーがあったときに詳細なエラーメッセージを出したいんですが
どのようにしたらいいでしょうか?
例えば
if x != 0 {
^
'(' expected.
とか出したいんですが、そもそも「if文の途中」というのが
取れるんでしょうか?
また、現在注目しているトークンの値(yylexからの戻り値)
はどこかに格納されてるでしょうか?
0596デフォルトの名無しさん
2005/06/24(金) 22:08:570597デフォルトの名無しさん
2005/06/24(金) 23:12:59厨だから、ちょっとこの二つが出てくるとすぐ暴れだして
荒れる。
0598デフォルトの名無しさん
2005/06/24(金) 23:18:57わかってないな。
何かを貶す時の基本は度外れに褒めまくること。
そうすれば>>597のようなアホがほいほいつられてくれる。
0599デフォルトの名無しさん
2005/06/25(土) 00:32:42lexerはどうしてるの?
Lex等を使わずに自分で書いたのなら、どこまで処理してるかは把握してるのでは?
lookahead tokenの値は変数yycharにおさめられてます。
0600デフォルトの名無しさん
2005/06/25(土) 01:21:33#define YYERROR_VERBOSE 1 /* Enable verbose error messages. */
マニュアルにも出てるはず
> そもそも「if文の途中」というのが
> 取れるんでしょうか?
bison の error を使えば if文の途中でパース失敗した
ときのアクションとか付けられる
なんか説明しづらいけどマニュアルのサンプルに出てそう
0601デフォルトの名無しさん
2005/06/25(土) 09:59:34すれ違い。
Lisperより
0602595
2005/06/25(土) 10:03:24>599
flexを使ってます。bison側で「@x」と書けば、トークンの位置が取れると
http://www1.kcn.ne.jp/~robe/pf/pf012.html
に書いてあったんですがまだ試してません。yycharですか、ありがとうございます。
>600
YYERROR_VERBOSE は試してみました。多少わかりやすいエラーメッセージが
yyerrorに与えられるようになったんですが、自動生成じゃなく自分でエラーメッセージを
決めたいんです(Cコンパイラが出すような)。
error は今のところトップレベルでやっちゃってるんで、
そこを文それぞれにもってかないとだめなんですね。
0603デフォルトの名無しさん
2005/06/25(土) 12:44:21死ね。
0604デフォルトの名無しさん
2005/06/25(土) 19:51:54Lisp 屋からみてもはずかすぃんだけど...
0605デフォルトの名無しさん
2005/06/25(土) 22:03:06おまぃLisp屋を騙ってる素人だろ。
Lispはプログラムとしていきなり構文木書かせるから、
文法パーサ(yacc, bison, Rie)はイラネェ〜んだよ
だから、「コンパイラ/スクリプトの話題に文法パーサはイラネェ」
プログラミングに精通してる人向けのジョークなんじゃねぇ?
;; あ、素人の人には判らない話だから、
;; そこの人、ムキになって否定しないように・・・
0606デフォルトの名無しさん
2005/06/25(土) 22:06:140607デフォルトの名無しさん
2005/06/25(土) 22:15:280608デフォルトの名無しさん
2005/06/25(土) 22:16:27全くいらないってわけじゃないが、他と比べて
簡単であることは間違いない。
0609デフォルトの名無しさん
2005/06/25(土) 22:19:30S式に関する文法は ある。
妙に関心してるのも出てくる始末(苦笑
素人相手にジョーク飛ばすのも大変だなぁ。
0610デフォルトの名無しさん
2005/06/25(土) 22:22:26>>605 みたいにスーパーな Lisp 屋ならば、
SICP の超循環評価器なんてイラネェ〜んだろうな。
0611デフォルトの名無しさん
2005/06/25(土) 22:42:27なんだ、お前は「文法パーサ」って言葉でツールの類を指してたのか。
0612デフォルトの名無しさん
2005/06/25(土) 22:49:410613デフォルトの名無しさん
2005/06/25(土) 22:50:45構文解析器 の検索結果のうち 日本語のページ 約 10,200 件中 1 - 10 件目 (0.23 秒)
パーサ の検索結果のうち 日本語のページ 約 53,700 件中 1 - 10 件目 (0.19 秒)
パーザ の検索結果のうち 日本語のページ 約 8,720 件中 1 - 10 件目 (0.04 秒)
文法パーサ の検索結果のうち 日本語のページ 約 24 件中 1 - 5 件目 (0.22 秒)
0614デフォルトの名無しさん
2005/06/25(土) 22:58:59下らない人間だ
0615デフォルトの名無しさん
2005/06/25(土) 23:00:52バカは覚えときな。
0616デフォルトの名無しさん
2005/06/25(土) 23:06:07検索のヒント
- キーワードに誤字・脱字がないか確かめてください。
- 違うキーワードを使ってみてください。
- より一般的な言葉を使ってみてください。
- キーワードの数を少なくしてみてください。
0617デフォルトの名無しさん
2005/06/25(土) 23:13:040618デフォルトの名無しさん
2005/06/25(土) 23:14:09痛い素人が粘着しているな。哀れな奴
0619デフォルトの名無しさん
2005/06/25(土) 23:27:41なかなかLALRのみっていうのは無いんですね。
ところで、皆さんはどうやって学習されましたか?
学習されたときの書籍とか覚えていましたら、教えて下さい。
0620デフォルトの名無しさん
2005/06/26(日) 00:25:28おまぃLisp屋を騙ってる素人だろ。
Lispはプログラムとしていきなり構文木書かせるから、
文法パーサ(yacc, bison, Rie)はイラネェ〜んだよ
だから、「コンパイラ/スクリプトの話題に文法パーサはイラネェ」
プログラミングに精通してる人向けのジョークなんじゃねぇ?
;; あ、素人の人には判らない話だから、
;; そこの人、ムキになって否定しないように・・・
0621デフォルトの名無しさん
2005/06/26(日) 00:31:500622デフォルトの名無しさん
2005/06/26(日) 00:32:510623デフォルトの名無しさん
2005/06/26(日) 00:34:45ただし、yaccなどのジェネレータを「文法パーサ」と言ってしまってるから
誤解を生むってこと。
なお、googleで検索してる奴はほっとけ。
0624デフォルトの名無しさん
2005/06/26(日) 00:36:460625デフォルトの名無しさん
2005/06/26(日) 00:38:46で?w
0626デフォルトの名無しさん
2005/06/26(日) 00:42:29yaccはパーサではありません。
yaccはパーサを作ってくれるものです。
はい、ここ!試験に出ますよ〜
良い子は覚えておきましょうねぇ〜
0627デフォルトの名無しさん
2005/06/26(日) 01:14:56foo.yを解釈するパーサと言えなくもないけどな
0628デフォルトの名無しさん
2005/06/26(日) 01:41:040629デフォルトの名無しさん
2005/06/26(日) 02:09:28旧DragonBook。
あれを読んでたのは大学のころだな。みんなで輪講して、手でLR(0)itemを列
挙して、lookaheadを求めて、表を作成して…とかやった覚えがある。
ところで、LRパーサーの生成方法を知りたいの?
それともyaccの使い方を知りたいの?
前者だったらやっぱりDragonBookを熟読。読んでるだけでは意味不明でも、
簡単な文法(足し算だけの電卓プログラムとか)のLR表を手で生成して
みるとわかってくるよ。
後者ならO'Reilly本で足りるでしょう。
0630デフォルトの名無しさん
2005/06/26(日) 05:31:33yacc全体をそうは言えない。パース以外の仕事もするから。
0631デフォルトの名無しさん
2005/06/26(日) 10:31:04*.yなどの文法をパースするパーサのこと。
609の「文法パーサ・ジェネレータ」は「コンパイラ・コンパイラ・コンパイラ」って意味だな。
0632デフォルトの名無しさん
2005/06/26(日) 14:18:10lispはパーサが要らないんだ!って文章を強引に正しくするために
それを持ち出すのは苦しすぎる。
0633デフォルトの名無しさん
2005/06/26(日) 14:21:07新たなパーサを作り出すツールであって、
ただ仕事の過程でパーサを使ってるだけ。
だから、yacc=パーサとは普通いわないし、誤解を生むだけ。
間違ってるといえるかもしれない。
0634デフォルトの名無しさん
2005/06/26(日) 21:28:170635デフォルトの名無しさん
2005/06/26(日) 21:30:42「んじゃパーサ無しでどうやってS式をパースするんだい」 って話になるんだけどどうしよう
0636デフォルトの名無しさん
2005/06/26(日) 21:31:30ちょっと横レスすまんが、
> 旧DragonBook。
って何?新ドラゴンってあるの?
それとも21世紀本のこと?
> 後者ならO'Reilly本で足りるでしょう。
どうだろうね。俺もその本持ってるけど、
あんまり役に立つとは思えないんだけど。
0637デフォルトの名無しさん
2005/06/26(日) 23:05:190638デフォルトの名無しさん
2005/06/27(月) 00:20:14初版は1977年、もう絶版だから今の若い人は知らんか。
Principles of Compiler Design
Alfred V. Aho, Jeffrey D. Ullman
Addison Wesley
ISBN 0-201-00022-9
Amazonにも画像が無かったが、ぐぐってみたら
http://www-users.cs.york.ac.uk/~susan/bib/nf/a/alfredvh.htm
の上から二番目にあるな。
0639デフォルトの名無しさん
2005/06/27(月) 04:44:460641デフォルトの名無しさん
2005/06/28(火) 21:23:10相乗り質問で恐縮ですが、LALR(1) の1って先読みトークンの数ですよね?
このことは、YACCにシフトされているシンボルの数の最大値が1ということにはつながらないのですか?
0642デフォルトの名無しさん
2005/06/28(火) 21:26:35>>641
知りません。
0643デフォルトの名無しさん
2005/06/28(火) 21:27:41>YACCにシフトされているシンボルの数の最大値が1
は合っているんだっけ?
0644デフォルトの名無しさん
2005/06/28(火) 22:19:16分からんとです。
0645デフォルトの名無しさん
2005/06/29(水) 00:10:28そうです。
LR(k)、LL(k)のkは、高々k個の先読みでパースできる文法(のクラス)を表しています。
0646619
2005/06/29(水) 06:55:18> 旧DragonBook。
> あれを読んでたのは大学のころだな。みんなで輪講して、手でLR(0)itemを列
> 挙して、lookaheadを求めて、表を作成して…とかやった覚えがある。
情報ありがとうございます。
でも、もう手に入らないんですね。
> ところで、LRパーサーの生成方法を知りたいの?
> それともyaccの使い方を知りたいの?
|
> 後者ならO'Reilly本で足りるでしょう。
パーサー自体の生成方法までは、とても考えが及びません。
目的としては、後者です。だとすると、
やはり、O'Reillyの本が定番なんですかね。
入手して、若い頃のようにじっくり勉強してみたいと思います。 (^^;
ありがとうございました。
0647デフォルトの名無しさん
2005/06/29(水) 07:47:49O'ReillyってLALRの説明まではしてなかったような。
とりあえず使いたいならO'Reillyでいいけど、
yaccを使いこなしたいなら、LALRをきちんと勉強したほうがいい。
コンフリクトしたらシフト優先とか、
自分で変な書式の式を追加するときに、%left とかがどう動くのかとかは
LALRを知らないと理解できない。
0648デフォルトの名無しさん
2005/06/29(水) 08:05:26LALR(n)だと、
「シフトするトークンは1つだけど、n個先読みしてからシフトするか還元するか決める」
という考え方と
「最大n個シフトしてみて、ダメだったらシフトしなかったことにして還元する」
という考え方ができそう。
0649デフォルトの名無しさん
2005/06/29(水) 12:40:16LL(1): Left-to-right and Left-most Parsing
0650デフォルトの名無しさん
2005/07/01(金) 21:58:05で、貴方のお勧めは?
0651デフォルトの名無しさん
2005/07/02(土) 21:06:340652デフォルトの名無しさん
2005/07/02(土) 21:52:020653デフォルトの名無しさん
2005/07/04(月) 19:03:27恐らく lisper w
0654デフォルトの名無しさん
2005/07/04(月) 20:28:290655デフォルトの名無しさん
2005/07/04(月) 21:55:270656デフォルトの名無しさん
2005/07/05(火) 00:54:08お前が一番の粘着だw
0657デフォルトの名無しさん
2005/07/06(水) 21:55:12Windows版のflexとbisonは見つけたんですが、よく考えたら
gccで-ll(flexなら-lfl)オプションを付けないとコンパイルすることができない・・・
そもそも、gccがlflで何を取り込んでいるのかがわからず。
windowsでflex&bisonを使っているひとがいれば、教えていただけないでしょうか。
0658デフォルトの名無しさん
2005/07/06(水) 21:58:34lfl は付けなくても平気。中に入っているのは確か main 関数だけだった筈だから
0659デフォルトの名無しさん
2005/07/07(木) 12:19:19yywrap()も入ってるよ。
以下の関数定義をどっかに入れれば大丈夫。
int yywrap(void)
{
return 1;
}
0660デフォルトの名無しさん
2005/07/09(土) 18:00:12「$」と「var」のあいだにはスペースを入れることができません。
ということは、字句解析でトークンに分解するときに、「$」と「var」の2つに分解するのではなく、
「$var」というひとつのトークンとして認識しているのでしょうか。
(字句解析が「$」と「var」の2つに分解すると、間にスペースを入れられると思うから。)
「$var」を認識するのに、字句解析で1つのトークンとして認識するのがいいのか、それとも
2つに分解して構文解析時に「$var」であると認識するのがいいのか、迷ってます。
0661デフォルトの名無しさん
2005/07/09(土) 18:26:381トークンでいいと思うが。2トークンにするメリットが特に見当たらんし。
0662デフォルトの名無しさん
2005/07/09(土) 20:03:512トークンでしょう。(Perl/PHPのソース確認してないけど)
理由:
1. Perlの場合、変数名の前に異なるプリフィクスを使う場合がある。
例)配列宣言 @array、 配列参照 $array[index]
連想配列宣言 %assoc、連想配列参照 $assoc{key}
左側(配列コンテキスト)と、右側(スカラーコンテキスト)を、異なるトークンと認識したら、
変数名管理上、トークンからプリフィクス(@, %, $)を外した名前を切り出す必要があり、
トークンの扱いとして不自然。
2.プリフィクス(@, %, $)と、識別子(var, array, assoc)の間に空白を許すか否かは、
単なる構文定義上の問題であり、2トークンで空白を許さない定義が可能。
いじょ
0663デフォルトの名無しさん
2005/07/09(土) 20:23:450664660
2005/07/09(土) 20:27:10ありがとうございます。そんな気はするんですが、いまいち確信がなくて。
>>662
1.の場合でも、プリフィックスと変数名は別々に渡しませんか?
今はトークンを取得する関数gettoken()と、文字列を取得する関数getvalue()を用意していて、次のようにしています。
入力 gettoken() getvalue()
------------------------------
'foo' STRING "foo"
100 INTEGER "100"
3.14 DOUBLE "3.14"
x NAME "x"
$var VAR_SCALAR "var"
@var VAR_ARRAY "var"
%var VAR_ASSOC "var"
(最後の2つはつけくわえてみました。)
特に不自然ではないと思うのですが、どうでしょう。自信もないですが。
2. について、「2トークンで空白を許さない」ためのうまい方法がよくわかりません。
よろしければ教えてください。
0665デフォルトの名無しさん
2005/07/09(土) 20:34:410666デフォルトの名無しさん
2005/07/09(土) 21:59:11空白をトークンにするぐらいなら、プリフィクス込みでトークン切り出して、
プリフィクスを取り除いたシンボル名でシンボルテーブル検索した方が
楽だと思うけどなぁ。
まぁ、どっちでも動けば構わんので、あとは趣味の問題だが。
0667デフォルトの名無しさん
2005/07/09(土) 22:27:32PHPにも
$hoge = 1;
$varname = "hoge";
echo $$varname; // => 1
とかあるけどな!
0668デフォルトの名無しさん
2005/07/09(土) 23:13:320669デフォルトの名無しさん
2005/07/09(土) 23:38:16Perl5 だと参照使えるから ${$foo->{'a'}} なんてのもアリなんだな。それだと
確かに字句解析レベルではプリフィクスとシンボル名を分けた方が無難だ。
0670デフォルトの名無しさん
2005/07/10(日) 00:40:01ええっー、空白をトークンとするんですか。
構文解析がかなり面倒になるんですけど。
>>669
「$」のあとに英数字が続けば変数名、それ以外なら「$」であるというのじゃだめでしょうか。
0671デフォルトの名無しさん
2005/07/10(日) 00:44:50了解。1トークンで充分だと思う。
Perlの
0673デフォルトの名無しさん
2005/07/10(日) 00:47:00そもそも「Perl5 のようなスカラー・配列・ハッシュ、さらにその参照を任意に
組み合わせてデータ構造を作れるような言語にするのか?」ってトコロから
考える必要があるかと。
単に $foo, @foo, %foo, $$foo ぐらいで済む程度の文法なら 670 の案や
1トークン方式で良し。Perl5 フルコンパチにしたければ変数関係だけで
{}, [] の のネストが発生するので、ネストは正規言語では処理できない
ことを考えると、ある程度は構文解析に逃がした方が楽そう。
0674デフォルトの名無しさん
2005/07/10(日) 21:13:41Li(ry)
0675デフォルトの名無しさん
2005/07/10(日) 21:17:020676デフォルトの名無しさん
2005/07/10(日) 21:24:231.0
ってのが出てきたとき、それがシンボルか数値かリストかどうかを判断しなくても良いってことなのか?
あと、「LISP は構文解析が要らない」ってのは、カッコの対応が取れて無くても気にしないってことなのか?
0677デフォルトの名無しさん
2005/07/10(日) 21:27:150678デフォルトの名無しさん
2005/07/10(日) 21:56:58→入力をreadするとS式が出てくる
構文解析がいらない
→S式をevalすると結果が出てくる
0679デフォルトの名無しさん
2005/07/10(日) 22:00:33自分で一から作るなら、どっちも必要でしょ
0680デフォルトの名無しさん
2005/07/10(日) 22:15:010681676
2005/07/10(日) 22:25:030682デフォルトの名無しさん
2005/07/10(日) 22:32:57S式に優位性を感じないなら必要ない
0683デフォルトの名無しさん
2005/07/10(日) 22:34:15prologインタプリタをprologで書ける人とCで書ける人ではどちらが優れているか?
0684デフォルトの名無しさん
2005/07/10(日) 22:44:38つまんねぇネタ。
0685デフォルトの名無しさん
2005/07/11(月) 01:56:100686デフォルトの名無しさん
2005/07/11(月) 03:28:22お前が言わんと欲する所が、あまりに陳腐過ぎて、
細かい説明するのが面倒つうこと。
0687デフォルトの名無しさん
2005/07/11(月) 06:30:490688デフォルトの名無しさん
2005/07/11(月) 11:37:210689デフォルトの名無しさん
2005/07/11(月) 16:37:20燃料投下(>>674)までの流れを見た上で言ってるのか?
0690デフォルトの名無しさん
2005/07/11(月) 18:35:400691デフォルトの名無しさん
2005/07/11(月) 18:55:260692デフォルトの名無しさん
2005/07/11(月) 19:22:030693デフォルトの名無しさん
2005/07/11(月) 19:49:05Ruby以外に内部イテレータを持ってる言語って何がありますか?
Rubyの内部イテレータではなく、一般に内部イテレータとは
匿名関数と本質的にどの点で違うものなんでしょうか。
0694デフォルトの名無しさん
2005/07/11(月) 20:15:010695デフォルトの名無しさん
2005/07/11(月) 21:29:03>Ruby以外に内部イテレータを持ってる言語って何がありますか?
このスレでさんざん出てきてるLISPというやヴぁい言語のインライン関数が元ネタ。
Rubyで内部イテレータとわざわざ限定してるのは対象データの
コンテナを抽象化して取り出すことを目的にしてるからじゃないかと。
>一般に内部イテレータとは匿名関数と本質的にどの点で違うものなんでしょうか。
質問の意図が不明だけど、まず役割が違うでしょ。
内部イテレータに匿名関数(ブロック)を渡してぶん回すんだし。
匿名関数側は取り出す要素の構造以外知らなくていいし、
内部イテレータはぶん回すコンテナの構造以外知らなくていい。
外部イテレータとの違いはここにある。
0696デフォルトの名無しさん
2005/07/11(月) 22:43:270697デフォルトの名無しさん
2005/07/11(月) 22:54:580698デフォルトの名無しさん
2005/07/11(月) 23:07:430699デフォルトの名無しさん
2005/07/12(火) 00:25:21どうしてもやりたいのなら別スレ立ててそっちでやってください
0700デフォルトの名無しさん
2005/07/12(火) 00:25:38Smalltalkにはブロックという概念があり、これがちょうどRubyの内部イテレータ(ブロック)に相当します。
Lispのmapとも似ていますが、どちらかというとSmalltalkのほうに似ているんじゃないでしょうか。
Smalltalkとの違いは、Rubyでは基本的にメソッド1つにつき1つのブロックしか渡せませんが、Smalltalkは複数のブロックを渡すことができることです。
なおRubyでは、昔は本当にイテレータとしてのみ使われていましたが、今は他の用途にもよく使われるため、現在ではブロックと呼ばれることが多いようです。
また「内部イテレータ」というのは使われ方の名称であって、機能としては「クロージャ」というのがプログラミング言語一般の用語です。
(「クロージャ」という機能を「内部イテレータ」として使うということ)
0701デフォルトの名無しさん
2005/07/12(火) 01:06:35真面目にクロージャを作る場合よりも省略できる部分が、
結構あるんだよね。
あと、内部イテレータと外部イテレータにはそれぞれ、
長所と短所がある。簡便なのは内部イテレータだが、
複雑なイテレーションの場合は外部イテレータのほう
が良い場合もある。
個人的なオススメはクロージャが扱えるオブジェクト
指向言語なら外部イテレータを基本に設計して、内部
イテレータはライブラリで用意する、というやり方。
0702デフォルトの名無しさん
2005/07/12(火) 02:56:11>真面目にクロージャを作る場合よりも省略できる部分が、
>結構あるんだよね。
詳細きぼんぬ
0703デフォルトの名無しさん
2005/07/12(火) 03:01:01環境をスタックからヒープに移すタイミングの問題。
0704デフォルトの名無しさん
2005/07/12(火) 04:07:520705デフォルトの名無しさん
2005/07/12(火) 07:33:41構文に関して言えば、
内部イテレータに特化した構文(だったものも含む)を持ってる言語は
俺の知ってる限りでRubyとSmalltalkだけかな。
他になんかあったっけ?
0706デフォルトの名無しさん
2005/07/12(火) 09:26:54SmalltalkのCollection関係の
aCollection do:[each: 一件ごとの処理].
とかは言語組込みの構文じゃなくてクラスライブラリの命名ルールだよ。
0707デフォルトの名無しさん
2005/07/12(火) 21:43:330708デフォルトの名無しさん
2005/07/12(火) 21:54:550709デフォルトの名無しさん
2005/07/13(水) 08:56:120710デフォルトの名無しさん
2005/07/14(木) 20:44:00.r-‐i'''''''''''i''''‐-、
o| o! .o i o !o
.|\__|`‐´`‐/|__/|
|_, ─''''''''''''─ ,、 /
、-' u -、
/ U 0 \
/ / i
| ● ,,. .,, ● |
__ . ! (_人__) ノ
/´ ̄ `!. 丶_ u U ノ
| `にこ匸'_ノ . '-、、,,,,,,_______,,,,,,、、-'
ノ u { _.. -―| :{ ,/ / \
. / l | __ / ̄ ̄`>'´ ノ' ´ {、 \
/ |/ {'´ `ヽ. " ̄\ U `ヽ. __,,.. -‐丶 u ヽ
| / ヾ、.. } u' 〉、 } `ー''´ /´ ̄ `ヽ '" ̄\
! :} )「` ノ、 ノ l\"´_,,ニ=-― <´ ヽ{ ノ( `、 |
l 、_,/j `ー一''" }, ノ , '''''"" \ ヽ ⌒ヾ v |
ヽ _ / } {. { l ┌n‐く ヽ/ ``\ ノ
`¨´ `¨¨¨¨´ ̄`{ 0 `'^┴'ー┘|ヾ }、 u' ` --‐r'′ キングヤッタス!!
0711デフォルトの名無しさん
2005/07/14(木) 22:08:03リンゴタン?
0712デフォルトの名無しさん
2005/07/15(金) 22:18:25LALR age
0713デフォルトの名無しさん
2005/07/16(土) 18:07:28・RUBY厨
・LISP厨
・りんご厨
・LALR厨
0714デフォルトの名無しさん
2005/07/16(土) 18:13:110715デフォルトの名無しさん
2005/07/16(土) 18:22:18LALRもダメでつか
0716デフォルトの名無しさん
2005/07/16(土) 19:13:120717デフォルトの名無しさん
2005/07/16(土) 21:10:41アンチLALRか。
救いようがねぇなw
0718デフォルトの名無しさん
2005/07/16(土) 21:13:590719デフォルトの名無しさん
2005/07/18(月) 15:40:14bison/flexではいたコードってVCでコンパイルできますか??
0720デフォルトの名無しさん
2005/07/18(月) 15:50:45やってみればいいじゃん
0721デフォルトの名無しさん
2005/07/18(月) 16:57:290722デフォルトの名無しさん
2005/07/18(月) 17:30:550724723
2005/07/23(土) 23:01:08ありがとうございます。よく読んでいませんでした。
とりあえず原田賢一著 コンパイラ構成法という本を購入しました。
これから勉強します。
0725719
2005/07/23(土) 23:01:490726デフォルトの名無しさん
2005/07/25(月) 02:13:48雑魚だろマジで。
0727デフォルトの名無しさん
2005/07/25(月) 02:15:53字句解析とか構文解析とか、単純なんだから別に自動生成でいいやん。
ていうか、こういうツールだって、どういうことやってるのか理解できない人には使えないと思うよ。
0728デフォルトの名無しさん
2005/07/25(月) 14:06:30rubyの作者を雑魚あつかいですか?
0729デフォルトの名無しさん
2005/07/25(月) 15:05:00たぶんフロントエンドだけがやっとで挫折したんだろう。
0730デフォルトの名無しさん
2005/07/26(火) 10:08:34LexやYACC等のツールを使わずにコンパイラを作る奴はフジツボ。
LexやYACC等のツールを使えない奴はプランクトン。
0731デフォルトの名無しさん
2005/07/26(火) 12:20:110732デフォルトの名無しさん
2005/07/26(火) 20:48:400733デフォルトの名無しさん
2005/07/26(火) 21:15:440734デフォルトの名無しさん
2005/07/29(金) 11:04:33これを機会に時間のあるときに作ってみようと思ったのだけれど、
コンパイラコンパイラ実装の参考文献で良書はありますか?英文和文問いません。
0735デフォルトの名無しさん
2005/07/29(金) 22:56:380736デフォルトの名無しさん
2005/07/30(土) 01:54:03でも文脈からだとJavaScriptの構文を理解するbisonコードくさいんだけどさ。
0737デフォルトの名無しさん
2005/07/30(土) 02:03:010738デフォルトの名無しさん
2005/07/30(土) 02:04:060740デフォルトの名無しさん
2005/07/30(土) 06:12:340741デフォルトの名無しさん
2005/07/30(土) 06:52:320742デフォルトの名無しさん
2005/07/30(土) 07:54:280743デフォルトの名無しさん
2005/07/30(土) 17:52:12LALRパーサージェネレータでよければ、kmyaccでサポートしてます。
http://www005.upp.so-net.ne.jp/kmori/kmyacc/index.html
こうした方がいいという意見も歓迎。
JavaScriptで書いたデモの例
http://www005.upp.so-net.ne.jp/kmori/kmyacc/calcdemo.html
0744734
2005/07/30(土) 19:50:44それは良いアイデアですね。
JavaScriptの言語的機能は制限されるのが残念ですが、
とにかく使いたいだけならそれは良さそうです。
>>743
おお、これはそのまま使えますね!ありがとうございます。
早速使ってみます。助かりました。
0745デフォルトの名無しさん
2005/07/30(土) 21:10:39使うにあたってはプロトタイプを手直しした方がいいでしょうね。
ところで、JavaScriptでは入力を得る手段が限られていると思うのですが、
どんな対象をパースするのか、さしつかえなければ教えてもらえませんか?
0747デフォルトの名無しさん
2005/07/30(土) 23:57:26ようするにスクリプトを読まれたく無いと。
ただそれだけ?
0748734
2005/07/31(日) 00:11:31そういうわけじゃないですよ。どちらかといえば趣味です。
その時は手動で構文解析を作りましたけれど、
チェスの掲示板に棋譜を読み込むためにPGNファイルのフォーマットをパースするなど、
JavaScriptでコンパイラコンパイラが作れればいいなーと思うことは稀にありました。
0749デフォルトの名無しさん
2005/08/03(水) 12:01:25状態遷移を扱うのに適するエンジンってありませんか?
やりたいことは、入力を受け付けて、新しい状態を出力するモジュールです。
その状態遷移ルールは何らかの自作エディタでペトリネットやUMLの
アクティビティ図のように記述しておきます。
単にゴリ押しで、定義データに各遷移ルールを記述しておき、制御モジュールで
パターンマッチングで次の状態を探すだけでも可能ですが、トークンのJoinとか
考えると、いろいろ内部情報を保持する必要があります。
普通のスクリプトやゲームのシナリオなんか参考になる気もしますが、今回の場合、
有限状態機械に特化したもので十分です。
また、状態遷移図の定義の変更は頻繁に行われます。
もし、美しいアーキテクチャがあるなら、ゴリ押しのエンジンを作り直したいと
思っているのですが、オブジェクト指向で機械の内部状態とか定義方式を美しく
表現している設計って、どこかにないでしょうか?
0750デフォルトの名無しさん
2005/08/03(水) 13:04:20>オブジェクト指向で
限定しない方が良いよ。OO に限定するとステートパターンしか出てこないから
0751デフォルトの名無しさん
2005/08/03(水) 13:10:40世の中ではどんな形なんだろう
0752デフォルトの名無しさん
2005/08/03(水) 21:01:28UMLでもステートチャート図あるし
状態遷移をオブジェクト指向で表そうとするのは適切でないような気がするけど
0753デフォルトの名無しさん
2005/08/03(水) 22:18:27事前の状態遷移定義に従って、オブジェクトAがエンジンによってBに変えられるような。
別にオブジェクト指向に拘る訳じゃないですが、オブジェクト指向を例にとると、
1つのオブジェクトが、エンジンに渡されると、2つのオブジェクトに分岐したり、
その逆に2つのオブジェクトが揃ったら、1つのオブジェクトに合流したり…
さらに、その合流待ちの状態が無限って訳にはいかないだろうから、生存時間が決まってたり。
こういうのって、昔から学術的には扱われてると思うのですが、
実際に実装するとなると、どういう定義記述方法にして、どんな内部状態を持たせるのかなぁと。
もしかして、何か美しい設計が、すでにあるのかと思った次第です。
今なら、定義はXMLになるのかなぁ…
0754デフォルトの名無しさん
2005/08/03(水) 22:40:13まさか…oさん?
0755デフォルトの名無しさん
2005/08/04(木) 00:07:42気のせいだったかも
0756デフォルトの名無しさん
2005/08/04(木) 05:06:54Object指向でPush-down automatonならFinate State Machine。
尚、定義ファイルのパースは別途必要です。
0757デフォルトの名無しさん
2005/08/04(木) 16:54:55>>755
http://www.codeproject.com/csharp/xmlfsm.asp
キャ━━━(*´∀`*)━━━ !!!!!
と思いましたが、よく見ると、これ、現状のコードとスタート地点同じ気がします…
この先、アクティビティ図とか、ペトリネットレベルまで拡張していくと、
ごちゃごちゃしてきて、もっと美しい設計無いのかと思った次第です。
だから、この先にある、汎用性のあるものが知りたいと…
我侭で申し訳ありません。
>>756
有限状態オートマトンの汎用エンジンに、興味あります。
Radiumさんの過去ログに記述ありました。月末の2日分です。
http://www.radiumsoftware.com/0401.html
このEventStudioというものが、なんか実現してるっぽいです。
http://www.eventhelix.com/EventStudio/
少し詳しく読んでみたいと思います。
0758デフォルトの名無しさん
2005/08/05(金) 23:48:440759デフォルトの名無しさん
2005/08/06(土) 22:01:29StatePatternで何か不都合があるのか?
0760デフォルトの名無しさん
2005/08/07(日) 00:27:31これは、どの辺がいいの?解説求む。
0761デフォルトの名無しさん
2005/08/17(水) 09:13:09DLL形式でファイルに保存して実行するのではなくて、
メモリに保存して実行する方法を教えてください。
0762デフォルトの名無しさん
2005/08/18(木) 02:30:07……できそうにないのはわかっているけど、あきらめるのはちょっとくやしい……
0763デフォルトの名無しさん
2005/08/18(木) 03:50:57大域脱出のみに使われるような継続であることがSchemeのプログラム
を解析して証明できる場合なら、setjmp/longjmpでいけるんじゃね?
Schemeコンパイラ関連の文献読むと、色々ヒントが書いてあるよ。
0764デフォルトの名無しさん
2005/08/19(金) 00:42:56真面目に継続使いたかったら(自前でstack作ったりして)継続を管理するしかないのかな。
……Commandパターン使って少しでも手を抜くとするか……
0765デフォルトの名無しさん
2005/08/19(金) 03:04:24SchemeをCPSでCにコンパイルする方式。
http://home.pipeline.com/~hbaker1/CheneyMTA.html
C関数はreturnしないので、スタックはヒープとして使う。
いっぱいになったらcopying GC。
0766デフォルトの名無しさん
2005/08/19(金) 23:28:22リテラルとして組み込むと内部で正規表現objectと文字列リテラルの切り分け
みたいなのが別途必要っぽいし、ライブラリとして組み込むと呼び出し手順が
複雑になって結局使われないんじゃないかとか色々考えても良さげな方法が
みつからなかった。
つーかrubyみたくperlの真似して/〜/にすると//という1行コメントと勘違いする
かもしんないし、/はそもそも割り算に使ってるし。
独創的な構文にしすぎてメンテする俺自身忘却するようなの作っても
それはそれで意味ないし別に/〜/でもいいけどよ、出現位置によってトークンの
意味が変わるのって言語として変な気がするんだけどおまえらどうですか?
0767デフォルトの名無しさん
2005/08/19(金) 23:53:090768デフォルトの名無しさん
2005/08/19(金) 23:54:270769デフォルトの名無しさん
2005/08/20(土) 01:38:30個人的には Perl6 のパターンマッチングが好きだ。
0770デフォルトの名無しさん
2005/08/20(土) 01:57:23|〜|にする。
0771デフォルトの名無しさん
2005/08/20(土) 07:53:050772デフォルトの名無しさん
2005/08/20(土) 09:12:02独自の記号から作ってもいいんじゃない?
「この言語で開発するときのフォント」って感じで
フォントと文字コードの定義から言語にしちゃうの。
そうすれば、紛らわしい記号に悩むことないし、
今まで2文字使っていた演算子も1文字ですむし
区別もはっきりするし、いいことずくめ
昔と違ってPCの性能はあまるぐらいなんだし
フォントぐらい共有しない独自のだって大丈夫だよ
0773デフォルトの名無しさん
2005/08/20(土) 12:57:10にしようよ
0774デフォルトの名無しさん
2005/08/20(土) 13:07:40APLって知ってる?
独自記号の演算子だらけの言語。
MLやBBSなんかにコードをコピペできないとかいろいろ不便すぎて、
結局普通の文字コードの範囲で表現するほうがいいというのが結論。
例えばこのスレにもコードを貼れないよ。
0775デフォルトの名無しさん
2005/08/20(土) 15:41:01そっか、そういうのがあるのかぁ。
でもその結論が出た時点とも今は違うんじゃない?
あ、Unicodeのワイド文字なら使ってもよさそう。
HTMLのエンコードみたいに&lt;とかで内部表現しとくとか。
0776デフォルトの名無しさん
2005/08/20(土) 15:51:472. コペ時に表現が変わったら読みづらくてかなわん。
昔のSmalltalk(Squeakは今でも)はフォントがいじくられてて、
代入記号に←を使っていたが、コペると_になってダサダサだった。
0777デフォルトの名無しさん
2005/08/20(土) 16:15:04『置換「 」を「 」に。』
これでどうだ!
なんかひまわりの二番煎じっぽい気もする。
関係ないけど、'コペる'って斬新だな。
どこか間の抜けた響きで気に入った。
0778デフォルトの名無しさん
2005/08/20(土) 16:31:390779デフォルトの名無しさん
2005/08/20(土) 20:11:250780デフォルトの名無しさん
2005/08/20(土) 20:26:16IMEのネックがあるかぎり漢字は受け付けないなあ。
名前考えるの面倒とは思うけど。
0781デフォルトの名無しさん
2005/08/21(日) 00:09:23使うひとのことを考えて、できればリテラルで。
JavaやPHPのようにライブラリとしてしまうと、正規表現を文字列で指定しなきゃならん。
そうなるとエスケープがすごく面倒で、使う人にとってよくない。
リテラルとして言語仕様に組み込めば、おまえがしんどいだけで、使う人はハッピー。
構文はPerlやRubyをまねしたほうがよい。
使ってもらうことを考えたら、よほどの利点がない限りは他の言語と同じにしたほうが、使う人にとって敷居が低い。
おまえの独自言語のウリは正規表現にあるわけじゃないだろ、きっと。
ウリになる部分は独創的にしてかまわんが、ウリにならない部分はオーソドックスにしとけ。
コンテキストによって記号の意味が変わるのは、確かに悩ましいところだが、お前が苦労すればいいだけのこと。
使う人に苦労をさせるな。勉強しろ。
それでも「昔の仕様をひきづって変なコードになるのはイクナイ!」と思うなら、そうだな、「@/rexp/」とか「./rexp/」にでもしとけ。
まあRubyはPerlをまねただけで、Perlはsedをまねただけで、sedはviやedをまねただけで、edは割り算記号なんかなかったから問題なかっただけなんだけどな。よく考えたらそんな昔の仕様を今でもひきずるのはおかしい気がしてきた。
0782デフォルトの名無しさん
2005/08/21(日) 00:18:13同意。
例えば正規表現リテラルが #/rexp/ の言語処理系も実際あるわけだし。
このくらいだと違和感なく使える。
0783デフォルトの名無しさん
2005/08/21(日) 12:05:31これ便利だから
0784デフォルトの名無しさん
2005/08/21(日) 23:38:390785デフォルトの名無しさん
2005/08/21(日) 23:44:59これを実装したSchemeコンパイラは公開されてるんでしょうか?
0786デフォルトの名無しさん
2005/08/22(月) 01:43:41プリプロセッサで関数呼び出しに置き換えちゃうとか
0787デフォルトの名無しさん
2005/08/22(月) 02:52:36まあやり方次第かもしれないけど
0788デフォルトの名無しさん
2005/08/25(木) 03:42:41Baker本人はもちろん実装してるんでしょ。
ほかにこんなのもあるようです。
Chiken Scheme Compiler
http://www.call-with-current-continuation.org/
しかしすごいドメイン名。
0789デフォルトの名無しさん
2005/08/25(木) 12:04:310790デフォルトの名無しさん
2005/08/25(木) 23:53:57リンク先見てから言ってくれ。
0791デフォルトの名無しさん
2005/08/26(金) 01:39:260792デフォルトの名無しさん
2005/08/26(金) 05:00:150793デフォルトの名無しさん
2005/08/26(金) 08:19:29いたれりつくせりを要求してんな
0794デフォルトの名無しさん
2005/08/31(水) 22:12:59http://software.nikkeibp.co.jp/software/backno/2005/0510indexc.html
0795デフォルトの名無しさん
2005/08/31(水) 22:38:04> 〜やさしいLispインタプリタの作り方
オワタw
0796デフォルトの名無しさん
2005/08/31(水) 22:50:420797デフォルトの名無しさん
2005/09/01(木) 00:02:080798デフォルトの名無しさん
2005/09/01(木) 01:26:340799デフォルトの名無しさん
2005/09/01(木) 01:35:23世の中のコンパイラ屋さんが泣いています
0800デフォルトの名無しさん
2005/09/01(木) 12:22:040801デフォルトの名無しさん
2005/09/01(木) 16:18:08いや、雑誌の件はインタプリタだから(w
正直java製のLISPインタプリタでタイトルに「簡単」とか書いてあると、
読まずに中身が解ってしまう気がするのは俺だけじゃないと思う。
バイトコードにコンパイルするとかならもの凄くおもしろそうなのに。
0802デフォルトの名無しさん
2005/09/02(金) 08:14:28コンパイルは雑誌記事ではちと荷が重くないかい?
特集で3回くらい組まないと、紙面ではあるていどちゃんと説明できないだろうし。
0803801
2005/09/02(金) 14:23:52確かに、雑誌では重いのは大変よくわかります、はい802氏の言うとおりです。
でもLISP(Schmeの方がより良いと思いますが)のネイティブ(バイトコード含む)へのコンパイルと最適化って
書籍では見かけた事が無いのですよ(国内しか調べてません、英語文献があれば教えてくれると嬉しい)
で、結局皆どこを見に行くかと言うとACMとか、各大学の論文とかなんですよ。
情報工学出じゃないと検索すら泣ける結果が多いから、日本語で書籍で出せば結構なインパクトあると思うのですがね。
中田先生の書籍は関数型言語より手続き型言語の物だけだしorz
0804802
2005/09/02(金) 17:25:05コンパイラについて体系立った形で書籍として提供されれば、漏れも買うな。
しかし、話の流れは雑誌だし。
Lispのコンパイラについては、昔々にKCL(古っ)のソース読んだりして独学したけど、
あれは出力がCだし。
最近の処理系では、
http://dmoz.org/Computers/Programming/Languages/Lisp/Scheme/Implementations/
なかんじなのだろうか。いくつかコンパイラもあるようだから、ソース読んでみるかね。
0805デフォルトの名無しさん
2005/09/03(土) 14:23:24関数型言語のコンパイルと最適化の基本を知りたがってるように感じた。
もしそうならLispに限ることないんじゃないかな。
多分mincamlとか見るといいと思う。
http://min-caml.sourceforge.net/
0806デフォルトの名無しさん
2005/09/03(土) 15:57:02そこでAppel先生ですよ
0807デフォルトの名無しさん
2005/09/03(土) 23:50:18おまえらつられすぎw
リンゴタソ、ハァハァ
0808デフォルトの名無しさん
2005/09/03(土) 23:53:42なんで?
きみが嫌いなだけか?
理由でも書いてくれると話が広がるんだが。
0809デフォルトの名無しさん
2005/09/04(日) 00:41:310810デフォルトの名無しさん
2005/09/04(日) 01:01:50デザインパターンのInterpreterパターンはLL(1)文法しか
記述出来ないのでしょうか?
LALR(1)文法をInterpreterパターンで実装することは可能でしょうか?
0811デフォルトの名無しさん
2005/09/04(日) 13:20:17だから807は広げたくないんだろw
0812デフォルトの名無しさん
2005/09/04(日) 18:47:46コテハン名乗ってくれ
透明化するから
0813デフォルトの名無しさん
2005/09/04(日) 19:11:240814デフォルトの名無しさん
2005/09/04(日) 19:41:390815デフォルトの名無しさん
2005/09/04(日) 19:52:42可能だよ。
Interpreter パターンの LL(1) 解析部を LALR(1) に改造すれば良い。
再帰下降方にする事だって出来る。
しかも Interpreter パターンであることに変わりは無い。
0816デフォルトの名無しさん
2005/09/04(日) 21:25:29どうこうするのって妙にわかりにくいというかしっくりこないと
いうか
オブジェクト指向の中に無理やり詰め込んでるような気がするのは
俺だけだろうか??
0817デフォルトの名無しさん
2005/09/04(日) 21:29:56……っていうかお前マルチやんか
0818デフォルトの名無しさん
2005/09/04(日) 21:56:590819デフォルトの名無しさん
2005/09/04(日) 22:08:26ありがとうございます。
まずはLL(1)で簡単なものを作ってみて
その後LALRに変えていこうかと思います。
0820デフォルトの名無しさん
2005/09/08(木) 20:45:28なんで、llからlalrにかえんのw
0821デフォルトの名無しさん
2005/09/08(木) 20:58:170822デフォルトの名無しさん
2005/09/09(金) 01:41:01馬鹿かお前?
0823デフォルトの名無しさん
2005/09/09(金) 05:41:330824デフォルトの名無しさん
2005/09/09(金) 11:24:47LLでは扱えない構文を導入するのかもしれないし、
単に勉強のためなのかもしれない。
そんなことも思いつかずにアフォ呼ばわりするお前の成績は不可。
0825デフォルトの名無しさん
2005/09/09(金) 12:51:03煽ってるだけってことですね。みっともないw
0826デフォルトの名無しさん
2005/09/10(土) 00:27:020827デフォルトの名無しさん
2005/09/10(土) 00:34:450828デフォルトの名無しさん
2005/09/10(土) 08:59:050829デフォルトの名無しさん
2005/09/10(土) 09:35:36面倒くさすぎてやめた
やぱモジュール形式かな
0830名無しさん@そうだ選挙に行こう
2005/09/10(土) 20:27:29ひとりごとは、他でやってくれ。
0831名無しさん@そうだ選挙に行こう
2005/09/10(土) 21:14:14宇宙刑事「うわ〜」
0832名無しさん@そうだ選挙に行こう
2005/09/10(土) 22:24:33何その間抜け時空
0833名無しさん@そうだ選挙に行こう
2005/09/11(日) 01:05:320834デフォルトの名無しさん
2005/09/12(月) 00:11:02たとえば、
S→V$
V→(L) | x
L→V | V;L
という文法があった場合、直感的にはLR(1)文法であると思われますが、理由が説明できません。
証明のためにLR(1)項集合の状態遷移を全部書くと結構な量になりそうです。
すべての状態遷移を書かずに証明する方法は無いものでしょうか。
0835デフォルトの名無しさん
2005/09/12(月) 09:39:12ここを楽にしたいならyaccにでも食わせたら?
正確にはLR(1)じゃないけど
0836デフォルトの名無しさん
2005/09/12(月) 22:56:28天才w
うまいやり方ですね。
LISP房には思いつかんでしょうなw
0837デフォルトの名無しさん
2005/09/12(月) 23:03:100838デフォルトの名無しさん
2005/09/12(月) 23:05:29そうやって脊椎反射するから、わいてくるんだってば
いい加減スルーしようよ
0839デフォルトの名無しさん
2005/09/12(月) 23:05:480840デフォルトの名無しさん
2005/09/12(月) 23:07:29LISP下手に導入して失業したか
0841デフォルトの名無しさん
2005/09/12(月) 23:08:59やっぱり正確なLR(1)であるかどうかを判断するには、
実際に状態遷移を書いてみるのが正攻法なのですね。
怪しそうなところだけ手でチェックして、見つからなければ…
自分でチェックプログラムを作るのがよさそうですね。
ありがとうございました
0842デフォルトの名無しさん
2005/09/13(火) 02:45:54くだらないソフトあるはずだからそれでしらべてみ。
あとは普通に1階述語論理でかけるべ?
0843デフォルトの名無しさん
2005/09/13(火) 16:17:210844デフォルトの名無しさん
2005/09/15(木) 16:32:080845デフォルトの名無しさん
2005/09/16(金) 00:44:060846デフォルトの名無しさん
2005/09/16(金) 02:07:56少なくともそういうデマ系の嘘はやってはいけない事だと思うがどうよ。
0847デフォルトの名無しさん
2005/09/16(金) 02:16:360848デフォルトの名無しさん
2005/09/16(金) 11:07:58そんな無駄口たたくなら、お前が説明した文書でもかいたらどうだ?
0849デフォルトの名無しさん
2005/09/16(金) 11:38:400850デフォルトの名無しさん
2005/09/16(金) 12:10:03小学生に失礼だ!
0851デフォルトの名無しさん
2005/09/17(土) 00:21:040852デフォルトの名無しさん
2005/09/17(土) 00:23:500853デフォルトの名無しさん
2005/09/17(土) 01:24:130854デフォルトの名無しさん
2005/09/17(土) 01:32:57まるでLIS(ry
0855デフォルトの名無しさん
2005/09/17(土) 03:19:13SRC=/topdir/src
/topdir/obj/hoge.o : $(SRC)/hoge.c
cc -g -c $(SRC)/hoge.c
makeするとカレントディレクトリにhoge.oが作成されてしまします。
/topdir/obj/配下にhoge.oを作成したい場合どおすればよいのか
アドバイスお願いします。
0856デフォルトの名無しさん
2005/09/17(土) 03:19:45SRC=/topdir/src
/topdir/obj/hoge.o : $(SRC)/hoge.c
cc -g -c $(SRC)/hoge.c
makeするとカレントディレクトリにhoge.oが作成されてしまします。
/topdir/obj/配下にhoge.oを作成したい場合どおすればよいのか
アドバイスお願いします。
0857デフォルトの名無しさん
2005/09/17(土) 03:48:09つか、なんでここで聞く?
0858デフォルトの名無しさん
2005/09/17(土) 04:05:40/topdir/obj/にシムリンク貼ってください
/topdir/obj/配下にお届けください
呼んでる-g -cの意味を教えてくれたらお礼に教えます
0859デフォルトの名無しさん
2005/09/17(土) 14:40:38gcc -o で指定しる!
0860デフォルトの名無しさん
2005/09/17(土) 15:03:290861デフォルトの名無しさん
2005/09/17(土) 21:57:48シンボルテーブルに追加する変数のスコープって
どうやって管理してる?
Cライクなヤツを勉強がてら作ってるんだけど
俺は宣言された変数とかをそれが宣言された関数名とネストのレベルで
テーブル検索できるようにしたけど・・・
あと、シンボルテーブルってグローバルに一個持っておく感じでも
よいの?
0862デフォルトの名無しさん
2005/09/17(土) 23:32:48変数表(グルーバル) -> 変数表(スコープA) -> 変数表(スコープB)
こんな感じでスタックを使うのはどうだろう?
0863デフォルトの名無しさん
2005/09/17(土) 23:35:44グローバルです。
0864デフォルトの名無しさん
2005/09/18(日) 00:22:47名前空間あるとやっかいだけど。
0865デフォルトの名無しさん
2005/09/18(日) 03:19:52[0]void f[1](int a)[2]{ for(;;)[3]{...}; while(1)[4]{...}}
int main[5](int argc, char** argv)[6]{ ... }
わかりづらいけどこんな感じね([n]がID)。
で、記号表を同名登録可能にして、登録のときは名前=>ID,情報として、
検索のときはHITした集合から可視スコープのIDで絞り込む。
可視スコープはスタックで管理してね(上の例ではwhileの中なら[4,2,1,0]、
whileから出たら[2,1,0])。
あと、まっとうな言語なら記号表は1個でいいと思うよ。
Cは構造体とかが別ネームスペースだから複数あったほうが実装しやすいけど。
0866デフォルトの名無しさん
2005/09/18(日) 06:15:58Table(Table parent);
Object get(String ident) { 自分が持ってなければ親を検索 }
}
// 再帰的下向き構文解析
void statement(Table t) {
varDecl(t)かblock(t)かexpr(t)か……を呼び出す
}
void varDecl(Table t) {
tに登録
}
void block(Table t) {
t = new Table(t);
ブロックの終わりまでstatement(t)を呼び出す
}
:
0867デフォルトの名無しさん
2005/09/18(日) 06:26:34(名前,ID)=>情報
ではなくて?
構文解析終わったブロックの情報を捨てないんだとすると、
最後のほうでは、i を検索すると大量にヒットする予感。
0868デフォルトの名無しさん
2005/09/18(日) 14:22:280869デフォルトの名無しさん
2005/09/18(日) 14:25:40手当たり次第のスレで聞きまくってるな
0870デフォルトの名無しさん
2005/09/18(日) 14:31:17いや、初めてここで聞いてるんだが
0871デフォルトの名無しさん
2005/09/18(日) 14:37:35gcc
0872デフォルトの名無しさん
2005/09/18(日) 15:35:140873デフォルトの名無しさん
2005/09/18(日) 16:00:280874デフォルトの名無しさん
2005/09/18(日) 16:14:36何のためのモジュール化だっちゅーの
0876デフォルトの名無しさん
2005/09/23(金) 10:02:46_.. ---- ..,,/i,.ゝ''、 `''、
._ ,..r冖''″ .匸、 .ljニ;;-..,.l,
,''| .|ヽ/ ゙''ヒ|、\`''ミ.l、
匸 コ i ''、 .l.l .l.l\.ヽ ゙.lL
l゙ .!ッ″ ''li,゙''i、ll, .''n llli 丿!ヽ.ヽ..l .l゙''‐
! / / !.i l.、 ll,.l.l! !,,-,,./|,/ ,lヽ / ..'','', '',
|│ l ! |、 ''li'',i、 !. .;;'''''';;;;`ll l, ゙/゙''ミ/、 !l、 !
:| l ! | lヽ,,''ミ゙=... | `,;;;;′. ! l ,! .! ゙l │
! .liリ.レ. ゙lii|" 、'';;;l | .|" │ .| l,|
Compileマダー? .| .l |.| .}.l''v゛"'''' / '''' .,! .| .! ,! l,!
_ ,,. l! |l゙ !│.l ~ −'' /] ! ,!. .il .!′
./゙r''" .゛ .`l" ヽ..l リ .''l, .l ! /-、、 ._ ;;二八 .l ! /.| .l
†丶 /」川!; .ハ.、i ||.「 l l, ll, U ! .`゙''ニ;;アレ゛ ,, ー.l,! .l/ .l゙ /
彡ヾミ;.,|.!゙` !,.ゞ゙⌒巛|| i;.} .l. .lく.lLミ''''ー''゙,゙..ー゙ネ.!ー'' ̄´゛ l /
†ヽ. 彡''ミ;.|. `l l. ̄. ̄ l,l''゙l.〃 ヽ l.゙l/''l广''"゛ C/C .iゞ
~\\ ''ミ;`ヽlケcYc"ノヽ{゙ \ .l, /
\\..''ミ;,;;lΛ_ .人 __,}"| `''、,ヽ ノ|
\\/;,,/〔/ i .l ,,,, . i.l `''ゝ
.○'' /二''lミ.''く、 .゛.ゝ
. i‐゙/゙''.;;;;;ゝ''゙''゙テ〜.!
. ゙‐''l′ .|''⌒''''/┘
`--.'' `- -.′
0877デフォルトの名無しさん
2005/09/29(木) 01:00:47コンパイラについては全くわかりません。
>>5にあるような本を読んで勉強しようと思います。
どのほんがおすすめですか?
0878デフォルトの名無しさん
2005/09/29(木) 01:06:07大学の授業か?したから2冊目以外全部読んでみれば?
0879デフォルトの名無しさん
2005/09/29(木) 01:06:180880デフォルトの名無しさん
2005/09/29(木) 02:27:40並列だと院か卒論だと思うが卒論にしては遅いので院か?
0881デフォルトの名無しさん
2005/09/29(木) 08:47:570882877
2005/09/29(木) 12:38:480883デフォルトの名無しさん
2005/09/29(木) 12:48:490884sage
2005/09/29(木) 13:59:470885デフォルトの名無しさん
2005/09/29(木) 16:14:13俺だったら泣きそう。
0886デフォルトの名無しさん
2005/09/29(木) 16:17:49そっとしておいてやれ。
0887デフォルトの名無しさん
2005/09/29(木) 17:17:11卒論レベルの並列Cコンパイラ程度は書けるだろうし、
実際似たようなことしたやつは何人もいる。
また、卒研を冬学期になってから始める大学も多い。
だが、>>877のような書き込みしてるやつには無理だろうな。
0888デフォルトの名無しさん
2005/09/30(金) 16:40:370889デフォルトの名無しさん
2005/09/30(金) 16:48:38さすがに作るだけじゃなくて、なにかあるんじゃない?
0890デフォルトの名無しさん
2005/09/30(金) 19:47:580891デフォルトの名無しさん
2005/09/30(金) 19:57:040892デフォルトの名無しさん
2005/10/01(土) 00:34:540893デフォルトの名無しさん
2005/10/01(土) 01:34:11将来はマイクロソフトか日立・富士通などに
入って世界に通用するエースコンパイラーに
なりたいと思ってます。
そうなるにはどれくらいの実力が必要でしょうか。
何の資料も見ずに鼻歌交じりでCコンパイラを
書けるくらいでないとだめでしょうか。
0894デフォルトの名無しさん
2005/10/01(土) 01:35:180895デフォルトの名無しさん
2005/10/01(土) 01:40:58とりあえず>>1-6あたりの事が知識として持っているか
0896デフォルトの名無しさん
2005/10/01(土) 06:04:12まずは学力上げて良い大学いけるようにしろ。
0897デフォルトの名無しさん
2005/10/01(土) 09:08:110898デフォルトの名無しさん
2005/10/01(土) 09:12:20あんた素人じゃないだろw
0899デフォルトの名無しさん
2005/10/01(土) 12:04:42無職です
0900デフォルトの名無しさん
2005/10/01(土) 15:28:41フリーターです
0901デフォルトの名無しさん
2005/10/01(土) 17:00:06ニートです
0902デフォルトの名無しさん
2005/10/01(土) 17:26:580903デフォルトの名無しさん
2005/10/01(土) 17:35:020904デフォルトの名無しさん
2005/10/02(日) 00:53:14セッションから値を取ってくると言った事はできるのでしょうか?
ググッてもサーブレットやphp、JSPなどがヒットしてJavaScriptで出来るかどうかがよくわかりません。
例えばこんな感じです
<script>var a ="あ";</script>
この変数aをセッションに格納したいのですが
0905デフォルトの名無しさん
2005/10/02(日) 01:00:06なぜここでその質問したのか聞かせてもらおうか
0906デフォルトの名無しさん
2005/10/02(日) 01:10:16スクリプトという文字がスレタイに入ってるこのスレを除いてみると
javascriptについての話題がいくつかあったので質問させてもらったのですが
0907デフォルトの名無しさん
2005/10/02(日) 01:12:440908デフォルトの名無しさん
2005/10/02(日) 01:21:270909デフォルトの名無しさん
2005/10/02(日) 01:22:29多分。スレ内javascriptで検索して幾つか引っかかったから良くも見ずに質問したんだろうが。
ここはプログラミング全般の質問やらをする場所じゃなくて、コンパイラやスクリプトを作る為の情報を交換するスレだよ。
0910デフォルトの名無しさん
2005/10/02(日) 01:39:02JavaScript はクライアント側で処理されてる。つまり根本的に仕組みが異なる。
0911デフォルトの名無しさん
2005/10/02(日) 06:45:43JavaScript に cookie を読み書きする API がある。
スレ違いもいいとこなのでこの話はこれで終わりで。
0912デフォルトの名無しさん
2005/10/02(日) 09:54:070913デフォルトの名無しさん
2005/10/02(日) 11:01:12小学生じゃないんだから、そんなアホな理屈が通るとでも思っているのか
0914デフォルトの名無しさん
2005/10/02(日) 11:18:46>>904 がその話をしとるとは思えんし、JavaScriptがどこで動くかも
知らんような奴に満足にWebアプリが書けるとも思えんな。
>>909
>コンパイラやスクリプトを作る為の情報を交換するスレだよ。
だからボクはスクリプトを作ろうとしているのに! とか思ってそうな悪寒。
ここはJavaScriptなどのプログラミング言語で何かを作るための相談室じゃなく、
JavaScriptなどのようなプログラミング言語の処理系を作るための相談室だよ。
0915デフォルトの名無しさん
2005/10/02(日) 17:20:13クッキーなんて間抜けなことほざいてるから軽く流したんだが
それに輪をかけて偉そうな住人には思わず苦笑しちまったよwww
0916デフォルトの名無しさん
2005/10/02(日) 17:50:34まあその中でも君のレスが一番偉そうだけどな
0917デフォルトの名無しさん
2005/10/02(日) 18:08:11よくある質問者の逆切れだよ。スルーしる
0918デフォルトの名無しさん
2005/10/02(日) 19:29:34JSPスレでも馬鹿さらしてた池沼だった。
0919デフォルトの名無しさん
2005/10/02(日) 19:35:370920う゛ぉいど
2005/10/02(日) 22:21:380921デフォルトの名無しさん
2005/10/02(日) 22:23:450922デフォルトの名無しさん
2005/10/02(日) 23:29:01# ただし、あまり深く突っ込まないことw
ところで、中田先生の本だけど、最適化がメインってなってるけど、
そうとも思えないんだけどなぁ。コンパイラ全般についてうまく書かれて内科医?
0923デフォルトの名無しさん
2005/10/03(月) 08:49:48Yes。
目次はこんな感じ。
http://www.k.hosei.ac.jp/~nakata/aCompiler/CompilerIndex.html
0924デフォルトの名無しさん
2005/10/05(水) 22:32:39これぞスタンダードっていう書き方はどれですか?
0925デフォルトの名無しさん
2005/10/05(水) 22:50:390926デフォルトの名無しさん
2005/10/05(水) 22:54:19つ[RFC 2234]
0927う゛ぉいど
2005/10/05(水) 23:51:51だがおのおの拡張したBNFはそれなりに便利だと言う罠があるのであるよ。
ようするに自分の言語仕様を記述しやすいように皆が改変するからいかんのである(w
0928デフォルトの名無しさん
2005/10/05(水) 23:52:330929sage
2005/10/06(木) 00:35:34次スレでは、テンプレ変更した方がいいな。
0930デフォルトの名無しさん
2005/10/06(木) 00:40:10実は、何処のコンパイラを使うかで妻と喧嘩してしまって、
もう何年も夫婦生活がありません。
フェ○もしてもらってません。どうすればいいですか?
0931デフォルトの名無しさん
2005/10/06(木) 00:44:29離婚して古の言い伝えどおりに
「女房と畳は」以下略
0932デフォルトの名無しさん
2005/10/06(木) 01:38:02君にはこっちの方が役に立つかも
http://pc8.2ch.net/test/read.cgi/tech/1111363360/
0933デフォルトの名無しさん
2005/10/06(木) 10:24:28リンゴたんに中田氏 ハァハァ
0934デフォルトの名無しさん
2005/10/06(木) 13:52:50makefileにどう書けばいいですか?
0935デフォルトの名無しさん
2005/10/06(木) 13:57:08http://pc7.2ch.net/pcqa/
0936デフォルトの名無しさん
2005/10/06(木) 21:00:15ちなみに、言語はCです。
0937デフォルトの名無しさん
2005/10/06(木) 21:09:570938デフォルトの名無しさん
2005/10/06(木) 21:14:48レベルの低い質問が多くて萎えるな。
なんかこう、とんでもないコンパイラを作ってる
大物からの高度な質問はないもんかな。
0939デフォルトの名無しさん
2005/10/06(木) 21:22:120940デフォルトの名無しさん
2005/10/06(木) 22:15:530941デフォルトの名無しさん
2005/10/06(木) 22:34:01スクリプトでよければこの辺とかどうよ?
ttp://kmaebashi.com/
0942デフォルトの名無しさん
2005/10/06(木) 23:01:05日本語で読めるコンパイラ系の技術書で、これ以上のものってありますか?
0943デフォルトの名無しさん
2005/10/06(木) 23:04:160944デフォルトの名無しさん
2005/10/07(金) 04:41:570945デフォルトの名無しさん
2005/10/07(金) 18:10:18ワロタw
0946デフォルトの名無しさん
2005/10/07(金) 21:23:19隠れ?リンゴファンは結構いるみたいだなw
0947デフォルトの名無しさん
2005/10/07(金) 21:37:53そりゃAppleマニアは][以降結構いるわけであるからして(違
0948デフォルトの名無しさん
2005/10/08(土) 18:03:490949デフォルトの名無しさん
2005/10/08(土) 20:05:37古い言語=抵抗勢力
みたいなもの。
0950デフォルトの名無しさん
2005/10/08(土) 20:35:270951デフォルトの名無しさん
2005/10/08(土) 22:02:120952デフォルトの名無しさん
2005/10/08(土) 22:03:02関係ないけど、ビンボーとかいう言語なかった?
ちょっと思い出した。
0953デフォルトの名無しさん
2005/10/08(土) 22:24:290954デフォルトの名無しさん
2005/10/08(土) 23:56:37Plan9とかいうOSに乗ってたような気がする。
0955デフォルトの名無しさん
2005/10/09(日) 07:24:08Alef -> Plan 9
でも、使ったことない・・・
いや、それ以前にわざわざ使う必要のあるOSなのか?
それも、デスクトップOSとして・・・
0956デフォルトの名無しさん
2005/10/09(日) 20:26:53TNX ビンボーでなくリンボーか、しかもos
も違ってた、
ひとの記憶なんてあてにならんな。すまそ>>ALL
0957デフォルトの名無しさん
2005/10/10(月) 23:59:34あと 2 冊、本屋にあったんだけど?
テンプレの本が、あとの二冊を含むようなイメージでいいのですか?
(時期的にも、あとだし、量的にも多いし。。。)
0958デフォルトの名無しさん
2005/10/11(火) 08:30:09JavaCCでECMAScriptの文法を仕様書にしたがって書いたのですが、
そのままでは多数のエラーが出て使えませんでした。
左再帰に関しては中田先生の本にも書いてあったので回避出来たのですが、
"Choice conflict involving two expansions at ..."
などのエラーの回避の仕方がわかりません。
ConflictについてはJavaCCでLOOKAHEADを使って回避しましたが、
本当にそれで正しく回避できているかどうかの自信はありません。
質問はそのエラーについてではなく、一般的な文法の書き方についてです。
実際に文法を書く人が知っておくべき常識は一体どこで身につければよいでしょうか?
和文英文問いませんので、何か参考資料があれば是非教えてください。よろしくお願いします。
0959デフォルトの名無しさん
2005/10/11(火) 08:44:56日本語の本だとトップは中田本かドラゴンブックかだと思う。
>>957
いいよ。
0960957
2005/10/11(火) 18:32:27ありがとうございます。
テンプレの本を購入&読破して
なんとか、技術を身に着けたいと思います。
0961デフォルトの名無しさん
2005/10/11(火) 20:09:41conflictは文法が曖昧だということを意味するので、
エラーメッセージから文法のどの部分が曖昧なのかを調べ、
それを書き換えて曖昧さを除けばいいわけですが。
そもそも、LL文法とLR文法の違いは理解していますか?
0962デフォルトの名無しさん
2005/10/11(火) 20:22:01それは理解している、と思っています。少なくとも本に書いてあるレベルでは。
ただ、左再帰みたいに曖昧さはこうやれば毎回確実に解消できる、
もしくはある程度パターンが決まっていて普通はそのどれかに変換できる、
というようなものがあるのではないかと思ったのです。
一応コンフリクトの部分は自分で解析してまず問題ないと思う形に書き直しましたが、
書き直した形が書き直す前の形と確実に一致している自信がなく、
すべてのパターンのテストの方法もいまいちわかっていないので質問しました
0963デフォルトの名無しさん
2005/10/11(火) 20:49:14つ 書き直す前と後で受理する入力列が等しいことを構造帰納法で証明
0964デフォルトの名無しさん
2005/10/12(水) 21:42:40コンパイラのプロ?
0965デフォルトの名無しさん
2005/10/12(水) 22:21:230966デフォルトの名無しさん
2005/10/12(水) 22:34:37ttp://apple.jpn.ch/
0967デフォルトの名無しさん
2005/10/12(水) 23:26:46中田先生のお弟子さんが書いたコンパイラ本の中でたとえ話が全部りんご農家で語られているからです。
0968デフォルトの名無しさん
2005/10/12(水) 23:34:280969デフォルトの名無しさん
2005/10/12(水) 23:55:30凄いとおもうよ。ある意味、中田先生でもできなかったこと。
0970デフォルトの名無しさん
2005/10/12(水) 23:58:31うざい
0971デフォルトの名無しさん
2005/10/13(木) 00:42:33それか。俺もそれ買ったわw
0972デフォルトの名無しさん
2005/10/13(木) 01:48:45中田先生の本は学術書に入るから普通の本屋においてあるはずもないでしょうに(w
0973972
2005/10/13(木) 01:49:530974デフォルトの名無しさん
2005/10/13(木) 13:52:35浮動小数点定数を正規表現とCF文法で表すとどうなりますか?
0975デフォルトの名無しさん
2005/10/13(木) 15:14:54宿題は!
自分で解こうね?
0976デフォルトの名無しさん
2005/10/13(木) 19:00:360977デフォルトの名無しさん
2005/10/13(木) 21:10:460978デフォルトの名無しさん
2005/10/13(木) 22:45:390979デフォルトの名無しさん
2005/10/14(金) 08:15:500980デフォルトの名無しさん
2005/10/14(金) 19:23:520981デフォルトの名無しさん
2005/10/14(金) 19:59:36「コンパイラ・スクリプトエンジン」相談室7
http://pc8.2ch.net/test/read.cgi/tech/1129287390/
です。
0982デフォルトの名無しさん
2005/10/15(土) 00:14:33埋めようか
0983デフォルトの名無しさん
2005/10/15(土) 01:51:290984デフォルトの名無しさん
2005/10/15(土) 02:15:560985デフォルトの名無しさん
2005/10/15(土) 02:36:33980超えれば時間がくれば自動的に落ちる
0986デフォルトの名無しさん
2005/10/15(土) 06:32:15それはしらなかったが、そうだとしても無駄に埋めると何か逆効果があるの?
0987デフォルトの名無しさん
2005/10/15(土) 06:37:310988デフォルトの名無しさん
2005/10/15(土) 08:15:17どこ?それ。
0989デフォルトの名無しさん
2005/10/15(土) 09:42:090990デフォルトの名無しさん
2005/10/15(土) 18:38:570991デフォルトの名無しさん
2005/10/15(土) 19:04:440992デフォルトの名無しさん
2005/10/15(土) 19:51:060993デフォルトの名無しさん
2005/10/15(土) 20:05:110994デフォルトの名無しさん
2005/10/15(土) 21:53:000995デフォルトの名無しさん
2005/10/15(土) 22:13:070996デフォルトの名無しさん
2005/10/15(土) 22:18:33↓
0997デフォルトの名無しさん
2005/10/16(日) 01:17:300998デフォルトの名無しさん
2005/10/16(日) 01:32:430999デフォルトの名無しさん
2005/10/16(日) 01:33:041000デフォルトの名無しさん
2005/10/16(日) 01:33:5810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。