07/09/02 08:14:32
Wikiのまとめページ
URLリンク(www6.atwiki.jp)
★コンパイラ一般
・色々なツールの紹介
URLリンク(catalog.compilertools.net)
・コンパイラ関連のリンク集
URLリンク(www.ulis.ac.jp)
・スクリプティング言語資料室(仮) (リンク集)
URLリンク(www.kt.rim.or.jp)
・Compiler Construction
URLリンク(www.ie.u-ryukyu.ac.jp)
・情報システム工学実験 III コンパイラ・コンパイラ
URLリンク(math.cs.kitami-it.ac.jp)
・OS/Programming 簡単な C コンパイラ
URLリンク(www.csg.is.titech.ac.jp)
・正規表現
URLリンク(hp.vector.co.jp)
・コンパイラ研究・開発情報の一集積所
URLリンク(compilers.cs.uec.ac.jp)
・Links and Selected Readings
URLリンク(www.gnu.org)
・国産のコンパイラ共通インフラストラクチャCOINS
URLリンク(www.coins-project.org)
3:デフォルトの名無しさん
07/09/02 08:15:05
★字句・構文解析
・Lex and YACC primer/HOWTO (邦訳)
URLリンク(www.linux.or.jp)
・Turbo Pascal Lex/Yacc
URLリンク(www.musikwissenschaft.uni-mainz.de)
・Jim Roskind's LALR(1) C++ Grammar
URLリンク(www.empathy.com)
・Flexと Bisonを同時に使う
URLリンク(guppy.eng.kagawa-u.ac.jp)
・KITE_ASM (yacc,lex)
URLリンク(www.arch.cs.kumamoto-u.ac.jp)
・bison用のC++ LALR skeleton
URLリンク(www.bj-ig.de)
・ANTLR(非yaccのパーサジェネレータ)
URLリンク(www.antlr.org)
・JavaCC(Java Compiler Compiler)
URLリンク(javacc.dev.java.net)
URLリンク(village.infoweb.ne.jp)
URLリンク(www.asahi-net.or.jp)
・CUP, JLex, JFlex
URLリンク(www.cs.princeton.edu) (JLex, CUP)
URLリンク(www.jflex.de)
・SableCC
URLリンク(www.sablecc.org)
・¬<><∪∪ (notavacc)LALR(1)
URLリンク(ne.cs.uec.ac.jp)
・boost::spirit(C++のテンプレートでEBNFの構文を模倣)
URLリンク(spirit.sourceforge.net)
URLリンク(boost.cppll.jp)(マニュアル日本語化プロジェクト)
URLリンク(www.fides.dti.ne.jp)
4:デフォルトの名無しさん
07/09/02 08:15:35
★ごみ集め
・GC FAQ -- draft
URLリンク(www.iecc.com)
・A garbage collector for C and C++
URLリンク(www.hpl.hp.com)
・一般教養としての Garbage Collection
URLリンク(www.is.s.u-tokyo.ac.jp)
・Garbage Collection : Algorithms for Automatic Dynamic Memory Management
URLリンク(www.amazon.com)
★処理系,スクリプト
・kikyou.info (吉里吉里というゲームのスクリプト)
URLリンク(kikyou.info)
・tiny C コンパイラ (C)
URLリンク(www.watalab.cs.uec.ac.jp)
・6809用 Micro C コンパイラ
URLリンク(www.axe-inc.co.jp)
・Portable Object Compiler (Obj-C >> C のトランスレータ?)
URLリンク(users.pandora.be)
・自作コンパイラの部屋(PL/1, Pascal等)
URLリンク(www.tokumaru.org)
・『Rubyソースコード完全解説』サポートページ
URLリンク(i.loveruby.net)
・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』
URLリンク(www.okisoft.co.jp)
・MSによるPEフォーマット仕様書(日本語)
URLリンク(www.interq.or.jp)
5:デフォルトの名無しさん
07/09/02 08:16:57
★学会
・PLDI
URLリンク(research.microsoft.com)
コンパイラの研究に関する最新成果を知りたければまずはここ。
・POPL
URLリンク(www.cs.princeton.edu)
PLDIよりは理論寄りだが大いに参考になる。
・ICFP
URLリンク(icfp06.cs.uchicago.edu)
関数型言語に関する学会。とても難しい。
・OOPSLA
URLリンク(www.oopsla.org)
オブジェクト指向言語に関する学会。最近はやや低調?
・ICCC
URLリンク(www.st.cs.uni-sb.de)
ヨーロッパ系。派手さはないが堅実。
6:デフォルトの名無しさん
07/09/02 08:17:40
★参考書籍
・コンパイラ 原理・技法・ツール 1&2
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
通称ドラゴンブック。バイブル。
・コンパイラ構成法 原田 賢一
URLリンク(www.amazon.co.jp)
URLリンク(www.hara.cs.keio.ac.jp) (ソース、正誤表のダウンロード)
・プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
URLリンク(www.amazon.co.jp)
一冊で済ませたい人へ。
・コンパイラの構成と最適化 中田 育男
URLリンク(www.amazon.co.jp)
最適化がメインだが、構文解析からコード生成までの基本事項も解説されている。
・コンパイラの仕組み 渡邊 坦
URLリンク(www.amazon.co.jp)
薄い奴(185p)を読みたい人に。
・21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
URLリンク(www.amazon.co.jp)
まだ出ていない。
・スモールコンパイラの制作で学ぶプログラムのしくみ
URLリンク(www.cbook24.com)
初心者向けの優しい解説本。
以上
7:デフォルトの名無しさん
07/09/02 12:08:54
おつ
8:デフォルトの名無しさん
07/09/02 12:28:37
spiritってコンパイラスクリプトエンジンに使うのにどうなんだろ?
っていうか、再帰下降パーサ自体どうなんだろ?
9:デフォルトの名無しさん
07/09/03 08:26:48
Bison -y Exr.yでy.tab.cを作って
gcc y.tab.c -ly -o E
でEという構文解析プログラムを作りました。
で、./E[enter]
して 1+1とか式を入れるとSyntax Errorが出ます。
原因としては何が考えられるでしょうか?Cygwin使ってます。
文法プログラムは「コンパイラ構成法」p21の
%%
input : expr '\n' ;
expr : expr '+' term | expr '-' term | term ;
term : term '*' factor | term '/' factor | factor ;
factor : 'i' | '(' expr ')' ;
%%
yylex()
{
return getchar();
}
です。
10:デフォルトの名無しさん
07/09/03 08:42:46
>>9
そりゃ1+1はその文法に合わない入力だからじゃね。i+iなら通る。
試験するときは文法に適う入力かどうかを考えないと。
つまり、1+1でsyntax errorになったのは正しい動作だったということだ。
文法を定義する時に自分でどういうものを受け入れるかは分かっているんじゃないのかね?
それとも、どこかからサンプルを持ってきて適当に改造したから、
何をやっているか自分でも分からないとか?
11:10
07/09/03 08:56:53
あ、あと、
input : expr '\n' ;
って定義だと例えば'i' '+' 'i' '\n'の入力で受容された後は、
何が入力されてもsyntax errorになるのは分かってるよね?
12:デフォルトの名無しさん
07/09/03 09:02:33
10さんありがとうございます。自分がやってることが分かってませんでした。
いまいじくって理解しました。
13:デフォルトの名無しさん
07/09/03 14:53:26
HaskellでScheme処理系を実装するチュートリアル「Write Yourself a Scheme in 48 Hours」
URLリンク(halogen.note.amherst.edu)
14:デフォルトの名無しさん
07/09/08 13:37:10
ゲーム開発用にC言語の文法がそのまま使えるスクリプト言語を作ってるのですが、
配列や構造体の初期化処理をどうスマートに実装しようか悩んでます。
特に、ローカル変数の初期化時に変数を用いて初期化する点など。
なにか良い方法や参考資料とかないでしょうか?
15:デフォルトの名無しさん
07/09/08 14:34:35
>C言語の文法がそのまま使えるスクリプト言語
普通にC言語使うのとどう違うのか。
まぁコンパイルが面倒いとか安全性とかあるんだろうけど。
ちなみにこんなものもある。
URLリンク(root.cern.ch)
配列や構造体の初期化は、内容が固定ならmemcpy、変数が混ざってるなら1個ずつ代入するしかないんでない?
実際のCコンパイラが吐くコードを見てみたらいかが。
16:14
07/09/08 15:31:16
> 実際のCコンパイラが吐くコードを見てみたらいかが。
確かにw、ちょっと調べてみます。
> 普通にC言語使うのとどう違うのか。
一応、ゲーム用に文法を拡張して使用する予定。
並列処理(ノンプリエンプティブ)用の文法と、イベント処理用の文法は組み込みたいな、と。
あと、データ構造定義のヘッダーをCとスクリプトで共有するのも目的です。
CINTは本も持っているのですが・・・、挫折しました。
17:デフォルトの名無しさん
07/09/08 16:27:14
>>13
これ良さそうですね。
ちょうどHaskellでそれなりの規模のプログラムを作ってみたかった所なので
これにそってやってみます。
18:デフォルトの名無しさん
07/09/09 15:39:13
>>14
LuaとかSquirrelじゃダメなん?
19:14
07/09/09 19:50:01
Squirrelは初めて知りました。参考にさせてもらいます。
VCで配列や構造体のローカル変数の初期化をアセンブリ言語に吐き出してみたんですが、
既値での初期化でも思いのほか代入の羅列処理でした。
あんまり悩まずに、この方法で実装してみます。
20:デフォルトの名無しさん
07/09/10 12:52:50
tcc: tiny c compiler
URLリンク(fabrice.bellard.free.fr)
出遅れたがコンパクトで追いやすいと思う
21:14
07/09/10 19:03:29
> tcc: tiny c compiler
ありがとうございます。
これも参考にさせてもらいます。
22:デフォルトの名無しさん
07/09/23 01:43:08
スレリンク(gamedev板)
23:デフォルトの名無しさん
07/09/23 17:57:37
bisonとflexを組み合わせて使う場合、
bison側のコードからyyinを参照するにはどうしたらいいのでしょうか?
extern FILE *yyin;
main(){
while(!feof(yyin)){
yyparse();
}
}
上のような感じで使おうとしたところ「yyinは宣言されていない」
という旨のエラーが出てしまいました。
24:デフォルトの名無しさん
07/09/26 13:26:55
Ginってどうよ???
25:デフォルトの名無しさん
07/09/26 14:52:17
ご自分で判断なされては
26:デフォルトの名無しさん
07/09/26 22:23:37
(´;ω;`)ブワッ
27:デフォルトの名無しさん
07/10/04 16:16:32
Low Level Virtual Machine - Wikipedia
URLリンク(ja.wikipedia.org)
The LLVM Compiler Infrastructure Project
URLリンク(llvm.org)
これは外出?
28:デフォルトの名無しさん
07/10/05 01:39:02
俺はGin見て、アイデアが思い浮かんだのでありがてぇ思っただよ
29:デフォルトの名無しさん
07/10/05 12:57:30
Ginって?
30:デフォルトの名無しさん
07/10/07 21:19:06
>>29
javascriptのパーサジェネレータです。
URLリンク(nanto.asablo.jp)
31:デフォルトの名無しさん
07/10/07 23:33:45
やれやれだぜ
もうパーサジェネレータの話は禁止しようぜ
ここからパーサジェネレータから先の話だけな
32:デフォルトの名無しさん
07/10/08 21:38:24
勝手に決めるなよ
33:デフォルトの名無しさん
07/10/09 01:00:16
ANTLR 3 をC言語で扱うサンプルないかな?
それかANTLR3に近いパーサないかな?
34:デフォルトの名無しさん
07/10/10 21:18:42
>>27
まじ凄いんじゃね?
というぐらいしか俺にはわからんが
詳しい人解説たのむ
35:デフォルトの名無しさん
07/10/11 23:51:33
解説も何も見たままだが。
用語が判らんとかなら>>6の本でも読め。
36:デフォルトの名無しさん
07/10/12 10:35:55
そういえば、parrotって完成する日が来るんだろうか
37:デフォルトの名無しさん
07/10/12 13:06:34
>>27
は、最適化されたVMを提供するようだが、
使っている人のサイトとかみると、
実際はまだまだ未完成でバグバグみたい
38:デフォルトの名無しさん
07/11/06 13:39:44
LL(1)は構文木作るの面倒だな。
39:デフォルトの名無しさん
07/11/11 12:18:03
コンパイラ構成法 原田 賢一著
を読んでいっているのですが、理解できないところが多々あります。
演習問題の解答、解説等が載っている本などはありませんか?
40:デフォルトの名無しさん
07/11/12 06:37:16
>>6は切れてるな
あきらめろ
41:デフォルトの名無しさん
07/11/23 00:11:12
東京大学の言語処理系(mini-Python)を作る講義資料 2006年版
URLリンク(www.logos.ic.i.u-tokyo.ac.jp)
2007年版
URLリンク(www.logos.ic.i.u-tokyo.ac.jp)
俺にもPython作れる気がしてきた
42:デフォルトの名無しさん
07/11/23 11:23:55
>41
中身まだ全部見てないけど面白そう。こういう講義受けたかったな。
新しい方(2007年版)って今講義中なのか。
43:デフォルトの名無しさん
07/11/23 22:10:46
LALRのパーサー使ってきたけど、文法が複雑になると、Shift-Reduce衝突を除去するのに
一苦労。で、LL(*)のパーサーを使い始めたが、左再帰除去しないといけないので可読性に多少難あり。
でも、慣れれば、複雑な文法定義するのにLL(*)のパーサーの方が開発しやすいのかも。そんな予感。
44:デフォルトの名無しさん
07/11/25 21:34:15
いいなあ東大。めっちゃ楽しそう
俺の頭では入れなかったよ
45:43
07/11/25 22:08:15
Expr = OrExpr
OrExpr = AndExpr { "OR" AndExpr }
AndExpr = NotExpr { "AND" NotExpr }
NotExpr = "NOT" NotExpr | CompExpr
CompExpr = AddSubExpr { ("="|"<"|">"|"<="|">="|"<>") AddSubExpr
AddSubExpr = MulDivExpr { ("+"|"-") MulDivExpr }
MulDivExpr = Primary { ("*"|"/") Primary }
Primary = NUMBER | ("+"|"-") Expr | "(" ExprList ")"
ExprList = Expr { "," ExprList }
これで、優先順位OR<AND<NOT<比較演算子<2項+-<2項*/<単項+-で括弧付きが最優先になるよな?・
後、単なるスカラー値のみじゃなく、(3,4) = (2,3)や((3,4),(5,1)) + (5,1)
などもacceptできるよな?
LL(*)のやっぱ、楽そうだな。
46:43
07/11/25 22:11:57
いや、上の文法だと単項+-と括弧付きの優先順位まずいかも。うむむ。
47:43
07/11/25 22:14:56
ExprList = Expr { "," ExprList }
は
ExprList = Expr { "," Expr } だった。
48:43
07/12/01 13:31:25
MulDivExpr = UnaryExpr { ("*"|"/") UnaryExpr }
UnaryExpr = [("+"|"-")] Primary
Primary = NUMBER | "(" ExprList ")"
だった。
LLパーサー何気にいいんだけど、セマンティックアクションの実行されるタイミングがようわからん。
例えば、
AddSubExpr =
MulDivExpr
{
("*"|"/") MulDivExpr (. アクション .)
}
で、"*"まではパース成功して、右のMulDivExprで失敗してもアクションが実行される。
うーん。構文チェックだけならいいけど、構文木作ると、エラー時に上手くか書かないと
迷子のノードができて、メモリリークなる。orz
49:デフォルトの名無しさん
07/12/01 13:44:32
確保したメモリをすべてグローバル変数にリンクリスト形式で繋いでいって、パース終了後にまとめて解放、とか
50:デフォルトの名無しさん
07/12/02 00:02:14
Objective-Cで書かれたLisp風のプログラミング言語「Nu」
URLリンク(programming.nu)
Java VM上で動くLisp風のプログラミング言語「Clojure」
URLリンク(clojure.sourceforge.net)
51:デフォルトの名無しさん
07/12/02 00:10:14
Lisp風の言語ならそっくりLispの方がありがたいんだが要するにLisp1等価って事だよな?(RnRSに従わないCommonLispは満たさない)
52:デフォルトの名無しさん
07/12/07 12:47:00
ClojureはASMっていうバイトコードジェネレータを使ってるんですね。
ASMはBCELやSerpより軽量で高速でgroovyでも使われてて
サイズがBCELが350KB、SERPが150KB、ASM 2.2が33KB
だそう。GroovyやJRuby等で使われてるみたい。
53:デフォルトの名無しさん
07/12/12 00:41:53
MikoScript 言語
URLリンク(www.venus.dti.ne.jp)
54:デフォルトの名無しさん
07/12/13 00:17:51
箱?
55:デフォルトの名無しさん
07/12/13 00:29:19
何用の言語なんだろ?
オレオレ言語としては機能が充実してるけど、
何かに特化してるわけじゃなさそうだし。
56:デフォルトの名無しさん
07/12/13 01:11:04
自作エディタに使ってるみたい
URLリンク(www.venus.dti.ne.jp)
57:デフォルトの名無しさん
07/12/13 01:19:08
>>53
『本格的なオブジェクト指向プログラミング』って書いてあるけど、
何が出来たら本格的なんだろうか。そこに書いてある限りでは、
クラスが定義出来てインスタンスが生成出来て継承関係を作れる
みたいだけど、リフレクションとかインスペクトが出来るわけでは
なさそう。
58:デフォルトの名無しさん
07/12/16 16:22:45
プロトタイプベースのオブジェクト指向に対して
クラスベースのオブジェクト指向を本格的といってるのかもしれませんね。
59:デフォルトの名無しさん
07/12/16 16:44:08
本格的とか元祖とかを付けるとウケがいいからだろう
特に意味を考えてるとは思わない
60:デフォルトの名無しさん
07/12/16 16:49:40
自分の言語ならそのへんはこだわりを持ってるのが普通じゃないか?
「本格的オブジェクト指向ってなんですか」とでも訊けば語ってくれるよ多分。
61:デフォルトの名無しさん
07/12/16 16:52:28
あくちぶべーちっくは本格的ですか?
62:デフォルトの名無しさん
07/12/19 07:42:19
そもそもオブジェクト指向みたいな現場から発生した醜いパラダイムに
本格的も糞もないだろうにw
63:デフォルトの名無しさん
07/12/19 09:22:44
ほー、PARC は現場なのか。へー。
64:デフォルトの名無しさん
07/12/19 09:37:58
そうだよ
65:デフォルトの名無しさん
07/12/19 12:55:53
>>62をゴールドバーグ女史が読んだらなんと言うだろう
66:デフォルトの名無しさん
07/12/19 14:01:54
申し訳ない、私は日本語は読めないんです
という主旨のことを言うのでは
67:デフォルトの名無しさん
07/12/19 22:55:40
HTTPのRFCを見るとヘッダの文法がBNFで書かれていました。なので、yaccとlexを使えばHTTPヘッダを解析できるかなと思った
のですがlexで入力をトークンに分割するのが難しそうで行き詰まりました。Java等のプログラム言語だと、コメント部分でもない
限りトークンの区切りは空白文字でよいし、+を見たらPLUSとか適当なトークンとして認識すればよいしで字句解析部分はわりと
簡単そうですが、HTTPだと、たとえばAという文字を見たときに、UPALPHAと認識すればよいのか、HEXと認識すればよいのか、
それとも状況(lexの状態?)に応じて、数文字まとめて別のトークンとして認識したほうがよいのか、よくわかりません。UPALPHA
とかHEXというのは、URLリンク(rfc-ref.org) に載ってる終端記号名です。
こういう場合、どう字句解析を行うのがよいでしょうか?どういう細かさのトークンをyaccに上げればよいでしょうか?
練習として、BNF通りのヘッダであればどんなに複雑なものであってもパースできるパーサを作ってみたいのです。
アドバイスをお願いします。
68:デフォルトの名無しさん
07/12/19 22:58:51
まずは日本語をしっかりな。
69:デフォルトの名無しさん
07/12/20 06:11:47
BNFで表現してあったって文脈自由とは限らないと思うんだぜ。
まあパーサからレクサへ状態を渡すとかするんだけど、それはそれで大変だし
何もlex使わなくてもパーサを手書きすればいいじゃん。
自分で手書きできない人だったらlex/yacc使ってもあまりいい目は見ない気がする。
70:デフォルトの名無しさん
07/12/20 11:16:55
>>69
BNFで表現できるのは文脈自由文法であると習いましたが違うんですか???
パーサ手書きでもいいんですが、たとえばどのような構成にするのでしょうか?
71:デフォルトの名無しさん
07/12/20 18:06:38
とりあえず、英大文字・小文字は1文字づつyaccにあげればいいんじゃ?
で16進数の構文をyaccで定義すれば?
72:デフォルトの名無しさん
07/12/20 18:23:56
yacc デカルチャー
73:デフォルトの名無しさん
07/12/20 18:59:52
>>72
なんつー古さだ(20年前ぢゃねぇか:実はperlネタのところでも見かけた)
74:デフォルトの名無しさん
07/12/20 21:00:53
>まあパーサからレクサへ状態を渡す
こんなことできたっけ?
75:デフォルトの名無しさん
07/12/20 22:10:24
レクサーを自前なら可能だけど、lexではできない。flexはしらね
76:デフォルトの名無しさん
07/12/20 22:18:47
(f)lexはlexer内で状態遷移できるよ。Cのコメント分を字句解析するときに使う奴。
77:デフォルトの名無しさん
07/12/20 22:51:15
>>71
本当に1文字づつ以外読まないのなら、字句解析を一切していないのと変わらないと思うんだがw
78:デフォルトの名無しさん
07/12/21 03:07:51
>>73
最近よく見かけるようになったのは
再放送してるからだろうw
79:デフォルトの名無しさん
07/12/21 07:11:04
>>77
字句解析一切していないからってそれがどうしたんだよ。
80:デフォルトの名無しさん
07/12/23 13:48:08
字句解析が不要ってこと?
81:デフォルトの名無しさん
07/12/23 18:55:50
え?字句解析してない?しまった~~下手こいた~~~
ズン・ズン・ズン・ズン
82:デフォルトの名無しさん
07/12/23 19:00:40
ツマンネ
83:デフォルトの名無しさん
07/12/26 02:32:43
>>53
MikoScript面白いですね。
リレー型関数コール演算子は、Rubyみたいに、下手な既存classの拡張をせずとも、
メソッドを追加したように見せかけたり、
既存の関数を、作成したclassのメソッドのように見せかけたりできる。
puts("hoge");
を
"hoge"'puts;
と書いたり、
a = int(1234.56)
を
a = 1234.56'int
と書いたり。
代入型の関数コール形式は、
言語仕様としては、シンタックスシュガーの域を出ないが、
全てがオブジェクトではない、言語にはよさそうな仕様。
コマンド型の関数コール形式は、ま、いらんなw
ところで、箱がいまいちわからん???
84:デフォルトの名無しさん
07/12/26 02:33:12
> 代入型の関数コール形式は、
>
> 言語仕様としては、シンタックスシュガーの域を出ないが、
> 全てがオブジェクトではない、言語にはよさそうな仕様。
代入型の関数コール形式も、
言語仕様としては、シンタックスシュガーの域を出ないが、
全てがオブジェクトではない、言語にはよさそうな仕様。
ミス・・・
85:デフォルトの名無しさん
07/12/26 03:49:24
どのへんが本格的なの?
86:デフォルトの名無しさん
07/12/28 13:42:40
xtal
URLリンク(code.google.com)
87:デフォルトの名無しさん
08/01/01 16:03:44
>>41
こんな感じで他の大学も講義の資料公開(?)してくれると嬉しいな。
講義で使ってる本の紹介だけでもいい。
アメリカみたいに講義をpodcastで公開してくれなくてもいいから
雑誌も減ってきてるし、なかなか体系だって勉強できるネタが少ないのが最近の悩みだから
88:デフォルトの名無しさん
08/01/01 16:14:04
おっぱいそん入門
ぷりんとぼいん ”こんにちは おっぱい!”
89:デフォルトの名無しさん
08/01/01 16:16:58
>>87
ガベージコレクションが気になった
mallocをGC_MALLOCに変えるだけでfleeいらずとはこれいかに
90:デフォルトの名無しさん
08/01/01 16:29:50
>>89
Keep your dog free from flea!
91:デフォルトの名無しさん
08/01/01 16:32:08
>>90
OK. I understand!!! Thanks. :D
92:デフォルトの名無しさん
08/01/01 19:07:36
これいかに、ってベームGCだろ条項
93:デフォルトの名無しさん
08/01/02 01:25:54
ぼえーむじーしーと読んでたのは俺とお前だけの秘密だぜ
94:デフォルトの名無しさん
08/01/02 01:53:27
La BohemeGC
95:デフォルトの名無しさん
08/01/02 02:08:29
ぼへむじーしーってよんだmした><
96:デフォルトの名無しさん
08/01/02 10:16:26
オペラだったらボエームって読んでええんでないの?
97:デフォルトの名無しさん
08/01/02 16:06:38
BGCか
98:デフォルトの名無しさん
08/01/12 23:46:38
ふと思ったんだが、バイトコードのコンパイラって可能?
例えば、Javaとか.NETのソースをコンパイルしてできた、バイトコードをネイティブ形式にコンパイルする
99:デフォルトの名無しさん
08/01/12 23:49:11
GCJはclassファイルをネイティブにコンパイルしてるよ
100:デフォルトの名無しさん
08/01/13 00:03:08
>>98
なんのための JIT なんだ?
101:デフォルトの名無しさん
08/01/13 02:19:59
>>99
にわかですまんが
ネイティブってことは逆にVMじゃ動かんの?GCとかどうしてんだ?
102:デフォルトの名無しさん
08/01/13 11:57:23
gcjでネイティブコンパイルしたら本物のネイティブコードになるのでVM上では動かない
GCとかは実行ファイルにリンクするランタイムライブラリ(libgcj)に含まれてる
103:デフォルトの名無しさん
08/01/13 14:22:38
>>101
更にgcjのランタイムにはJVM相当機能も含まれてて.classの実行もできる.
なのでjarの動的ロードとかも可能になってる.
# クラスライブラリ足りなくて実用するのは大変だが…
104:101
08/01/13 15:38:31
>>102-103
なるほど、ありがとう。
しかし、
URLリンク(www.shudo.net)
↑を見る限りパフォーマンスでのメリットがないw
105:デフォルトの名無しさん
08/01/13 18:17:52
caperのなかのひとサルでも分かるチュートリアルつくってorz
特に構文木のところがサパーリ
106:デフォルトの名無しさん
08/01/13 18:26:04
105じゃないけど、caperべんりです、ありがとさんです。
107:デフォルトの名無しさん
08/01/13 20:39:18
caperって?
108:デフォルトの名無しさん
08/01/13 21:32:28
ググレスカ
109:デフォルトの名無しさん
08/01/13 22:33:42
Cygwinいんすこして、bison-2.1.exeとflex-2.5.4a-1.exeをいんすこしたんだけど、
flexを動かそうとすると、bash: flex command not foundとでます
どーやれば、うごかすことができるんすか?
110:デフォルトの名無しさん
08/01/14 01:40:22
>>104
今のJVMは起動時間はクソ遅いけど処理自体はそれなりに速いからねぇ…
gcjでネイティヴバイナリ化するとアプリの起動時間はJVMより速くなる.
が,処理時間は正直速くならんね…
111:デフォルトの名無しさん
08/01/14 12:39:53
URLリンク(www.shudo.net)
でもいい話を聞いた。
VMでどのOS上でも動かせるJAVAがネイティブコンパイルで多分単体で実行できるなら配布しやすいし
多分DirectX使った高速化も・・・・
けどここのサンプルシューティングは動かん。
IE用JavaMV入れただけだけどコマンドラインでJAVA呼び出せるんだけどなんでだろ。
URLリンク(www.hcn.zaq.ne.jp)
112:デフォルトの名無しさん
08/01/14 13:31:46
Cygwinいんすこして、bison-2.1.exeとflex-2.5.4a-1.exeをいんすこしたんだけど、
flexを動かそうとすると、bash: flex command not foundとでます
どーやれば、うごかすことができるんすか?
113:デフォルトの名無しさん
08/01/14 19:14:45
>>105-107
caperおもしろいな
あとは、軽い汎用VMでもあれば、お手軽自作言語が簡単にという夢を見た
114:デフォルトの名無しさん
08/01/14 19:35:25
VMは作るのだけならそんなに難しくないよ。
むしろ既存のVMに乗せる方が困難なんじゃないだろうか。
115:デフォルトの名無しさん
08/01/14 19:59:03
>>114
同意。
組み込みでメモリ制限がきつい時にマクロの一種としてVM作ること多いんだけど、マジでそう思う(VMも似通ってるけど特殊なプリミティブが組み込み対象別なのでメモリ制限の関係でいまいち統一的に扱えない)
116:デフォルトの名無しさん
08/01/15 06:22:07
Pコードか!
117:デフォルトの名無しさん
08/01/15 12:43:14
似たようなもの。
セルフコンパイル、自己デバッグくらいは処理できる(実機ではそんなメモリないけど、エミュをデスクトップ機上に簡単に作れるのでそちらでデバッグ)
32KワードくらいのRAMのうち16K自由にできれば自己完結環境になれるからね>>pcodeがUCSDのだとすると
118:デフォルトの名無しさん
08/01/16 19:58:47
p2cコンパイラをcygwin環境で動かすにはどうしたらいいですか?
119:デフォルトの名無しさん
08/01/19 03:01:23
GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
URLリンク(wiki.livedoor.jp)
日本語のGC解説は珍しいね
120:デフォルトの名無しさん
08/01/19 11:59:22
おー
簡単な物は大学の授業や演習の資料とかではあるけど
ネット上でブラウザで閲覧可能でまとまってるものはごくわずかだからなぁ
121:デフォルトの名無しさん
08/01/24 19:55:09
MS-DOSのバッチファイルのBNFってどこかに落ちてませんかね。
googleしてみた限りでは見つからないのですけれども・・・。
122:デフォルトの名無しさん
08/01/24 19:57:32
バージョン違いがあるし、難しいんじゃないかなあ?
そもそもコマンドベース言語だし。
過去、バッチを読み込むプログラムは存在してるから、
その作者に連絡とってみるとか。
123:デフォルトの名無しさん
08/01/24 20:00:41
テンプレにある、コンパイラ構成法の正誤表がアクセスできん。
124:デフォルトの名無しさん
08/01/24 20:19:09
GCって昔読んだ説明から、何ひとつ進歩してないような気がする。
気のせいか?
125:121
08/01/24 21:12:43
>>122
レスありがとうございます。
引き続きもうちょっと色々と調べてみようと思います。
126:デフォルトの名無しさん
08/01/25 00:58:25
>>124
> GCって昔読んだ説明から、何ひとつ進歩してないような気がする。
> 気のせいか?
最近の動向を含んだ解説がまだあまり出回ってないから。
個人的に記憶に残っているものをいくつか。
・理論系
・URLリンク(home.pipeline.com)
・タイトルが思い出せないのだが、リファレンスカウントと
ガベージコレクションは双対である、とかなんとかそんなの。
・実装系
・URLリンク(www.nminoru.jp)
・URLリンク(sdc.sun.co.jp)
127:デフォルトの名無しさん
08/01/25 22:47:41
>>124の言う昔が僕の言う昔と違うことだけはわかる。
ここ5年だったらあんまりかわらんが、10年だとだいぶ違う。
128:デフォルトの名無しさん
08/01/26 20:14:12
statements や expression や leftvalue(左辺値) などの意味は分かるのですが、
primary とはどういった時に使われるのでしょうか?
あるいは、どういったものをいうのでしょうか?
129:デフォルトの名無しさん
08/01/26 20:51:11
primary expression (一次式) なら定数や変数など
それ以上分解できない式のことだが
130:デフォルトの名無しさん
08/01/26 22:49:24
GCが進歩したのはJavaのおかげ。
Lispだけではとてもとても。
131:デフォルトの名無しさん
08/01/26 23:39:24
>>129
そういう意味でしたか、どうもありがとうございました。
132:デフォルトの名無しさん
08/01/26 23:49:21
> ・タイトルが思い出せないのだが、リファレンスカウントと
> ガベージコレクションは双対である、とかなんとかそんなの。
A Unified Theory of Garbage Collection
133:デフォルトの名無しさん
08/01/27 17:53:05
>>130
Lisper(笑)
134:デフォルトの名無しさん
08/01/30 05:35:37
LisperはN64で使われてるとかいろいろ誇らしげに言うからな
GCは進歩したのもLispのおかげなんだよ
135:デフォルトの名無しさん
08/01/30 08:00:39
>>134
GCに一番寄与したのってSUNのプロダクトだとjavaよりselfじゃないのかな?
136:デフォルトの名無しさん
08/01/30 13:57:09
「A Scala Tutorial for Java programmers」日本語訳 (PDF注意)
URLリンク(homepage.mac.com)
オブジェクト指向+関数型なScalaのチュートリアル
こういう言語の話題はどこもってけばいいんだ
137:デフォルトの名無しさん
08/01/30 14:02:00
ここ(笑)
とは趣旨が違うよなぁ。
なにか新しい言語を、作りたい人じゃなくて使いたい人のためのスレか。
138:デフォルトの名無しさん
08/01/30 14:21:02
OOP言語統合とか、関数型統合とかないからねえ
OOはネガティブなスレしかないw
139:デフォルトの名無しさん
08/01/30 23:24:11
>>119 のid:authorNari がGC本の翻訳希望者つのってる。本気かいな・・・てか需要あるんかいな・・・
140:デフォルトの名無しさん
08/01/30 23:36:23
LISP使いの人が一番だなって感じたことがあるんだけど、
それは、
プライドの高さ。(マジ
141:デフォルトの名無しさん
08/01/31 00:04:15
>>140
なんで? どの辺が??? そんなプライド高くねぇとおもうぞ………
少なくとも俺のしってる奴は, みんな, C とかアセンブラとか書けるし…
そう言う問題とはちゃう?
142:デフォルトの名無しさん
08/01/31 00:06:54
>>140
ワシはLisp使いだがプライドって旨いのか?
まだ食った事ないぞ
143:デフォルトの名無しさん
08/01/31 00:21:07
Lisp を貶せば自分が高みに上がれると思ってる奴ってまだ居たんだな
この多言語時代に、とっくに絶滅したと思ってたよ
144:デフォルトの名無しさん
08/01/31 00:50:57
にじみ出るプライドが俺を呪い殺そうとしている^p^
145:デフォルトの名無しさん
08/01/31 05:49:48
せっかく煽ったのに、内容がここまで勘違い全開だと恥ずかしいな。
146:デフォルトの名無しさん
08/01/31 09:00:35
>>145
馬鹿が見る豚のケツって言葉を思い浮かべた
147:デフォルトの名無しさん
08/01/31 15:59:54
lisp = 鮫島事件
おや?誰か来た様だ
148:デフォルトの名無しさん
08/01/31 22:44:45
俺はJavaとか使ってる奴とは違う。
149:デフォルトの名無しさん
08/01/31 22:50:39
かわいそうに、java屋以下とは……
150:デフォルトの名無しさん
08/02/01 07:25:09
馬鹿さ比べでjava屋以下になっても
あんまり悔しくないよなぁ
151:デフォルトの名無しさん
08/02/01 08:28:16
所詮Windowsなんて使ってる以上、どちらも一緒
152:デフォルトの名無しさん
08/02/03 15:47:22
ruby v.s. php か
153:デフォルトの名無しさん
08/02/03 15:52:37
お前ら >>1-6 を読め
ただのLL談義はスレ違いだ
154:デフォルトの名無しさん
08/02/03 20:28:11
LL談義は、こちらで盛り上がってるのでどうぞ
【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
スレリンク(tech板)
155:デフォルトの名無しさん
08/02/03 22:16:59
質問です。
bisonで、下のリストのconflictがどうしても消せません。
通常の式と、定数式を別に扱いたいんですが、両方にある単項マイナスが
解決できないようです。
%precを使ってもうまくゆきません。
どうにかならないでしょうか?
--
%token tkNUM tkVAR
%left EXPC
%left '+'
%right '-'
%%
/* 式 */
exp:
expc %prec EXPC
| tkVAR
| exp '+' exp
| '-' exp
;
/* 定数式 */
expc:
tkNUM
| expc '+' expc
| '-' expc
;
%%
156:デフォルトの名無しさん
08/02/03 22:26:05
>>31
157:デフォルトの名無しさん
08/02/03 22:42:43
ところでみんな、コンパイラ/インタプリタを作るにあたり、
C言語とアセンブリ以外の言語で、という条件だったら、
どの言語使う?
158:デフォルトの名無しさん
08/02/03 22:46:21
C++
159:デフォルトの名無しさん
08/02/03 22:48:48
なんか %prec の使いどころがようわからんのだけど、
単項マイナスのためのおまじないとしか俺理解してないので
なんか変じゃないの? としかアドバイスできない。
160:デフォルトの名無しさん
08/02/03 22:49:14
Cみたくネイティブコードコンパイラがあって
Cよりずっと型安全な言語がいいなぁ
どんな言語があるかよく知らないが
161:デフォルトの名無しさん
08/02/03 22:52:15
GCJ?
162:デフォルトの名無しさん
08/02/03 22:52:22
>>160
その条件だと SML, OCaml, Haskell が該当する。
これらの言語は処理系の実装によく使われるけど、
ランタイムの制約が大きいので要注意。
163:デフォルトの名無しさん
08/02/03 22:52:22
何も考えずにHaskell
164:デフォルトの名無しさん
08/02/03 22:54:36
ランタイムの制約って何?
165:デフォルトの名無しさん
08/02/03 22:59:35
>>164
自前で GC を用意したいとか、Int は 32bit ないと嫌だとか、
細かい処理系の実装を弄りたい向きには合わない
楽したいならむしろ良いのかもしれんけど
166:デフォルトの名無しさん
08/02/03 23:03:38
>>165
なるほど、インタプリタの話か
コンパイラ書くことしか考えてなかった
真面目にインタプリタを書くなら、Haskellで書かれたバイトコードコンパイラ+Cで書かれたバイトコードインタプリタ
みたいな構成にすれば良いかな
167:デフォルトの名無しさん
08/02/03 23:16:27
%prec EXPC が変だな。
168:155
08/02/03 23:29:15
>>167
%precがないとexpの'+'とexpcの'+'でconflictが起きるんです。
169:デフォルトの名無しさん
08/02/03 23:44:41
expとexpcを混ぜて定義しようとするからconflictするわけで
exp: tkVAR | tkNUM | exp '+' exp | '-' exp
expc: tkNUM | expc '+' expc | '-' expc
170:155
08/02/03 23:54:08
>>169
それだと定数式もexpになってしまいます。
要するに、
a + 2 + 3
を、
tkVAR + expc
としてパースしたいんです。
パーサの段階で定数式を最適化したいんです。
難しいですかね?
171:デフォルトの名無しさん
08/02/04 00:45:31
パーサの時点で定数式の最適化って
2 + a + 3
とか最適化できなくね?
172:155
08/02/04 01:27:57
>>171
それはできなくて良いです。
つか>>155のやり方でもうちょっと書いてみたけど、
演算の優先順位でも問題が発生したのでやっぱり
諦めることにしました。
面白いアイディアだと思ったんだけどなぁ…
173:デフォルトの名無しさん
08/02/04 01:27:58
「パーサの段階で定数式を最適化したい」んならアクション中で最適化すればいいだろ
文法レベルで最適化する意味が分からん
174:デフォルトの名無しさん
08/02/04 09:49:13
構文のレベルで弁別しといたほうが楽、という理由はあるかも。
優先順位付けで誤魔化すんじゃなくて、きちんと優先順位を組み込んだ
構文規則にして、あと、何かテクニックがあったような気がするんだけど...
175:155
08/02/04 12:01:23
>>173
tkVAR '=' exp
tkCONST '=' expc
みたいに書けると良いかなと思ったんですよ。
>>174
> 何かテクニック
参考になる資料があれば是非教えて頂きたいです。
176:デフォルトの名無しさん
08/02/04 13:30:58
Haskellでインタプリタか・・・
Haskellってメモリ気にし無さすぎだからヤバそうなイメージがあるけど、
実験用と以外で使われているんだろうか
177:デフォルトの名無しさん
08/02/04 13:31:41
ああああ、アホか俺は。
そんなのは処理系依存だよな。
スマソ。
178:デフォルトの名無しさん
08/02/04 22:14:06
%right '-' も変でないか
その構文では2項演算子じゃないよね
179:デフォルトの名無しさん
08/02/04 23:33:08
確かに
180:デフォルトの名無しさん
08/02/04 23:49:25
衝突の消し方は、Rubyを256倍使うための本 無道編、で読んだような気もする。記憶が正しいという自信はない。
とりあえず衝突が出なくなるところまでコナしてみたわけなのだが、これで希望する構文規則になっているだろうか。
%token tkNUM tkVAR
%%
/* 式 */
exp:
exp_
| expnc '+' expc_
| expc '+' expnc_
;
exp_:
expnc
| expc
;
expnc:
expnc_
| expnc '+' expnc_
;
expnc_:
tkVAR
| '-' expnc_
;
/* 定数式 */
expc:
expc_
| expc '+' expc_
;
expc_:
tkNUM
| '-' expc_
;
%%
181:デフォルトの名無しさん
08/02/05 00:58:18
%token tkVAR tkNUM
%left '+'
%right UMINUS
%%
program
:
| program line
;
line
: '\n'
| exp '\n'
;
exp
: expr { printf(" expr\n"); }
| cexpr { printf(" cexpr\n"); }
;
cexpr
: cexpr '+' cexpr { printf(" c+"); }
| tkNUM { printf(" %c", $1); }
| '(' cexpr ')'
| '-' cexpr %prec UMINUS { printf(" cneg"); }
;
expr
: expr '+' expr { printf(" +"); }
| expr '+' cexpr { printf(" +"); }
| cexpr '+' expr { printf(" +"); }
| tkVAR { printf(" %c", $1); }
| '(' expr ')'
| '-' expr %prec UMINUS { printf(" neg"); }
;
%%
182:デフォルトの名無しさん
08/02/05 00:58:50
続き
int yyerror(char *msg) {
printf("%s\n", msg);
return 0;
}
int yylex(void) {
int ch;
while (isspace(ch = getchar()) && ch != '\n')
;
if (isalpha(ch)) {
yylval = ch;
return tkVAR;
}
else if (isdigit(ch)) {
yylval = ch;
return tkNUM;
}
else {
return ch;
}
}
int main(void) {
yyparse();
return 0;
}
183:デフォルトの名無しさん
08/02/05 16:31:40
メンバーアクセスと呼び出しの構文規則を考えていたんですが、
expr:
mem-expr
mem-expr:
invoc-expr ['.' invoc-expr]*
invoc-expr:
prim ['(' [arg]* ')']*
prim:
ident
|(expr)
こんな感じで C++ や Java 風の式を評価できますか?
結合順とかは問題なさそうでしょうか?
184:183
08/02/05 16:36:02
一応、こんなのは全部許したいです。不正なものは意味解析ではじく方向で。
foo.bar.baz; foo.bar.baz(); foo.bar.baz()(); foo.bar().baz; foo.bar().baz(); foo.bar()().baz; foo.bar()().baz(); foo.bar()().baz()();
foo().bar.baz; foo().bar.baz(); foo().bar().baz; foo().bar().baz(); foo()().bar.baz; foo()().bar.baz(); foo()().bar().baz; foo()().bar().baz();
foo()().bar()().baz; foo()().bar()().baz(); foo()().bar()().baz()(); (foo).bar.baz; (foo).bar.baz(); (foo).bar.baz()(); (foo).bar().baz; (foo).bar().baz();
(foo).bar()().baz; (foo).bar()().baz(); (foo).bar()().baz()(); (foo()).bar.baz; (foo()).bar.baz(); (foo()).bar().baz; (foo()).bar().baz(); (foo()()).bar.baz;
(foo()()).bar.baz(); (foo()()).bar.baz()(); (foo()()).bar().baz; (foo()()).bar().baz(); (foo()()).bar()().baz; (foo()()).bar()().baz(); (foo()()).bar()().baz()();
185:デフォルトの名無しさん
08/02/05 23:14:41
うぜえ・・
それぐらい自分で判断しろ
半年ぐらい既成の文法眺めてろ
186:デフォルトの名無しさん
08/02/06 00:33:07
ヨミ肉w
187:183
08/02/06 08:45:44
>>185
既存の文法クレクレ
188:デフォルトの名無しさん
08/02/06 10:56:48
>>31
189:183
08/02/06 12:11:15
再帰下降のパーサを手書きしてるからパーサ【ジェネレータ】の話じゃない。
190:デフォルトの名無しさん
08/02/06 14:10:11
URLリンク(java.sun.com)
191:デフォルトの名無しさん
08/02/06 15:58:18
>>183
Javaは関数ポインタないから(hoge)() とか hoge()() はできないよ。
Javaの構文規則みても、あんまし参考にはならないと思う。
192:デフォルトの名無しさん
08/02/06 16:17:49
C言語の本に書いてあるよ
193:デフォルトの名無しさん
08/02/06 16:34:15
1.6で関数型ができるという話はどうなってるの? Java
194:デフォルトの名無しさん
08/02/06 17:24:46
そんな話ないよ
195:デフォルトの名無しさん
08/02/06 17:38:13
ごめん、7だった。
196:デフォルトの名無しさん
08/02/06 19:43:36
>>193
あれは func() じゃダメで func.invoke() とかやる事になってる。
名前空間汚れるから互換性捨てないと func() みたいな呼び出しは無理。
197:jonigata
08/02/07 03:08:09
あごめん
しばらく動きなかったからすっごい見てなかった
>>105
どんな解説でしょうか?
caperというよりもっと一般的な話であるなら、
すでにあるものよりうまく説明できる自身がまったくナイデス
256倍のraccのやつとか読むといいと思うけど
まだ売ってるのかな
>>106
用途とかバグとかウザいところとかあったら教えてください
.....
書き込みから20日もたってるのでいまさらだけどw
198:jonigata
08/02/07 03:16:47
つーか今になって見ると
俺が読んでもわからんですね
たとえばTutorial 1:
> 7行目のupcastは、各非終端記号の型から、Parserのインスタンス化のときに
> テンプレートパラメータとして与える「値集合すべてをあらわす型」への変換を提供する関数です。
> セマンティックアクション関数がひとつでもある場合、安全な型変換のために
> この関数が定義されていなければなりません。
ハア? わけわかんねーよバカじゃねーの
って感じw
とはいえこれはこれで「yacc使ったことある人」対象であれば
簡潔にまとまっているような気もしないでもない
気が向いたら読み直して書き直してみます
199:デフォルトの名無しさん
08/02/07 06:12:26
なんかワロタ
200:デフォルトの名無しさん
08/02/07 16:25:28
作者キター
caperでJavaScript生成させると
this.get_arg = function( base, index )
{
return this.stack[ this.stack.length - ( 3 * ( base-index ) + 2 ) ];
}
みたいなコードが出てくるけど
this.get_arg = function( base, index )
{
return this.stack[ this.stack.length - ( 3 * ( base-index ) ) + 2 ];
}
の間違いじゃないすか?
201:jonigata
08/02/07 21:58:54
javascript普段使わない上
3時間くらいで書いたコードなのでまったく思い出せない……
が
そのようですね
現在のコードだと、
パーサは動くけど
セマンティックバリューにぜんぜん意味わかんないものが返ってくるってことかな?
>>200さんはそれでわかったのでしょうか?
202:デフォルトの名無しさん
08/02/07 23:36:20
え?どれを3時間だって?
203:jonigata
08/02/08 11:48:35
>>202
jsジェネレータ(caper_generate_js.cpp)です。
といっても、自分に興味がほとんどないので
上のようなバグ出しちゃうわけですが……
C#やDのジェネレータを書いてくださった方もいらっしゃるので、
他の人でもさほど難しくなさそうですよ。
PHPも需要がありそうなんで挑戦しようとしたんですが
PHPの仕様のアレさにやる気が失われました。
難しくはないと思うのですが。
週末久しぶりにバージョンアップしようかと思います。
上のバグ直してC#やDのジェネレータを取り込んだバージョン。
204:デフォルトの名無しさん
08/02/08 22:43:41
>>203
乙!
205:jonigata
08/02/10 13:44:07
む、C#のジェネリクスってduck typingできないのか
もらったコードバグっててちょっと使えないな……
C#はいったんなしにするか
206:jonigata
08/02/10 13:49:27
Dは普通に動いたっぽい
C#ジェネレータはundocumentedでだして
誰か得意な人に見てもらおう
207:デフォルトの名無しさん
08/02/10 17:31:53
スレチガイ
208:デフォルトの名無しさん
08/02/11 17:16:50
パーサジェネレータのスレってどこにあるん?
209:デフォルトの名無しさん
08/02/11 18:57:29
>>208
今のところここがもっとも近い、そういう意味じゃ>>207は微妙な指摘というか言葉たらず。
独白に近いのでそういう事はBlogでやれって意味じゃまさに207の指摘どおり。
210:デフォルトの名無しさん
08/02/12 11:44:05
趣味で(ほぼ無意味ですが)C++とほぼ同等のコンパイラを作っています。
当然テンプレートとかはないですが、文法がそっくりという意味です。
質問なのですがC++は何故、クラスの定義がファイルの行数的に先に行なわれていないとコンパイルエラーになるのでしょうか?
例えば
CHoge test;
class CHoge
{
};
こういう順番だと、CHogeって何?未定義なんだけど。ってエラーになりますよね。
ファイルの上から処理して言ってるのだから当たり前なのは分かってます。
ですが先に class などの定義系を先に処理してからにすれば回避できる問題かと思います。
「先に全ファイルをチェックして定義系を処理してから、再度全ファイルを処理する」
という2度処理が、C++が生まれたころのマシンスペックではもったいなかったのでしょうか?
211:デフォルトの名無しさん
08/02/12 11:53:55
過去の名残。
212:デフォルトの名無しさん
08/02/12 12:09:17
>>210
Cのstructの仕様をそのまま引き継いでるだけかと。
C++というよりは、Cが生まれたころのマシンスペックだろう。
213:デフォルトの名無しさん
08/02/12 13:02:39
>>211-212
なるほど、ありがとうございました。
無理にそこを真似する必要はなさそうですね
214:デフォルトの名無しさん
08/02/12 14:39:58
最初のC++コンパイラはCへのトランスレータだったような気がする。(SS1の頃でメモリも16M位が標準だった)
215:デフォルトの名無しさん
08/02/12 14:55:16
URLリンク(en.wikipedia.org)
216:デフォルトの名無しさん
08/02/12 16:35:10
質問
Javaっぽい言語でスクリプト作ってたんですが、数値型に何も考えずに
int, short, byte, long をつくったんですよ
でもおかげでかなりVMやコンパイラの仕組みが複雑になってしまってコマってます
正直、shortとかbyteってみなさん使ってます?
(メモリーをケチる目的以外で)
バイナリファイルを解析する時とかはさすがにbyte単位で扱えなければ話にならないと思いますけど
ByteArrayStreamみたいなものがあればそれでいいかなぁとか考えてるのですが…
217:デフォルトの名無しさん
08/02/12 16:42:31
Javaっぽいって…
218:デフォルトの名無しさん
08/02/12 16:47:14
>>217
すごい誤解招きそうな文章でしたね
Javaっぽい文法でスクリプトを作ってたんですが~としてください
219:デフォルトの名無しさん
08/02/12 17:16:56
byteやshortも過去の遺産じゃね?
よっぽどメモリーがきつい環境で無い限り、演算もintのほうが速いわけでもあるしint使うわ
220:デフォルトの名無しさん
08/02/12 17:32:05
あるいは、メモリに常駐するデータ量が2Gか4Gかという差があるとかな
221:デフォルトの名無しさん
08/02/12 17:35:56
確かにそれくらいメモリーの差が出るなら考えるなw
まぁそれもByteArrayStream?があればそっちでいいわけで
Javaのものだと仮定すれば、あれランダムシークもできるし(Byte型の配列とほぼ同義として扱える)
222:デフォルトの名無しさん
08/02/12 17:56:28
>>216
JavaVMも配列とかフィールドにはbyteやshortがあるけど、スタック中ではint扱いっすよ
いちいち丸め処理が入るだけで
long, float, double や参照は別扱いだけど
223:デフォルトの名無しさん
08/02/12 20:25:44
C でも汎整数拡張とかあって、
式中では勝手に int に格上げされるな。
224:デフォルトの名無しさん
08/02/12 22:23:46
でも、エンジニアリングモデルでは普通に使ってるよ。
225:jonigata
08/02/16 12:32:02
先週末にバージョンアップするとかいっときながら遅れましたが
caperバージョンアップしました。
URLリンク(tinyurl.com)
例によってうまく動かなかったらごめんなさい。
C#ジェネレータとか一応組み込んだけど
普段使わない言語でぜんぜん要領を得ないので
詳しい人がいたらここかブログ( URLリンク(d.hatena.ne.jp) )に
なにかアドバイス等いただけるとうれしいです。
226:デフォルトの名無しさん
08/02/21 23:44:59
場違いかも知れませんが、宜しくお願いします。yacc/lexはc言語での
作りですが、perl言語で同様の処理をしたいのですが、処理系はあるの
でしょうか?
以前は、随分と前に見た事はあるのですが、最近は見かけなくなりまし
た。知っている方、どうかそのインストール方法...等アドバイス宜
しくお願いします。
227:デフォルトの名無しさん
08/02/21 23:56:50
Racc
228:デフォルトの名無しさん
08/02/22 09:04:34
kmyacc
229:デフォルトの名無しさん
08/03/04 08:45:05
構文解析のアルゴリズムが沢山載っている「Parsing Techniques - Second Edition」
URLリンク(www.cs.vu.nl)
230:デフォルトの名無しさん
08/03/07 09:20:44
>>27>>37
LLVMはMac OS XのOpenGLスタックで使われてるよ。
PyPyもターゲットの一つにしてる。
URLリンク(llvm.org)
231:デフォルトの名無しさん
08/03/09 01:53:45
gnu makeのBNFとかってありますかね?
232:デフォルトの名無しさん
08/03/15 14:32:59
やはり新しい言語の方が優れてるのですか?
233:デフォルトの名無しさん
08/03/15 14:42:55
兄より優秀な弟などいない
234:デフォルトの名無しさん
08/03/15 15:05:15
>>233
イギリス皇室の方ですか?
235:デフォルトの名無しさん
08/03/15 17:16:19
>>233
ラオウ乙
236:デフォルトの名無しさん
08/03/15 17:48:49
>>235
ジャギでは
237:デフォルトの名無しさん
08/03/15 18:32:44
>>231
GNU Make のソースツリーの中に無いの?
知らないけど。
238:デフォルトの名無しさん
08/03/15 22:05:11
Lisp 最高~!
239:デフォルトの名無しさん
08/03/16 18:03:56
そういえば、昔どこかのサイト(海外)で、
プログラミング言語の上下関係を図式化したものがあった。
そこでは確かに Lisp が一番上位に来ていたような…
何がいいのかさっぱりわからんがw
240:デフォルトの名無しさん
08/03/17 08:26:38
>>239
原文を見てない範囲での推測だが、
S式という情報の取扱形式が
全ての上位に来ると言う意味なら判らなくもない。
ただそういう比較は扱う人の主観でしか有り得ない。
241:デフォルトの名無しさん
08/03/18 13:19:49
ここにそれっぽいのがあるね
URLリンク(www.geekpage.jp)
242:デフォルトの名無しさん
08/03/18 16:18:53
Adaのマルチタスクプログラミング舐めてるのか!
243:デフォルトの名無しさん
08/03/18 17:29:15
Lisp - C の連結はありえない
244:デフォルトの名無しさん
08/03/18 18:16:28
>>241
これは面白いな。
ところで、最近のマクロという名のプログラムはどこに?
245:デフォルトの名無しさん
08/03/18 18:23:52
面白くないぞw
246:デフォルトの名無しさん
08/03/19 06:10:35
>>241
部分部分を見るとアレだけど、大まかな流れは頷けなくもない。
LanguagesではなくProgrammersを扱った図だからね。言語の宗教論争とはちょっと事情が違う。
「上位」プログラマは、多くの場合「下位」プログラマ"でもある"(その言語を使える)か、
あるいは"すぐにそうなれる"(パラダイムを十分把握していて、表面の違いを学ぶだけでいい)状態にある。
きっちり成立しているとは言わないけど、少なくとも、同じ事を上下逆に考えるよりは成立している。
だから全体を、あくまで曖昧なレベルで、クラス図の比喩として見ることができるんじゃないかと。
別の言い方をするなら、この図は、
「あなたが言語Xと言語Yを使えて、どちらかの言語名+プログラマ、でしか自称してはいけないと言われたら、
どちらを口にすれば、自分のスキルや経験値をよりあますことなく示唆できるだろうか?」
っていう「ソート」の結果であり、実際、まんざらデタラメな結果ではないと思う。
LispとCが使える人だったら、この図の「Lispプログラマ」に自分を置くし、たぶんそれで正解だろう。
逆を自称するよりは、その人の経験してきたことの「より多く」を伝えられると思う。たぶん。
247:デフォルトの名無しさん
08/03/19 07:11:51
> クラス図の比喩として見ることができるんじゃないかと。
そんな必要はないだろ。
その見方から何が得られたかも書いてないし。
クラス図言いたいだけと違うんかと
248:デフォルトの名無しさん
08/03/19 07:30:39
>>247
よくわからん返しだな。
249:デフォルトの名無しさん
08/03/19 09:06:36
ジョークにマジレスしてる>>246もよくわからんのだが…
250:デフォルトの名無しさん
08/03/19 09:23:52
>>249
ジョークがまんざらでもないことを面白がってるんだよ。
251:デフォルトの名無しさん
08/03/19 13:37:47
「そうそうあるある」ってのが笑いどころのネタだしな
252:デフォルトの名無しさん
08/03/19 14:59:48
まんざらでもないからこそジョークとして成立してるところに
「いやこのジョークはまんざらでもないんだよ!」と解説しちゃうところが無粋すぎ。
ってかスレ違いすぎだな…
253:デフォルトの名無しさん
08/03/19 19:01:19
そうとも思わないが?スレチ
なかなかおもしろいと思う。
254:デフォルトの名無しさん
08/03/19 21:27:09
使用者のヒエラルキーなんてマ板の範疇だろ・・・
スレ違いどころか板違いだ
255:デフォルトの名無しさん
08/03/19 22:36:37
糞つまらなねえ >>241
256:デフォルトの名無しさん
08/03/20 05:34:52
まぁ、自分が悪く言われているジョークが面白くないのは自然だ。
257:デフォルトの名無しさん
08/03/20 13:23:29
>>241の元ねたの最下位カーストだけ妙に具体的なのは
おもしろかったw
258:デフォルトの名無しさん
08/03/22 00:33:28
お気に入り言語が下にあるからって、そんなにカリカリせんでもw
259:デフォルトの名無しさん
08/03/22 00:43:41
出来が悪いのはともかく、
言語の階層じゃなくて、
プログラマーの階層なんだぜ?
260:デフォルトの名無しさん
08/03/22 01:24:06
古臭いネタまだひっぱるのか?
261:デフォルトの名無しさん
08/03/22 09:59:11
約一名のこのネタの腐しかたが特徴的すぎるんだが、何がそんなに気に入らないんだろw
262:デフォルトの名無しさん
08/03/22 20:03:53
誰のこと?
263:デフォルトの名無しさん
08/03/22 20:59:41
野村君のことだよ
264:デフォルトの名無しさん
08/03/23 19:07:54
鈴木君は?
265:デフォルトの名無しさん
08/03/23 20:31:18
鈴木君は良い奴だよ。
先週、尻にタイ焼きを詰まらせて亡くなったけど。
266:デフォルトの名無しさん
08/03/25 19:26:54
田中くんは?
267:デフォルトの名無しさん
08/03/30 23:18:15
山田さんは?
268:デフォルトの名無しさん
08/04/02 14:48:16
おーい
269:デフォルトの名無しさん
08/04/02 21:19:35
中村くん
270:デフォルトの名無しさん
08/04/03 16:30:45
なんだい?
271:デフォルトの名無しさん
08/04/03 19:07:31
ちょいと待ちたまえ
272:デフォルトの名無しさん
08/04/03 19:41:25
>>270-271が>>268-269と世代が違う件について
273:デフォルトの名無しさん
08/04/07 12:00:22
>>272
オハヨー!!
∧∧ ∩
(`・ω・)/
⊂ ノ
(つノ
(ノ
___/(___
/ (___/
 ̄ ̄ ̄ ̄ ̄ ̄
274:デフォルトの名無しさん
08/04/09 10:09:21
スクリプトの概要 - Tactico
URLリンク(www.lagarto.co.jp)
定評ある投資ツールOmegaチャートの作者が開発している、次期投資ツール「Tactico」に搭載されているスクリプト言語の解説。
関数型言語のにおい
275:デフォルトの名無しさん
08/04/20 15:48:01
あげてもいいですか?
276:デフォルトの名無しさん
08/04/20 16:03:12
いいけど、またLISPネタになるだけだよ?
277:デフォルトの名無しさん
08/04/20 18:25:38
>>275
既にあげてんじゃねぇかYo!
278:デフォルトの名無しさん
08/04/23 22:42:00
本のサンプルで利用されているANTLRをお勉強中。
今までこういったものを触ったことが無いので枠枠してる。
279:デフォルトの名無しさん
08/04/24 18:47:58
SquirrelとXtalのソース見て勉強中
頭では分かっていても、実際にコードへ落とすときに悩んでしまう
280:デフォルトの名無しさん
08/04/27 19:30:01
プログラムの最適化方法、特にベクトルプロセッシングの最適化について知りたいのですが、
どこか参考になるサイトはありませんか?
よろしくお願いします。
281:デフォルトの名無しさん
08/04/27 19:34:58
つ『コンパイラの構成と最適化』
282:デフォルトの名無しさん
08/04/27 20:20:15
了解しました。ありがとうございます。
283:デフォルトの名無しさん
08/05/01 00:33:06
髭を伸ばそうかと思っているんだけど、おまえら髭どうしてる?
284:デフォルトの名無しさん
08/05/01 03:58:14
剃ってる
285:デフォルトの名無しさん
08/05/01 06:13:41
これか
スラッシュドット・ジャパン | 髭がある程プログラミング言語は繁栄する?
URLリンク(slashdot.jp)
286:デフォルトの名無しさん
08/05/01 07:43:06
髭はバリカンで刈ってる。
別に髭専用バリカンてわけでもない。
287:デフォルトの名無しさん
08/05/01 12:12:15
年単位で前に読んだ記憶があるネタだな
288:デフォルトの名無しさん
08/05/02 05:41:41
俺はひげ専用バリカン持ってるよ。
長さを自在に調整できるやつ。
ただ今使っているのは電池専用なので使いにくい
289:デフォルトの名無しさん
08/05/06 22:25:36
型名と変数名を名前システムの観点から考察した
議論ってなんかある?
290:デフォルトの名無しさん
08/05/07 21:01:37
いきなりどうした、頭大丈夫か?
291:デフォルトの名無しさん
08/05/07 21:13:52
静的型って、型名と変数名とスコープを結びつけるわけじゃん。
抽象データ型って、変数名とスコープを介して
型名とプロシージャ名を結びつけるわけじゃん。
こういうのを名前システムとして眺めたら、
なんか見えてこねえ?
292:デフォルトの名無しさん
08/05/07 22:02:18
なにが言いたいのかわからん
マヨイガでも見えてんのか
293:デフォルトの名無しさん
08/05/07 23:29:35
今 >>289 の脳内で画期的な理論が生まれようとしている!
のかもしれない…?
294:デフォルトの名無しさん
08/05/09 13:32:22
ただの型推論なんじゃない?
295:デフォルトの名無しさん
08/05/09 18:13:03
GUIクラスライブラリのBoxクラスを想定。
Boxクラスには、x, y, width, heightというフィールドがある。
xとyのあいだ、widthとheightの四則演算は原理的に
禁止。書けてしまう&実行できるのは、言語が
行き届いてない証拠。
言語レベルで禁止するには、x, y, width, heightを
それぞれ別の型にしてしまえばいい。
でもそうすると、Xクラスのフィールド名はx、Yクラスの
フィールド名はy、てなことになるわけだ。
これって間抜けじゃね?
型名と変数名を名前システムの観点から考え直せば、
こういう間抜けなことの起こらない方法が見つかるかも
しれない、ってこと。
296:デフォルトの名無しさん
08/05/09 18:38:40
キログラムとセンチメートルといった単位の違うものを足したりできなくしようというわけか?
興味深いけど、なんか面倒臭そうな気がする
297:デフォルトの名無しさん
08/05/09 19:01:53
過度な形式化は無用な世話だ
298:デフォルトの名無しさん
08/05/09 19:07:28
>>295
間抜けでもいいなら、不正な操作を禁止することは既にできるわけだろ
冗長だから短く書きたいというなら型システムの問題ではない
Lispのマクロのようなものがあればいい
299:デフォルトの名無しさん
08/05/09 21:01:59
>>298
一概にそうは言い切れないだろ
略記法を展開する過程が型情報に依存するなら、単にマクロで構文を導入するのでは済まない
300:デフォルトの名無しさん
08/05/09 22:32:46
>>296
カロリー換算することで、燃費というプロキシは必要になるが計算は可能だな
ガチガチに縛るのもどうなのかなぁと思うのだが
俺の視点はずれてるのだろう
301:デフォルトの名無しさん
08/05/09 23:43:33
>>299
たとえばCのsizeofは型情報がないと計算できないが、
逆に言えばsizeofのような演算子を必要な分だけ追加すれば済むってことか?
302:デフォルトの名無しさん
08/05/10 00:28:51
新機能を追加しないと展開できない略記法?
ハードル上げ過ぎ
303:デフォルトの名無しさん
08/05/10 01:18:46
マクロ云々みたいな実装レベルの話じゃなくて、継承とかみたいな概念レベルの話をしているのでは?
型の拡張というよりも、むしろ単位という新しい概念の導入に近い気がする。
整数型とか実数型とかはそのまま受け継いで、それとは独立に演算の制約情報を付加する、って感じで。
物理とかのペーパーだとよく単位つけたまま式に代入したりするけど、それをPCで実現させるような。
俺言語での超適当な例。
unit : Volt, Ampere; // 電圧・電流の単位を定義
unit : Watt = Volt * Ampere; // 電力と電圧・電流の関係を定義
variable Integer [Volt] : vol; // 整数型(単位ボルト)の変数volを宣言
variable Integer [Ampere] : amp; // 同様
variable Integer [Watt] : wat; // 同様
variable Integer [Volt * Ampere] : wat2; // これもアリか。Wattと同じ。
variable Integer : num; // もちろんただの整数型も宣言可能
vol = amp; // ERR
wat = vol * amp; // OK
wat = vol + amp; // ERR
vol = wat / amp; // OK
vol = vol * num; // OK
vol = vol + num; // ERR
304:デフォルトの名無しさん
08/05/10 03:44:39
variable Integer : num; // もちろんただの整数型も宣言可能
こればっかり使って全て台無しって事にならんかなぁ?
unit : Ohm;
unit : Volt= Ampere * Ohm;
とかせんといかんの?
305:デフォルトの名無しさん
08/05/10 03:57:54
アプリケーションハンガリアンを思い出したぜ
URLリンク(local.joelonsoftware.com)
要は言語レベルでこれをやろうぜって話なんだろ?
306:デフォルトの名無しさん
08/05/10 05:00:56
>>295>>303
Boost C++ ライブラリに昔あったなあそれ。
今ではなくなっちゃってるっぽいけど。
変数に次元を割り当てて、異なる次元の変数同士の加算減算をしたり、
次元を無視した代入を行おうとすると、コンパイルエラーを吐いてくれるやつ。
307:デフォルトの名無しさん
08/05/10 05:59:41
情処のプログラム研究会あたりでネタにな・・・らなさそうだな
308:デフォルトの名無しさん
08/05/10 07:43:52
ならないな。こんなのとっくの昔からある話題だし。
言語レベルでやるようなもんじゃない。
309:デフォルトの名無しさん
08/05/10 11:40:27
ハンガリアンなんて便法じゃなくて、型で強制すべき、ということでしょ。
それを支援する言語というテーマは、まんま同じものが過去になければ、
研究会発表ぐらいならいけるんでない?
310:デフォルトの名無しさん
08/05/10 11:41:21
強い typedef でおkだろ。
311:デフォルトの名無しさん
08/05/10 12:39:04
>>303
よくわからんがこんな言語のこと?
URLリンク(futureboy.us)
312:デフォルトの名無しさん
08/05/10 14:27:11
LLバトロワスレにはっちゃったけど、いちおうここにも
JRuby開発者のOla Bini氏がJVM上で動作するプログラミング言語「ioke」を開発中
URLリンク(groups.google.com)
313:デフォルトの名無しさん
08/05/10 18:04:32
具体的な機能に飛びつく前に、こういう問題を概念レベルで
上から俯瞰できるような観点はないか、そこが知りたい。
数学基礎論だと、群だの体だの圏だので俯瞰するわけだ。
そういう観点があって初めて、5次以上の解の方程式が
存在しないことがわかる。
なにをどう構成して名づけるか? 変数名・型名・スコープは
構成の仕方の一例にすぎないわけよ。
演算子と構文にいろんなやりかたがあるように、名前システムにも
いろんなやりかたがあるはず。多分。
そのいろんなやりかたってのを、「あれを思いついた」
「これを思いついた」ではアドホックだから、名前システム
という観点が欲しい。
314:デフォルトの名無しさん
08/05/11 00:19:43
>>283
レーザー脱毛した。
もともとそんなに濃くなかったけど朝がなんとなく楽になった。
他の脱毛よりましらしいがレーザーもすんげー痛い。
315:デフォルトの名無しさん
08/05/11 01:06:02
>>314
痛いのか、知って良かった。
朝剃っても夕方泥棒みたいになるんだ。
316:デフォルトの名無しさん
08/05/14 15:51:01
質問。
εって一つ先読みして即還元すればいい?
317:デフォルトの名無しさん
08/05/16 07:20:07
「はじめてのコンパイラ - 原理と実践」って書かれてることに間違いないですよね?
正順LRって単語でググってもあまりヒットしないので不安なんだけど。
318:デフォルトの名無しさん
08/05/16 07:44:02
普通 正準LRっていわんか? canonicalの訳だろ?
319:デフォルトの名無しさん
08/05/16 07:50:18
>>318
ってことは、正順と書いてあるこの本は駄目本ってことですか?
ドラゴンブックは暗号が多すぎて解読が難しかったので、この本を
無条件に信頼できると良いのですが。
320:デフォルトの名無しさん
08/05/16 08:11:15
無条件に信頼って物を学ぶ態度じゃないだろw
とりあえず仮に教科書を信頼して勉強をすすめる
知識が付いてきたら別の情報源との突き合わせも難なくできるようになるだろうから、
間違ったことを覚えていたらそのときに訂正すればいい
もちろん間違いの多い教科書を避けられるならそれが良いけどな
321:デフォルトの名無しさん
08/05/16 08:24:02
>>320
この本を読んだことあるのですか?
322:デフォルトの名無しさん
08/05/16 08:38:39
ないよ
323:デフォルトの名無しさん
08/05/16 08:45:33
>>322
やさしいJavaは?
324:デフォルトの名無しさん
08/05/16 08:49:29
>>317
スタータキットとして割りきって使えよ。
「原理と実践」でそんな薄い本。
甘えすぎ。
325:デフォルトの名無しさん
08/05/16 08:56:58
>>324
平易な言葉で書かれた素晴らしい本だと思うんですがね。
内容が正しければ良書なのですが。
ドラゴンブックマンセーしてるやつは3の倍数。
326:デフォルトの名無しさん
08/05/16 09:17:49
順は"順当"の順だから間違いってほどではないだろ。
いずれにせよ、どうでもいいことだろ。
そんな短い本で終わることはあり得ないんだから。
327:デフォルトの名無しさん
08/05/16 09:25:01
>>326
この本に含まれていなくて且一般に重要なトピックは何ですか?
こんな短い本・・・とおっしゃるくらいだからいくらでも挙げることが
できるんですよね?
それともあなた何も理解せずに適当な単語を並べてるただの3の倍数ですか?
328:デフォルトの名無しさん
08/05/16 09:31:11
そのくらい自分で調べろよ。
本じゃなくて、お前の勉学の態度が悪いんだよ。
329:デフォルトの名無しさん
08/05/16 09:32:53
>>328
結局のところ全く理解していないので一つも挙げることが出来ないのでは?
330:デフォルトの名無しさん
08/05/16 09:33:23
情報が足りるか足りないかなんか
実装してみたらわかると思うけど
それ以前に実装しようと思うだけでわかるかもね
331:デフォルトの名無しさん
08/05/16 09:33:59
情報引き出すための煽りか
332:デフォルトの名無しさん
08/05/16 09:35:12
>>330
それだと実装手法は一つしか学ばないでいいって態度だね。
333:デフォルトの名無しさん
08/05/16 09:38:42
>>331
引き出す情報を持っているかどうかが問題。
たぶん持ってないな。
334:デフォルトの名無しさん
08/05/16 09:47:43
仮にそうだとして
それを指摘して
誰になんの得があるというのか
勝利宣言するならその本読んで
実装する必要があるし
自分の立場がわかってなさそうだな
335:デフォルトの名無しさん
08/05/16 09:52:41
>>334
もうやめれ。
傍目に見てお前の無知はばれてる。
ややこしくなるからわからないならレスするな。
336:デフォルトの名無しさん
08/05/16 09:58:01
IDの無い板でそれを言っても何の説得力もないけどな
337:デフォルトの名無しさん
08/05/16 11:01:48
知らないならレスしないでください
の変形かw
338:デフォルトの名無しさん
08/05/16 11:44:13
知らないのにレスするとはなんとおこがましいのでしょう。
339:デフォルトの名無しさん
08/05/16 12:44:48
お前ら楽しそうだな。
チャットばかりしてないで、スレタイに沿った話しろよ。
340:デフォルトの名無しさん
08/05/16 12:56:36
やさしい構文解析はいつ出版されるのか。
341:デフォルトの名無しさん
08/05/17 06:49:26
構文解析をコードで理解するよりも、まだやることは多い気がする。
状態遷移図を書きまっくて、
NFA からε遷移が無くなるように DFA する辺りとか。
オートマトンを追いかけてのスキャンを考えて、
例外処理までもを備えた形にはどうなるのかとか。
一見動いて見えるコードを下手に書いてしまうと、後が大変になる。
思考実験で状況を追いかける位にはなれたらなー、とは思った。独感だけど。
342:デフォルトの名無しさん
08/05/18 21:26:16
>一見動いて見えるコードを下手に書いてしまうと、後が大変になる。
そうか?
それこそが、ITで必要なことだと思うが、
あっ、研究は別ね。
343:デフォルトの名無しさん
08/05/18 21:40:43
>>341
まずその変な日本語を直してからだな
344:デフォルトの名無しさん
08/05/19 09:48:43
COBOLのコンパイラを探してるんだけど、何か無いかな?
条件としては
フリーで独自の例外表記が無くて
外部テキストファイルの読み込みが可能
ソースと実行結果をテキストで出力が可能な奴を探してるんだ。
ずっと探してるんだけど実効結果をテキストで出力可能な奴が見当たらないorz
345:344
08/05/19 11:27:19
すいません。追記としてwindows上で動く奴があったら教えてください
346:デフォルトの名無しさん
08/05/20 06:14:44
COBOL GCCでググってみました。
URLリンク(www.google.co.jp)
COBOLってよくわからんのですが、リダイレクションとかなんかつかえばいいんでないんでしょうか?
ここは、コンパイラやスクリプトエンジンを作るスレなので、
COBOLのスレで聞いたほうがイイ!と思います。
347:344
08/05/20 10:14:30
>>346
本当にありがとうございます。
ぜひ、参考にさせていただきます
348:デフォルトの名無しさん
08/05/20 10:25:53
inforno :: Scalaでスタック指向言語をサクッと実装する
URLリンク(inforno.net)
349:デフォルトの名無しさん
08/05/23 09:50:42
expr:
expr + expr
|expr - expr
|special
special:
expr + expr
350:デフォルトの名無しさん
08/05/24 00:54:28
動的コンパイラや最適化の勉強をしようと思っているんですが、Ruby とかのス
クリプト言語で書かれた、最適化の勉強用のおもちゃコンパイラ的なもので手
軽なのって無いでしょうか?
351:デフォルトの名無しさん
08/05/24 16:25:52
・brainf*ck
インタプリタを作った事が無い人でも作れる
結構最適化に向いていると思われる
352:デフォルトの名無しさん
08/05/24 18:53:35
Martin Fowler's Bliki:パーサー恐怖症(パーサージェネレータ習得のすすめ)
URLリンク(capsctrl.que.jp)
Terence Parr 著「The Definitive Antlr Reference: Building Domain-specific Languages」
URLリンク(www.amazon.co.jp)
353:デフォルトの名無しさん
08/05/25 17:57:53
一瞬、メイド特化言語に見えた。
354:デフォルトの名無しさん
08/05/26 00:22:55
緊急入院
355:デフォルトの名無しさん
08/05/27 03:35:41
C言語のコンパイラを探したんだが
いろいろあるんだね・・・知らなかった。
ぶっちゃけお勧めって何?
OSはWinXPとVISTAで。
356:デフォルトの名無しさん
08/05/27 03:36:14
>>1
357:デフォルトの名無しさん
08/05/27 08:25:07
>>355
英語学者が英語をしゃべれるとは限らないという。
Cコンパイラの話はコンパイラスレではなくCスレで聞け。
358:355
08/05/27 08:28:01
スレチすまそ
359:デフォルトの名無しさん
08/05/27 22:36:22
>>351
brainfuck でできる最適化って具体的になにがあるでしょうか?
360:デフォルトの名無しさん
08/05/27 22:47:41
>>359
コンパイル時の定数畳み込みだろ。
究極的には入力命令","の影響の及ぶところとそうでないところを判別して、
影響の及ばないところは全てコンパイル時に計算することができる。
たとえば、
++[>+++<-]>.,.
というプログラムなら、
putchar((char)6);putchar(getchar());
と最適化できる。
361:デフォルトの名無しさん
08/05/27 23:37:09
>>360
ありがとうございます。
>究極的には入力命令","の影響の及ぶところとそうでないところを判別
これって、定石ではどうやってやるんでしょうか?まったくわかっていないけ
ど、コールフローやデータフローの解析をする?
362:デフォルトの名無しさん
08/05/28 22:54:14
あたりまえですがなw
363:デフォルトの名無しさん
08/05/30 04:45:04
>英語学者が英語をしゃべれるとは限らないという。
日本語学者が日本語をしゃべれるとは限らないという?
364:デフォルトの名無しさん
08/05/30 10:44:17
海外の日本語学者にはそういう人もいるだろ
365:デフォルトの名無しさん
08/05/30 13:29:20
地震の研究者がカンファレンスで日本にきて初めて地面の揺れを経験して
「今のは何だ」
と騒いだ話を思い出した。
366:デフォルトの名無しさん
08/05/30 14:17:34
こういうやり取りが某スレで展開されてましたが、今の流行ですか?
638 名前:デフォルトの名無しさん 投稿日:2008/05/25(日) 00:23:06
アムロ・レイだってマニュアルが無ければ
ガンダムを操作することは出来なかった
つまりはそういう事さ
639 名前:デフォルトの名無しさん 投稿日:2008/05/25(日) 00:38:18
それ以前にアムロもカミーユもロボット作ったりしてなかったか?
つまりはそういう事さ
367:デフォルトの名無しさん
08/06/01 18:30:18
教えて下さい。
Lispって人工知能とかで使われたりしてるって
よく本とかに書いてあるのをみるんですが、
何が(どこが)人工知能にむいているんでしょうか?
逆に、他の言語だと何が(どこが)向いていないのでしょうか?
368:デフォルトの名無しさん
08/06/01 19:07:29
>>1にかいてあることがわからない人は、中がっこうからやりなおしてね。
369:デフォルトの名無しさん
08/06/01 19:19:12
やり直しも何も中学生ですが何か?
370:デフォルトの名無しさん
08/06/01 19:20:51
>>368
わからねえならわからねえってハッキリ言えよこの屑が
371:デフォルトの名無しさん
08/06/01 19:28:18
分かってれば情報垂れ流しとか、ハッキリ言うとそれは廃人です
372:デフォルトの名無しさん
08/06/01 19:50:59
貴様らはいちいち回りくどいな
lispスレで聞けやこのハゲ!
373:デフォルトの名無しさん
08/06/01 21:07:38
>>370
わからない場合はわからないと言ってもいいんだけど、残念ながらわかるんで、
「わからない」と書くと嘘をついたことになっちゃう。だから書けないw
あと、わからない奴が「わからない」と言うのは、名指しで答を求められて
「何か言わなきゃいけないけど答がわからない」という状況に陥ったときであって、
この場合は誰も当てはまらない。わからない奴はただ「黙ってる」場面だよ。
つまり、「わからねえなら黙ってろよ」と煽らなきゃいけない。君のはまるっきり的外れ。
頭の悪い子が興奮すると、こういうミスで大恥かいちゃうから気をつけようね。
こういうところで知能レベルってバレちゃうものだから・・・。
374:デフォルトの名無しさん
08/06/01 21:21:28
わからねえってハッキリ言えよこの屑
375:デフォルトの名無しさん
08/06/01 22:56:08
煽りたい盛りのゴミはほっておけ
まぁ放ったところで有益な答えが返ってこないだろう事実は変わらないがな
376:デフォルトの名無しさん
08/06/02 00:29:20
わかりません、ごめんなさい。
僕達は屑です
377:デフォルトの名無しさん
08/06/02 13:31:35
>>376
それでいい
おまえらもこれからは素直に生きろよな
378:デフォルトの名無しさん
08/06/02 13:50:51
>>377
「おまえら」なんて他人事みたいに語ってるが「僕達」にはお前も入ってるんだぜ?
379:デフォルトの名無しさん
08/06/02 14:15:28
>>378
他人事も何も他人だ
お前も素直になれ
380:デフォルトの名無しさん
08/06/02 16:33:51
いい加減うぜぇ
381:デフォルトの名無しさん
08/06/02 18:25:54
ここはRuby坊のLisp叩きスレですか?
382:デフォルトの名無しさん
08/06/02 19:14:42
Ruby坊はあらゆるスレに来てあらゆる言語を叩くので、
特にこのスレだけがどう、ということはないです。
383:デフォルトの名無しさん
08/06/04 00:10:05
373さん、ここは子供の来るところではありませんよ。
さて、終了です。
スレを元に戻しましょう。
384:デフォルトの名無しさん
08/06/04 00:18:33
おまえらスルーしろよ
糞が
385:デフォルトの名無しさん
08/06/04 00:23:33
インタプリタをCで作りたいです。
お勧めのサンプルって、無いですか?
386:デフォルトの名無しさん
08/06/04 00:57:59
>>384
頭の悪い子供には無理な注文。
相手の想定を上回ることを書いて鼻をあかしてやろう、と無駄なことを意気込み、
結果アピールできるのは自身の上昇した血圧だけ、というこの一セットは、彼らの宿命なのです。
387:デフォルトの名無しさん
08/06/04 01:10:09
で、>385は放置か?w
388:デフォルトの名無しさん
08/06/04 01:11:32
相手してあげたいなら、存分に相手してあげればいい。
389:デフォルトの名無しさん
08/06/04 01:16:31
断る。
390:デフォルトの名無しさん
08/06/04 01:57:20
自分のお勧めはCマガジン 2000年5月号。
十数ページの記事で一応インタプリタが作れる。
391:デフォルトの名無しさん
08/06/04 10:24:36
>>385
テキストで書いてあるソースコードを読むようなインタプリタから
始めることはおすすめしない。
単純な仮想機械からやってみてはどうか?
392:デフォルトの名無しさん
08/06/04 15:11:50
Brainfuckインタプリタでいいじゃん
393:デフォルトの名無しさん
08/06/04 16:33:53
あんなの厨房でもできるじゃん
394:デフォルトの名無しさん
08/06/04 17:17:39
>>393
BFソース -> sed -> Cソース -> gcc -> ./a.out
ってシェルスクリプト見たとき吹いた
395:デフォルトの名無しさん
08/06/04 19:09:37
>>394
何その素敵仕様w
396:デフォルトの名無しさん
08/06/04 19:36:51
>>391
初心者には無理じゃないのか?
397:デフォルトの名無しさん
08/06/04 20:26:44
>>395
TextBox(BFソース)->javascriptでreplace->javascript->eval
の変化系っぽい
398:デフォルトの名無しさん
08/06/04 20:34:22
BFソース + Dソース --(Dコンパイラ)--> executable
ってのなら前に見たな。
D言語では、コンパイル中にファイルを読み込んで、文字列操作をして、
その結果をコンパイルされるべきソースコードの一部に組み込めるらしい。
399:デフォルトの名無しさん
08/06/04 21:09:23
VCGグラフって、JPEGとかに変換できないのでしょうか?
見れなくて…
400:デフォルトの名無しさん
08/06/04 21:19:36
そのまんまの名前の可視化ツールあったと思うが。
401:デフォルトの名無しさん
08/06/05 08:15:08
How to build a monadic interpreter in one day
(based on papers provided by the Haskell community and some other resources)
午前: 仮想機械
午後: パーザ
Haskell習得とインストールにさらに半日くらいかな?
402:デフォルトの名無しさん
08/06/05 18:10:27
ここは、lispは禁句?
403:デフォルトの名無しさん
08/06/05 20:21:37
下手に話題振ると、あっという間にlispスレになるよな
404:デフォルトの名無しさん
08/06/05 21:41:25
構文解析をすっとばせるlispは、構文解析までしか語れない住民の多いこのスレでは不評です。
405:デフォルトの名無しさん
08/06/05 21:49:17
URLリンク(www.cs.cmu.edu)
Lisp風構文を持つ"APL, Scheme, SASL, CLU, Smalltalk and Prolog"のインタープリタ
406:デフォルトの名無しさん
08/06/05 21:49:38
タイトル忘れた。
Kamin: Tim Budd's C++ Implementation of the Kamin Interpreters
407:367
08/06/05 22:24:23
ありがとうございました。
408:デフォルトの名無しさん
08/06/05 23:01:35
>>385
UNIXプログラミング環境
hocインタープリタをC+yaccで作る例が乗っている。
完全なソースコードも著者のWebSiteからダウンロード可能!
409:デフォルトの名無しさん
08/06/05 23:03:24
>>401
なつかしの「while言語」w
410:デフォルトの名無しさん
08/06/13 07:21:40
データフロー解析の簡単な例とか教えてください。
411:デフォルトの名無しさん
08/06/13 21:15:30
URLリンク(nicosia.is.s.u-tokyo.ac.jp)
412:デフォルトの名無しさん
08/06/14 01:06:23
やべ、いまさらだけどBNF理解した
興奮してきた
413:デフォルトの名無しさん
08/06/14 06:55:30
そこでパーザ・コンビネータですよ。
414:デフォルトの名無しさん
08/06/15 09:02:14
え、どこどこ?
415:デフォルトの名無しさん
08/06/21 18:17:29
160行のPythonコードでコンパイラとインタプリタを書く
URLリンク(www.jroller.com)
Pythonハジマタ\(^o^)/
416:デフォルトの名無しさん
08/06/21 20:51:09
インタプリタしかないようだが。
417:デフォルトの名無しさん
08/06/22 03:16:27
ぱいぱい
418:デフォルトの名無しさん
08/06/25 00:33:43
stackless pypy
419:デフォルトの名無しさん
08/06/27 09:13:08
>>401
URLリンク(www.haskell.org)
420:デフォルトの名無しさん
08/07/02 07:36:22
こんなアホしかいませんが救ってやってください
スレリンク(prog板:398番)