「コンパイラ・スクリプトエンジン」相談室12

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語処理系の開発に興味のある人達のスレッドです。

字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

過去スレ
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/
6 http://pc8.2ch.net/test/read.cgi/tech/1115335709/
7 http://pc8.2ch.net/test/read.cgi/tech/1129287390/
8 http://pc8.2ch.net/test/read.cgi/tech/1131273918/
9 http://pc8.2ch.net/test/read.cgi/tech/1135082582/
10 http://pc8.2ch.net/test/read.cgi/tech/1146844753/
11 http://pc11.2ch.net/test/read.cgi/tech/1160879890/
関連リンクは多分 >>2-10 あたり


2デフォルトの名無しさん:2007/09/02(日) 08:14:32
Wikiのまとめページ
http://www6.atwiki.jp/compilerandscriptengine/

★コンパイラ一般

・色々なツールの紹介
 http://catalog.compilertools.net/
・コンパイラ関連のリンク集
 http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
・スクリプティング言語資料室(仮) (リンク集)
 http://www.kt.rim.or.jp/~kbk/
・Compiler Construction
 http://www.ie.u-ryukyu.ac.jp/~kono/lecture/compiler/
・情報システム工学実験 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/
3デフォルトの名無しさん:2007/09/02(日) 08:15:05
★字句・構文解析

・Lex and YACC primer/HOWTO (邦訳)
 ttp://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
 ttp://www.empathy.com/pccts/roskind.html
・Flexと Bisonを同時に使う
 http://guppy.eng.kagawa-u.ac.jp/2005/SysProg/both.html
・KITE_ASM (yacc,lex)
 http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/
・bison用のC++ LALR skeleton
 ttp://www.bj-ig.de/software/bison/
・ANTLR(非yaccのパーサジェネレータ)
 ttp://www.antlr.org/
・JavaCC(Java Compiler Compiler)
 ttps://javacc.dev.java.net/
 ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
 ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
・CUP, JLex, JFlex
 http://www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP)
 ttp://www.jflex.de/
・SableCC
 ttp://www.sablecc.org/
・¬<><∪∪ (notavacc)LALR(1)
 http://ne.cs.uec.ac.jp/~koto/notavacc/
・boost::spirit(C++のテンプレートでEBNFの構文を模倣)
 http://spirit.sourceforge.net/
 ttp://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
 ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
4デフォルトの名無しさん:2007/09/02(日) 08:15: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/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


5デフォルトの名無しさん:2007/09/02(日) 08:16:57
★学会

・PLDI
 http://research.microsoft.com/conferences/pldi06/
 コンパイラの研究に関する最新成果を知りたければまずはここ。
・POPL
 http://www.cs.princeton.edu/~dpw/popl/06/
 PLDIよりは理論寄りだが大いに参考になる。
・ICFP
 http://icfp06.cs.uchicago.edu/
 関数型言語に関する学会。とても難しい。
・OOPSLA
 http://www.oopsla.org/
 オブジェクト指向言語に関する学会。最近はやや低調?
・ICCC
 http://www.st.cs.uni-sb.de/cc/
 ヨーロッパ系。派手さはないが堅実。
6デフォルトの名無しさん:2007/09/02(日) 08:17:40
★参考書籍

・コンパイラ 原理・技法・ツール 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
 初心者向けの優しい解説本。


以上
7デフォルトの名無しさん:2007/09/02(日) 12:08:54
おつ
8デフォルトの名無しさん:2007/09/02(日) 12:28:37
spiritってコンパイラスクリプトエンジンに使うのにどうなんだろ?
っていうか、再帰下降パーサ自体どうなんだろ?
9デフォルトの名無しさん:2007/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デフォルトの名無しさん:2007/09/03(月) 08:42:46
>>9
そりゃ1+1はその文法に合わない入力だからじゃね。i+iなら通る。
試験するときは文法に適う入力かどうかを考えないと。
つまり、1+1でsyntax errorになったのは正しい動作だったということだ。
文法を定義する時に自分でどういうものを受け入れるかは分かっているんじゃないのかね?
それとも、どこかからサンプルを持ってきて適当に改造したから、
何をやっているか自分でも分からないとか?
1110:2007/09/03(月) 08:56:53
あ、あと、
input : expr '\n' ;
って定義だと例えば'i' '+' 'i' '\n'の入力で受容された後は、
何が入力されてもsyntax errorになるのは分かってるよね?
12デフォルトの名無しさん:2007/09/03(月) 09:02:33
10さんありがとうございます。自分がやってることが分かってませんでした。
いまいじくって理解しました。
13デフォルトの名無しさん:2007/09/03(月) 14:53:26
HaskellでScheme処理系を実装するチュートリアル「Write Yourself a Scheme in 48 Hours」
http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html
14デフォルトの名無しさん:2007/09/08(土) 13:37:10
ゲーム開発用にC言語の文法がそのまま使えるスクリプト言語を作ってるのですが、
配列や構造体の初期化処理をどうスマートに実装しようか悩んでます。
特に、ローカル変数の初期化時に変数を用いて初期化する点など。
なにか良い方法や参考資料とかないでしょうか?
15デフォルトの名無しさん:2007/09/08(土) 14:34:35
>C言語の文法がそのまま使えるスクリプト言語

普通にC言語使うのとどう違うのか。
まぁコンパイルが面倒いとか安全性とかあるんだろうけど。

ちなみにこんなものもある。
http://root.cern.ch/twiki/bin/view/ROOT/CINT

配列や構造体の初期化は、内容が固定ならmemcpy、変数が混ざってるなら1個ずつ代入するしかないんでない?
実際のCコンパイラが吐くコードを見てみたらいかが。
1614:2007/09/08(土) 15:31:16
> 実際のCコンパイラが吐くコードを見てみたらいかが。
確かにw、ちょっと調べてみます。

> 普通にC言語使うのとどう違うのか。
一応、ゲーム用に文法を拡張して使用する予定。
並列処理(ノンプリエンプティブ)用の文法と、イベント処理用の文法は組み込みたいな、と。
あと、データ構造定義のヘッダーをCとスクリプトで共有するのも目的です。

CINTは本も持っているのですが・・・、挫折しました。
17デフォルトの名無しさん:2007/09/08(土) 16:27:14
>>13
これ良さそうですね。
ちょうどHaskellでそれなりの規模のプログラムを作ってみたかった所なので
これにそってやってみます。
18デフォルトの名無しさん:2007/09/09(日) 15:39:13
>>14
LuaとかSquirrelじゃダメなん?
1914:2007/09/09(日) 19:50:01
Squirrelは初めて知りました。参考にさせてもらいます。

VCで配列や構造体のローカル変数の初期化をアセンブリ言語に吐き出してみたんですが、
既値での初期化でも思いのほか代入の羅列処理でした。
あんまり悩まずに、この方法で実装してみます。
20デフォルトの名無しさん:2007/09/10(月) 12:52:50
tcc: tiny c compiler
http://fabrice.bellard.free.fr/tcc/

出遅れたがコンパクトで追いやすいと思う
2114:2007/09/10(月) 19:03:29
> tcc: tiny c compiler
ありがとうございます。
これも参考にさせてもらいます。
22デフォルトの名無しさん:2007/09/23(日) 01:43:08
23デフォルトの名無しさん:2007/09/23(日) 17:57:37
bisonとflexを組み合わせて使う場合、
bison側のコードからyyinを参照するにはどうしたらいいのでしょうか?

extern FILE *yyin;

main(){
while(!feof(yyin)){
yyparse();
}
}

上のような感じで使おうとしたところ「yyinは宣言されていない」
という旨のエラーが出てしまいました。
24デフォルトの名無しさん:2007/09/26(水) 13:26:55
Ginってどうよ???
25デフォルトの名無しさん:2007/09/26(水) 14:52:17
ご自分で判断なされては
26デフォルトの名無しさん:2007/09/26(水) 22:23:37
(´;ω;`)ブワッ
27デフォルトの名無しさん:2007/10/04(木) 16:16:32
Low Level Virtual Machine - Wikipedia
http://ja.wikipedia.org/wiki/Low_Level_Virtual_Machine

The LLVM Compiler Infrastructure Project
http://llvm.org/

これは外出?
28デフォルトの名無しさん:2007/10/05(金) 01:39:02
俺はGin見て、アイデアが思い浮かんだのでありがてぇ思っただよ
29デフォルトの名無しさん:2007/10/05(金) 12:57:30
Ginって?
30デフォルトの名無しさん:2007/10/07(日) 21:19:06
>>29
javascriptのパーサジェネレータです。
http://nanto.asablo.jp/blog/2007/09/12/1793275
31デフォルトの名無しさん:2007/10/07(日) 23:33:45
やれやれだぜ
もうパーサジェネレータの話は禁止しようぜ
ここからパーサジェネレータから先の話だけな
32デフォルトの名無しさん:2007/10/08(月) 21:38:24
勝手に決めるなよ
33デフォルトの名無しさん:2007/10/09(火) 01:00:16
ANTLR 3 をC言語で扱うサンプルないかな?

それかANTLR3に近いパーサないかな?
34デフォルトの名無しさん:2007/10/10(水) 21:18:42
>>27
まじ凄いんじゃね?
というぐらいしか俺にはわからんが
詳しい人解説たのむ
35デフォルトの名無しさん:2007/10/11(木) 23:51:33
解説も何も見たままだが。
用語が判らんとかなら>>6の本でも読め。
36デフォルトの名無しさん:2007/10/12(金) 10:35:55
そういえば、parrotって完成する日が来るんだろうか
37デフォルトの名無しさん:2007/10/12(金) 13:06:34
>>27
は、最適化されたVMを提供するようだが、
使っている人のサイトとかみると、
実際はまだまだ未完成でバグバグみたい
38デフォルトの名無しさん:2007/11/06(火) 13:39:44
LL(1)は構文木作るの面倒だな。
39デフォルトの名無しさん:2007/11/11(日) 12:18:03
コンパイラ構成法 原田 賢一著

を読んでいっているのですが、理解できないところが多々あります。
演習問題の解答、解説等が載っている本などはありませんか?
40デフォルトの名無しさん:2007/11/12(月) 06:37:16
>>6は切れてるな
あきらめろ
41デフォルトの名無しさん:2007/11/23(金) 00:11:12
東京大学の言語処理系(mini-Python)を作る講義資料 2006年版
http://www.logos.ic.i.u-tokyo.ac.jp/lectures/enshu2006/index.php?%B9%D6%B5%C1%BB%F1%CE%C1

2007年版
http://www.logos.ic.i.u-tokyo.ac.jp/lectures/enshu2007/index.php?%B9%D6%B5%C1%BB%F1%CE%C1


俺にもPython作れる気がしてきた
42デフォルトの名無しさん:2007/11/23(金) 11:23:55
>41
中身まだ全部見てないけど面白そう。こういう講義受けたかったな。
新しい方(2007年版)って今講義中なのか。

43デフォルトの名無しさん:2007/11/23(金) 22:10:46
LALRのパーサー使ってきたけど、文法が複雑になると、Shift-Reduce衝突を除去するのに
一苦労。で、LL(*)のパーサーを使い始めたが、左再帰除去しないといけないので可読性に多少難あり。
でも、慣れれば、複雑な文法定義するのにLL(*)のパーサーの方が開発しやすいのかも。そんな予感。

44デフォルトの名無しさん:2007/11/25(日) 21:34:15
いいなあ東大。めっちゃ楽しそう
俺の頭では入れなかったよ

4543:2007/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(*)のやっぱ、楽そうだな。
4643:2007/11/25(日) 22:11:57
いや、上の文法だと単項+-と括弧付きの優先順位まずいかも。うむむ。
4743:2007/11/25(日) 22:14:56
ExprList = Expr { "," ExprList }

ExprList = Expr { "," Expr } だった。
4843:2007/12/01(土) 13:31:25
MulDivExpr = UnaryExpr { ("*"|"/") UnaryExpr }
UnaryExpr = [("+"|"-")] Primary
Primary = NUMBER | "(" ExprList ")"
だった。
LLパーサー何気にいいんだけど、セマンティックアクションの実行されるタイミングがようわからん。
例えば、
AddSubExpr =
 MulDivExpr
  {
   ("*"|"/") MulDivExpr (. アクション .)
  }
で、"*"まではパース成功して、右のMulDivExprで失敗してもアクションが実行される。
うーん。構文チェックだけならいいけど、構文木作ると、エラー時に上手くか書かないと
迷子のノードができて、メモリリークなる。orz

49デフォルトの名無しさん:2007/12/01(土) 13:44:32
確保したメモリをすべてグローバル変数にリンクリスト形式で繋いでいって、パース終了後にまとめて解放、とか
50デフォルトの名無しさん:2007/12/02(日) 00:02:14
Objective-Cで書かれたLisp風のプログラミング言語「Nu」
http://programming.nu/

Java VM上で動くLisp風のプログラミング言語「Clojure」
http://clojure.sourceforge.net/
51デフォルトの名無しさん:2007/12/02(日) 00:10:14
Lisp風の言語ならそっくりLispの方がありがたいんだが要するにLisp1等価って事だよな?(RnRSに従わないCommonLispは満たさない)
52デフォルトの名無しさん:2007/12/07(金) 12:47:00
ClojureはASMっていうバイトコードジェネレータを使ってるんですね。
ASMはBCELやSerpより軽量で高速でgroovyでも使われてて
サイズがBCELが350KB、SERPが150KB、ASM 2.2が33KB
だそう。GroovyやJRuby等で使われてるみたい。


53デフォルトの名無しさん:2007/12/12(水) 00:41:53
54デフォルトの名無しさん:2007/12/13(木) 00:17:51
箱?
55デフォルトの名無しさん:2007/12/13(木) 00:29:19
何用の言語なんだろ?
オレオレ言語としては機能が充実してるけど、
何かに特化してるわけじゃなさそうだし。
56デフォルトの名無しさん:2007/12/13(木) 01:11:04
自作エディタに使ってるみたい
ttp://www.venus.dti.ne.jp/mw31/apsaly/index.html
57デフォルトの名無しさん:2007/12/13(木) 01:19:08
>>53
『本格的なオブジェクト指向プログラミング』って書いてあるけど、
何が出来たら本格的なんだろうか。そこに書いてある限りでは、
クラスが定義出来てインスタンスが生成出来て継承関係を作れる
みたいだけど、リフレクションとかインスペクトが出来るわけでは
なさそう。
58デフォルトの名無しさん:2007/12/16(日) 16:22:45
プロトタイプベースのオブジェクト指向に対して
クラスベースのオブジェクト指向を本格的といってるのかもしれませんね。
59デフォルトの名無しさん:2007/12/16(日) 16:44:08
本格的とか元祖とかを付けるとウケがいいからだろう
特に意味を考えてるとは思わない
60デフォルトの名無しさん:2007/12/16(日) 16:49:40
自分の言語ならそのへんはこだわりを持ってるのが普通じゃないか?
「本格的オブジェクト指向ってなんですか」とでも訊けば語ってくれるよ多分。
61デフォルトの名無しさん:2007/12/16(日) 16:52:28
あくちぶべーちっくは本格的ですか?
62デフォルトの名無しさん:2007/12/19(水) 07:42:19
そもそもオブジェクト指向みたいな現場から発生した醜いパラダイムに
本格的も糞もないだろうにw
63デフォルトの名無しさん:2007/12/19(水) 09:22:44
ほー、PARC は現場なのか。へー。
64デフォルトの名無しさん:2007/12/19(水) 09:37:58
そうだよ
65デフォルトの名無しさん:2007/12/19(水) 12:55:53
>>62をゴールドバーグ女史が読んだらなんと言うだろう
66デフォルトの名無しさん:2007/12/19(水) 14:01:54
申し訳ない、私は日本語は読めないんです
という主旨のことを言うのでは
67デフォルトの名無しさん:2007/12/19(水) 22:55:40
HTTPのRFCを見るとヘッダの文法がBNFで書かれていました。なので、yaccとlexを使えばHTTPヘッダを解析できるかなと思った
のですがlexで入力をトークンに分割するのが難しそうで行き詰まりました。Java等のプログラム言語だと、コメント部分でもない
限りトークンの区切りは空白文字でよいし、+を見たらPLUSとか適当なトークンとして認識すればよいしで字句解析部分はわりと
簡単そうですが、HTTPだと、たとえばAという文字を見たときに、UPALPHAと認識すればよいのか、HEXと認識すればよいのか、
それとも状況(lexの状態?)に応じて、数文字まとめて別のトークンとして認識したほうがよいのか、よくわかりません。UPALPHA
とかHEXというのは、http://rfc-ref.org/RFC-TEXTS/2616/chapter2.html に載ってる終端記号名です。

こういう場合、どう字句解析を行うのがよいでしょうか?どういう細かさのトークンをyaccに上げればよいでしょうか?
練習として、BNF通りのヘッダであればどんなに複雑なものであってもパースできるパーサを作ってみたいのです。

アドバイスをお願いします。
68デフォルトの名無しさん:2007/12/19(水) 22:58:51
まずは日本語をしっかりな。
69デフォルトの名無しさん:2007/12/20(木) 06:11:47
BNFで表現してあったって文脈自由とは限らないと思うんだぜ。
まあパーサからレクサへ状態を渡すとかするんだけど、それはそれで大変だし
何もlex使わなくてもパーサを手書きすればいいじゃん。
自分で手書きできない人だったらlex/yacc使ってもあまりいい目は見ない気がする。
70デフォルトの名無しさん:2007/12/20(木) 11:16:55
>>69
BNFで表現できるのは文脈自由文法であると習いましたが違うんですか???

パーサ手書きでもいいんですが、たとえばどのような構成にするのでしょうか?
71デフォルトの名無しさん:2007/12/20(木) 18:06:38
とりあえず、英大文字・小文字は1文字づつyaccにあげればいいんじゃ?
で16進数の構文をyaccで定義すれば?
72デフォルトの名無しさん:2007/12/20(木) 18:23:56
yacc デカルチャー
73デフォルトの名無しさん:2007/12/20(木) 18:59:52
>>72
なんつー古さだ(20年前ぢゃねぇか:実はperlネタのところでも見かけた)
74デフォルトの名無しさん:2007/12/20(木) 21:00:53
>まあパーサからレクサへ状態を渡す
こんなことできたっけ?
75デフォルトの名無しさん:2007/12/20(木) 22:10:24
レクサーを自前なら可能だけど、lexではできない。flexはしらね
76デフォルトの名無しさん:2007/12/20(木) 22:18:47
(f)lexはlexer内で状態遷移できるよ。Cのコメント分を字句解析するときに使う奴。
77デフォルトの名無しさん:2007/12/20(木) 22:51:15
>>71
本当に1文字づつ以外読まないのなら、字句解析を一切していないのと変わらないと思うんだがw
78デフォルトの名無しさん:2007/12/21(金) 03:07:51
>>73
最近よく見かけるようになったのは
再放送してるからだろうw
79デフォルトの名無しさん:2007/12/21(金) 07:11:04
>>77
字句解析一切していないからってそれがどうしたんだよ。
80デフォルトの名無しさん:2007/12/23(日) 13:48:08
字句解析が不要ってこと?
81デフォルトの名無しさん:2007/12/23(日) 18:55:50
え?字句解析してない?しまった〜〜下手こいた〜〜〜

ズン・ズン・ズン・ズン
82デフォルトの名無しさん:2007/12/23(日) 19:00:40
ツマンネ
83デフォルトの名無しさん:2007/12/26(水) 02:32:43
>>53
MikoScript面白いですね。

リレー型関数コール演算子は、Rubyみたいに、下手な既存classの拡張をせずとも、
メソッドを追加したように見せかけたり、
既存の関数を、作成したclassのメソッドのように見せかけたりできる。

puts("hoge");

"hoge"'puts;
と書いたり、

a = int(1234.56)

a = 1234.56'int
と書いたり。

代入型の関数コール形式は、

言語仕様としては、シンタックスシュガーの域を出ないが、
全てがオブジェクトではない、言語にはよさそうな仕様。

コマンド型の関数コール形式は、ま、いらんなw

ところで、箱がいまいちわからん???
84デフォルトの名無しさん:2007/12/26(水) 02:33:12
> 代入型の関数コール形式は、
>
> 言語仕様としては、シンタックスシュガーの域を出ないが、
> 全てがオブジェクトではない、言語にはよさそうな仕様。

代入型の関数コール形式も、
言語仕様としては、シンタックスシュガーの域を出ないが、
全てがオブジェクトではない、言語にはよさそうな仕様。

ミス・・・
85デフォルトの名無しさん:2007/12/26(水) 03:49:24
どのへんが本格的なの?
86デフォルトの名無しさん:2007/12/28(金) 13:42:40
87デフォルトの名無しさん:2008/01/01(火) 16:03:44
>>41

こんな感じで他の大学も講義の資料公開(?)してくれると嬉しいな。
講義で使ってる本の紹介だけでもいい。
アメリカみたいに講義をpodcastで公開してくれなくてもいいから

雑誌も減ってきてるし、なかなか体系だって勉強できるネタが少ないのが最近の悩みだから
88デフォルトの名無しさん:2008/01/01(火) 16:14:04
おっぱいそん入門

ぷりんとぼいん ”こんにちは おっぱい!”
89デフォルトの名無しさん:2008/01/01(火) 16:16:58
>>87
ガベージコレクションが気になった
mallocをGC_MALLOCに変えるだけでfleeいらずとはこれいかに
90デフォルトの名無しさん:2008/01/01(火) 16:29:50
>>89
Keep your dog free from flea!
91デフォルトの名無しさん:2008/01/01(火) 16:32:08
>>90
OK. I understand!!! Thanks. :D
92デフォルトの名無しさん:2008/01/01(火) 19:07:36
これいかに、ってベームGCだろ条項
93デフォルトの名無しさん:2008/01/02(水) 01:25:54
ぼえーむじーしーと読んでたのは俺とお前だけの秘密だぜ
94デフォルトの名無しさん:2008/01/02(水) 01:53:27
La BohemeGC
95デフォルトの名無しさん:2008/01/02(水) 02:08:29
ぼへむじーしーってよんだmした><
96デフォルトの名無しさん:2008/01/02(水) 10:16:26
オペラだったらボエームって読んでええんでないの?
97デフォルトの名無しさん:2008/01/02(水) 16:06:38
BGCか
98デフォルトの名無しさん:2008/01/12(土) 23:46:38
ふと思ったんだが、バイトコードのコンパイラって可能?
例えば、Javaとか.NETのソースをコンパイルしてできた、バイトコードをネイティブ形式にコンパイルする
99デフォルトの名無しさん:2008/01/12(土) 23:49:11
GCJはclassファイルをネイティブにコンパイルしてるよ
100デフォルトの名無しさん:2008/01/13(日) 00:03:08
>>98
なんのための JIT なんだ?
101デフォルトの名無しさん:2008/01/13(日) 02:19:59
>>99
にわかですまんが
ネイティブってことは逆にVMじゃ動かんの?GCとかどうしてんだ?
102デフォルトの名無しさん:2008/01/13(日) 11:57:23
gcjでネイティブコンパイルしたら本物のネイティブコードになるのでVM上では動かない
GCとかは実行ファイルにリンクするランタイムライブラリ(libgcj)に含まれてる
103デフォルトの名無しさん:2008/01/13(日) 14:22:38
>>101
更にgcjのランタイムにはJVM相当機能も含まれてて.classの実行もできる.
なのでjarの動的ロードとかも可能になってる.
# クラスライブラリ足りなくて実用するのは大変だが…
104101:2008/01/13(日) 15:38:31
>>102-103
なるほど、ありがとう。
しかし、
ttp://www.shudo.net/article/Fedora-Core-Expert-200507-GCJ/#performance
↑を見る限りパフォーマンスでのメリットがないw

105デフォルトの名無しさん:2008/01/13(日) 18:17:52
caperのなかのひとサルでも分かるチュートリアルつくってorz
特に構文木のところがサパーリ
106デフォルトの名無しさん:2008/01/13(日) 18:26:04
105じゃないけど、caperべんりです、ありがとさんです。
107デフォルトの名無しさん:2008/01/13(日) 20:39:18
caperって?
108デフォルトの名無しさん:2008/01/13(日) 21:32:28
ググレスカ
109デフォルトの名無しさん:2008/01/13(日) 22:33:42
Cygwinいんすこして、bison-2.1.exeとflex-2.5.4a-1.exeをいんすこしたんだけど、

flexを動かそうとすると、bash: flex command not foundとでます
どーやれば、うごかすことができるんすか?
110デフォルトの名無しさん:2008/01/14(月) 01:40:22
>>104
今のJVMは起動時間はクソ遅いけど処理自体はそれなりに速いからねぇ…
gcjでネイティヴバイナリ化するとアプリの起動時間はJVMより速くなる.
が,処理時間は正直速くならんね…
111デフォルトの名無しさん:2008/01/14(月) 12:39:53
http://www.shudo.net/article/Fedora-Core-Expert-200507-GCJ/#performance

でもいい話を聞いた。
VMでどのOS上でも動かせるJAVAがネイティブコンパイルで多分単体で実行できるなら配布しやすいし
多分DirectX使った高速化も・・・・

けどここのサンプルシューティングは動かん。
IE用JavaMV入れただけだけどコマンドラインでJAVA呼び出せるんだけどなんでだろ。
http://www.hcn.zaq.ne.jp/no-ji/game/game.htm
112デフォルトの名無しさん:2008/01/14(月) 13:31:46
Cygwinいんすこして、bison-2.1.exeとflex-2.5.4a-1.exeをいんすこしたんだけど、

flexを動かそうとすると、bash: flex command not foundとでます
どーやれば、うごかすことができるんすか?
113デフォルトの名無しさん:2008/01/14(月) 19:14:45
>>105-107
caperおもしろいな
あとは、軽い汎用VMでもあれば、お手軽自作言語が簡単にという夢を見た
114デフォルトの名無しさん:2008/01/14(月) 19:35:25
VMは作るのだけならそんなに難しくないよ。

むしろ既存のVMに乗せる方が困難なんじゃないだろうか。
115デフォルトの名無しさん:2008/01/14(月) 19:59:03
>>114
同意。
組み込みでメモリ制限がきつい時にマクロの一種としてVM作ること多いんだけど、マジでそう思う(VMも似通ってるけど特殊なプリミティブが組み込み対象別なのでメモリ制限の関係でいまいち統一的に扱えない)
116デフォルトの名無しさん:2008/01/15(火) 06:22:07
Pコードか!
117デフォルトの名無しさん:2008/01/15(火) 12:43:14
似たようなもの。
セルフコンパイル、自己デバッグくらいは処理できる(実機ではそんなメモリないけど、エミュをデスクトップ機上に簡単に作れるのでそちらでデバッグ)
32KワードくらいのRAMのうち16K自由にできれば自己完結環境になれるからね>>pcodeがUCSDのだとすると
118デフォルトの名無しさん:2008/01/16(水) 19:58:47
p2cコンパイラをcygwin環境で動かすにはどうしたらいいですか?
119デフォルトの名無しさん:2008/01/19(土) 03:01:23
GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/author_nari/d/GC

日本語のGC解説は珍しいね
120デフォルトの名無しさん:2008/01/19(土) 11:59:22
おー

簡単な物は大学の授業や演習の資料とかではあるけど
ネット上でブラウザで閲覧可能でまとまってるものはごくわずかだからなぁ
121デフォルトの名無しさん:2008/01/24(木) 19:55:09
MS-DOSのバッチファイルのBNFってどこかに落ちてませんかね。
googleしてみた限りでは見つからないのですけれども・・・。
122デフォルトの名無しさん:2008/01/24(木) 19:57:32
バージョン違いがあるし、難しいんじゃないかなあ?
そもそもコマンドベース言語だし。

過去、バッチを読み込むプログラムは存在してるから、
その作者に連絡とってみるとか。
123デフォルトの名無しさん:2008/01/24(木) 20:00:41
テンプレにある、コンパイラ構成法の正誤表がアクセスできん。
124デフォルトの名無しさん:2008/01/24(木) 20:19:09
GCって昔読んだ説明から、何ひとつ進歩してないような気がする。
気のせいか?
125121:2008/01/24(木) 21:12:43
>>122
レスありがとうございます。
引き続きもうちょっと色々と調べてみようと思います。
126デフォルトの名無しさん:2008/01/25(金) 00:58:25
>>124
> GCって昔読んだ説明から、何ひとつ進歩してないような気がする。
> 気のせいか?

最近の動向を含んだ解説がまだあまり出回ってないから。

個人的に記憶に残っているものをいくつか。
・理論系
 ・ttp://home.pipeline.com/~hbaker1/ThermoGC.html
 ・タイトルが思い出せないのだが、リファレンスカウントと
  ガベージコレクションは双対である、とかなんとかそんなの。

・実装系
 ・ttp://www.nminoru.jp/~nminoru/java/cms/pauseless_gc.html
 ・ttp://sdc.sun.co.jp/java/performance/GCinJava/index.html
127デフォルトの名無しさん:2008/01/25(金) 22:47:41
>>124の言う昔が僕の言う昔と違うことだけはわかる。
ここ5年だったらあんまりかわらんが、10年だとだいぶ違う。
128デフォルトの名無しさん:2008/01/26(土) 20:14:12
statements や expression や leftvalue(左辺値) などの意味は分かるのですが、
primary とはどういった時に使われるのでしょうか?
あるいは、どういったものをいうのでしょうか?
129デフォルトの名無しさん:2008/01/26(土) 20:51:11
primary expression (一次式) なら定数や変数など
それ以上分解できない式のことだが
130デフォルトの名無しさん:2008/01/26(土) 22:49:24
GCが進歩したのはJavaのおかげ。
Lispだけではとてもとても。
131デフォルトの名無しさん:2008/01/26(土) 23:39:24
>>129
そういう意味でしたか、どうもありがとうございました。
132デフォルトの名無しさん:2008/01/26(土) 23:49:21
>  ・タイトルが思い出せないのだが、リファレンスカウントと
>   ガベージコレクションは双対である、とかなんとかそんなの。

A Unified Theory of Garbage Collection
133デフォルトの名無しさん:2008/01/27(日) 17:53:05
>>130
Lisper(笑)
134デフォルトの名無しさん:2008/01/30(水) 05:35:37
LisperはN64で使われてるとかいろいろ誇らしげに言うからな
GCは進歩したのもLispのおかげなんだよ
135デフォルトの名無しさん:2008/01/30(水) 08:00:39
>>134
GCに一番寄与したのってSUNのプロダクトだとjavaよりselfじゃないのかな?
136デフォルトの名無しさん:2008/01/30(水) 13:57:09
「A Scala Tutorial for Java programmers」日本語訳 (PDF注意)
http://homepage.mac.com/takashi_miyamoto/scala/ScalaTutorial.pdf

オブジェクト指向+関数型なScalaのチュートリアル
こういう言語の話題はどこもってけばいいんだ
137デフォルトの名無しさん:2008/01/30(水) 14:02:00
ここ(笑)

とは趣旨が違うよなぁ。

なにか新しい言語を、作りたい人じゃなくて使いたい人のためのスレか。
138デフォルトの名無しさん:2008/01/30(水) 14:21:02
OOP言語統合とか、関数型統合とかないからねえ
OOはネガティブなスレしかないw
139デフォルトの名無しさん:2008/01/30(水) 23:24:11
>>119 のid:authorNari がGC本の翻訳希望者つのってる。本気かいな・・・てか需要あるんかいな・・・
140デフォルトの名無しさん:2008/01/30(水) 23:36:23
LISP使いの人が一番だなって感じたことがあるんだけど、
それは、



















プライドの高さ。(マジ
141デフォルトの名無しさん:2008/01/31(木) 00:04:15
>>140
なんで? どの辺が??? そんなプライド高くねぇとおもうぞ………
少なくとも俺のしってる奴は, みんな, C とかアセンブラとか書けるし…
そう言う問題とはちゃう?
142デフォルトの名無しさん:2008/01/31(木) 00:06:54
>>140
ワシはLisp使いだがプライドって旨いのか?

まだ食った事ないぞ
143デフォルトの名無しさん:2008/01/31(木) 00:21:07
Lisp を貶せば自分が高みに上がれると思ってる奴ってまだ居たんだな
この多言語時代に、とっくに絶滅したと思ってたよ
144デフォルトの名無しさん:2008/01/31(木) 00:50:57
にじみ出るプライドが俺を呪い殺そうとしている^p^
145デフォルトの名無しさん:2008/01/31(木) 05:49:48
せっかく煽ったのに、内容がここまで勘違い全開だと恥ずかしいな。
146デフォルトの名無しさん:2008/01/31(木) 09:00:35
>>145
馬鹿が見る豚のケツって言葉を思い浮かべた
147デフォルトの名無しさん:2008/01/31(木) 15:59:54
lisp = 鮫島事件

おや?誰か来た様だ
148デフォルトの名無しさん:2008/01/31(木) 22:44:45
俺はJavaとか使ってる奴とは違う。
149デフォルトの名無しさん:2008/01/31(木) 22:50:39
かわいそうに、java屋以下とは……
150デフォルトの名無しさん:2008/02/01(金) 07:25:09
馬鹿さ比べでjava屋以下になっても
あんまり悔しくないよなぁ
151デフォルトの名無しさん:2008/02/01(金) 08:28:16
所詮Windowsなんて使ってる以上、どちらも一緒
152デフォルトの名無しさん:2008/02/03(日) 15:47:22
ruby v.s. php か
153デフォルトの名無しさん:2008/02/03(日) 15:52:37
お前ら >>1-6 を読め
ただのLL談義はスレ違いだ
154デフォルトの名無しさん:2008/02/03(日) 20:28:11
LL談義は、こちらで盛り上がってるのでどうぞ

【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/
155デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/02/03(日) 22:26:05
157デフォルトの名無しさん:2008/02/03(日) 22:42:43
ところでみんな、コンパイラ/インタプリタを作るにあたり、
C言語とアセンブリ以外の言語で、という条件だったら、
どの言語使う?
158デフォルトの名無しさん:2008/02/03(日) 22:46:21
C++
159デフォルトの名無しさん:2008/02/03(日) 22:48:48
なんか %prec の使いどころがようわからんのだけど、
単項マイナスのためのおまじないとしか俺理解してないので
なんか変じゃないの? としかアドバイスできない。
160デフォルトの名無しさん:2008/02/03(日) 22:49:14
Cみたくネイティブコードコンパイラがあって
Cよりずっと型安全な言語がいいなぁ
どんな言語があるかよく知らないが
161デフォルトの名無しさん:2008/02/03(日) 22:52:15
GCJ?
162デフォルトの名無しさん:2008/02/03(日) 22:52:22
>>160
その条件だと SML, OCaml, Haskell が該当する。
これらの言語は処理系の実装によく使われるけど、
ランタイムの制約が大きいので要注意。
163デフォルトの名無しさん:2008/02/03(日) 22:52:22
何も考えずにHaskell
164デフォルトの名無しさん:2008/02/03(日) 22:54:36
ランタイムの制約って何?
165デフォルトの名無しさん:2008/02/03(日) 22:59:35
>>164
自前で GC を用意したいとか、Int は 32bit ないと嫌だとか、
細かい処理系の実装を弄りたい向きには合わない

楽したいならむしろ良いのかもしれんけど
166デフォルトの名無しさん:2008/02/03(日) 23:03:38
>>165
なるほど、インタプリタの話か
コンパイラ書くことしか考えてなかった
真面目にインタプリタを書くなら、Haskellで書かれたバイトコードコンパイラ+Cで書かれたバイトコードインタプリタ
みたいな構成にすれば良いかな
167デフォルトの名無しさん:2008/02/03(日) 23:16:27
%prec EXPC が変だな。
168155:2008/02/03(日) 23:29:15
>>167
%precがないとexpの'+'とexpcの'+'でconflictが起きるんです。
169デフォルトの名無しさん:2008/02/03(日) 23:44:41
expとexpcを混ぜて定義しようとするからconflictするわけで

exp: tkVAR | tkNUM | exp '+' exp | '-' exp
expc: tkNUM | expc '+' expc | '-' expc
170155:2008/02/03(日) 23:54:08
>>169
それだと定数式もexpになってしまいます。
要するに、
a + 2 + 3
を、
tkVAR + expc
としてパースしたいんです。

パーサの段階で定数式を最適化したいんです。
難しいですかね?
171デフォルトの名無しさん:2008/02/04(月) 00:45:31
パーサの時点で定数式の最適化って
2 + a + 3
とか最適化できなくね?
172155:2008/02/04(月) 01:27:57
>>171
それはできなくて良いです。

つか>>155のやり方でもうちょっと書いてみたけど、
演算の優先順位でも問題が発生したのでやっぱり
諦めることにしました。

面白いアイディアだと思ったんだけどなぁ…
173デフォルトの名無しさん:2008/02/04(月) 01:27:58
「パーサの段階で定数式を最適化したい」んならアクション中で最適化すればいいだろ
文法レベルで最適化する意味が分からん
174デフォルトの名無しさん:2008/02/04(月) 09:49:13
構文のレベルで弁別しといたほうが楽、という理由はあるかも。

優先順位付けで誤魔化すんじゃなくて、きちんと優先順位を組み込んだ
構文規則にして、あと、何かテクニックがあったような気がするんだけど...
175155:2008/02/04(月) 12:01:23
>>173
tkVAR '=' exp
tkCONST '=' expc
みたいに書けると良いかなと思ったんですよ。

>>174
> 何かテクニック
参考になる資料があれば是非教えて頂きたいです。
176デフォルトの名無しさん:2008/02/04(月) 13:30:58
Haskellでインタプリタか・・・
Haskellってメモリ気にし無さすぎだからヤバそうなイメージがあるけど、
実験用と以外で使われているんだろうか
177デフォルトの名無しさん:2008/02/04(月) 13:31:41
ああああ、アホか俺は。
そんなのは処理系依存だよな。
スマソ。
178デフォルトの名無しさん:2008/02/04(月) 22:14:06
%right '-' も変でないか
その構文では2項演算子じゃないよね
179デフォルトの名無しさん:2008/02/04(月) 23:33:08
確かに
180デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/02/05(火) 16:31:40
メンバーアクセスと呼び出しの構文規則を考えていたんですが、
expr:
  mem-expr

mem-expr:
  invoc-expr ['.' invoc-expr]*

invoc-expr:
  prim ['(' [arg]* ')']*

prim:
  ident
  |(expr)

こんな感じで C++ や Java 風の式を評価できますか?
結合順とかは問題なさそうでしょうか?
184183:2008/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デフォルトの名無しさん:2008/02/05(火) 23:14:41
うぜえ・・
それぐらい自分で判断しろ
半年ぐらい既成の文法眺めてろ
186デフォルトの名無しさん:2008/02/06(水) 00:33:07
ヨミ肉w
187183:2008/02/06(水) 08:45:44
>>185
既存の文法クレクレ
188デフォルトの名無しさん:2008/02/06(水) 10:56:48
189183:2008/02/06(水) 12:11:15
再帰下降のパーサを手書きしてるからパーサ【ジェネレータ】の話じゃない。
190デフォルトの名無しさん:2008/02/06(水) 14:10:11
191デフォルトの名無しさん:2008/02/06(水) 15:58:18
>>183
Javaは関数ポインタないから(hoge)() とか hoge()() はできないよ。
Javaの構文規則みても、あんまし参考にはならないと思う。
192デフォルトの名無しさん:2008/02/06(水) 16:17:49
C言語の本に書いてあるよ
193デフォルトの名無しさん:2008/02/06(水) 16:34:15
1.6で関数型ができるという話はどうなってるの? Java
194デフォルトの名無しさん:2008/02/06(水) 17:24:46
そんな話ないよ
195デフォルトの名無しさん:2008/02/06(水) 17:38:13
ごめん、7だった。
196デフォルトの名無しさん:2008/02/06(水) 19:43:36
>>193
あれは func() じゃダメで func.invoke() とかやる事になってる。
名前空間汚れるから互換性捨てないと func() みたいな呼び出しは無理。
197jonigata:2008/02/07(木) 03:08:09
あごめん
しばらく動きなかったからすっごい見てなかった

>>105
どんな解説でしょうか?
caperというよりもっと一般的な話であるなら、
すでにあるものよりうまく説明できる自身がまったくナイデス

256倍のraccのやつとか読むといいと思うけど
まだ売ってるのかな

>>106
用途とかバグとかウザいところとかあったら教えてください

.....
書き込みから20日もたってるのでいまさらだけどw
198jonigata:2008/02/07(木) 03:16:47
つーか今になって見ると
俺が読んでもわからんですね

たとえばTutorial 1:
> 7行目のupcastは、各非終端記号の型から、Parserのインスタンス化のときに
> テンプレートパラメータとして与える「値集合すべてをあらわす型」への変換を提供する関数です。
> セマンティックアクション関数がひとつでもある場合、安全な型変換のために
> この関数が定義されていなければなりません。

ハア? わけわかんねーよバカじゃねーの

って感じw

とはいえこれはこれで「yacc使ったことある人」対象であれば
簡潔にまとまっているような気もしないでもない

気が向いたら読み直して書き直してみます
199デフォルトの名無しさん:2008/02/07(木) 06:12:26
なんかワロタ
200デフォルトの名無しさん:2008/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 ];
  }
の間違いじゃないすか?
201jonigata:2008/02/07(木) 21:58:54
javascript普段使わない上
3時間くらいで書いたコードなのでまったく思い出せない……


そのようですね

現在のコードだと、
パーサは動くけど
セマンティックバリューにぜんぜん意味わかんないものが返ってくるってことかな?
>>200さんはそれでわかったのでしょうか?
202デフォルトの名無しさん:2008/02/07(木) 23:36:20
え?どれを3時間だって?
203jonigata:2008/02/08(金) 11:48:35
>>202
jsジェネレータ(caper_generate_js.cpp)です。
といっても、自分に興味がほとんどないので
上のようなバグ出しちゃうわけですが……

C#やDのジェネレータを書いてくださった方もいらっしゃるので、
他の人でもさほど難しくなさそうですよ。

PHPも需要がありそうなんで挑戦しようとしたんですが
PHPの仕様のアレさにやる気が失われました。
難しくはないと思うのですが。

週末久しぶりにバージョンアップしようかと思います。
上のバグ直してC#やDのジェネレータを取り込んだバージョン。
204デフォルトの名無しさん:2008/02/08(金) 22:43:41
>>203
乙!
205jonigata:2008/02/10(日) 13:44:07
む、C#のジェネリクスってduck typingできないのか
もらったコードバグっててちょっと使えないな……

C#はいったんなしにするか
206jonigata:2008/02/10(日) 13:49:27
Dは普通に動いたっぽい

C#ジェネレータはundocumentedでだして
誰か得意な人に見てもらおう
207デフォルトの名無しさん:2008/02/10(日) 17:31:53
スレチガイ
208デフォルトの名無しさん:2008/02/11(月) 17:16:50
パーサジェネレータのスレってどこにあるん?
209デフォルトの名無しさん:2008/02/11(月) 18:57:29
>>208
今のところここがもっとも近い、そういう意味じゃ>>207は微妙な指摘というか言葉たらず。
独白に近いのでそういう事はBlogでやれって意味じゃまさに207の指摘どおり。

210デフォルトの名無しさん:2008/02/12(火) 11:44:05
趣味で(ほぼ無意味ですが)C++とほぼ同等のコンパイラを作っています。
当然テンプレートとかはないですが、文法がそっくりという意味です。

質問なのですがC++は何故、クラスの定義がファイルの行数的に先に行なわれていないとコンパイルエラーになるのでしょうか?
例えば

CHoge test;

class CHoge
{

};

こういう順番だと、CHogeって何?未定義なんだけど。ってエラーになりますよね。
ファイルの上から処理して言ってるのだから当たり前なのは分かってます。
ですが先に class などの定義系を先に処理してからにすれば回避できる問題かと思います。

「先に全ファイルをチェックして定義系を処理してから、再度全ファイルを処理する」
という2度処理が、C++が生まれたころのマシンスペックではもったいなかったのでしょうか?
211デフォルトの名無しさん:2008/02/12(火) 11:53:55
過去の名残。
212デフォルトの名無しさん:2008/02/12(火) 12:09:17
>>210
Cのstructの仕様をそのまま引き継いでるだけかと。
C++というよりは、Cが生まれたころのマシンスペックだろう。
213デフォルトの名無しさん:2008/02/12(火) 13:02:39
>>211-212
なるほど、ありがとうございました。
無理にそこを真似する必要はなさそうですね
214デフォルトの名無しさん:2008/02/12(火) 14:39:58
最初のC++コンパイラはCへのトランスレータだったような気がする。(SS1の頃でメモリも16M位が標準だった)
215デフォルトの名無しさん:2008/02/12(火) 14:55:16
216デフォルトの名無しさん:2008/02/12(火) 16:35:10
質問
Javaっぽい言語でスクリプト作ってたんですが、数値型に何も考えずに
int, short, byte, long をつくったんですよ
でもおかげでかなりVMやコンパイラの仕組みが複雑になってしまってコマってます

正直、shortとかbyteってみなさん使ってます?
(メモリーをケチる目的以外で)
バイナリファイルを解析する時とかはさすがにbyte単位で扱えなければ話にならないと思いますけど
ByteArrayStreamみたいなものがあればそれでいいかなぁとか考えてるのですが…
217デフォルトの名無しさん:2008/02/12(火) 16:42:31
Javaっぽいって…
218デフォルトの名無しさん:2008/02/12(火) 16:47:14
>>217
すごい誤解招きそうな文章でしたね

Javaっぽい文法でスクリプトを作ってたんですが〜としてください
219デフォルトの名無しさん:2008/02/12(火) 17:16:56
byteやshortも過去の遺産じゃね?
よっぽどメモリーがきつい環境で無い限り、演算もintのほうが速いわけでもあるしint使うわ
220デフォルトの名無しさん:2008/02/12(火) 17:32:05
あるいは、メモリに常駐するデータ量が2Gか4Gかという差があるとかな
221デフォルトの名無しさん:2008/02/12(火) 17:35:56
確かにそれくらいメモリーの差が出るなら考えるなw
まぁそれもByteArrayStream?があればそっちでいいわけで
Javaのものだと仮定すれば、あれランダムシークもできるし(Byte型の配列とほぼ同義として扱える)
222デフォルトの名無しさん:2008/02/12(火) 17:56:28
>>216
JavaVMも配列とかフィールドにはbyteやshortがあるけど、スタック中ではint扱いっすよ
いちいち丸め処理が入るだけで
long, float, double や参照は別扱いだけど
223デフォルトの名無しさん:2008/02/12(火) 20:25:44
C でも汎整数拡張とかあって、
式中では勝手に int に格上げされるな。
224デフォルトの名無しさん:2008/02/12(火) 22:23:46
でも、エンジニアリングモデルでは普通に使ってるよ。
225jonigata:2008/02/16(土) 12:32:02
先週末にバージョンアップするとかいっときながら遅れましたが
caperバージョンアップしました。

http://tinyurl.com/yefoxa

例によってうまく動かなかったらごめんなさい。

C#ジェネレータとか一応組み込んだけど
普段使わない言語でぜんぜん要領を得ないので
詳しい人がいたらここかブログ( http://d.hatena.ne.jp/jonigata/ )に
なにかアドバイス等いただけるとうれしいです。
226デフォルトの名無しさん:2008/02/21(木) 23:44:59
場違いかも知れませんが、宜しくお願いします。yacc/lexはc言語での
作りですが、perl言語で同様の処理をしたいのですが、処理系はあるの
でしょうか?

以前は、随分と前に見た事はあるのですが、最近は見かけなくなりまし
た。知っている方、どうかそのインストール方法...等アドバイス宜
しくお願いします。
227デフォルトの名無しさん:2008/02/21(木) 23:56:50
Racc
228デフォルトの名無しさん:2008/02/22(金) 09:04:34
kmyacc
229デフォルトの名無しさん:2008/03/04(火) 08:45:05
構文解析のアルゴリズムが沢山載っている「Parsing Techniques - Second Edition」
http://www.cs.vu.nl/~dick/PT2Ed.html
230デフォルトの名無しさん:2008/03/07(金) 09:20:44
>>27>>37
LLVMはMac OS XのOpenGLスタックで使われてるよ。
PyPyもターゲットの一つにしてる。

http://llvm.org/Users.html
231デフォルトの名無しさん:2008/03/09(日) 01:53:45
gnu makeのBNFとかってありますかね?
232デフォルトの名無しさん:2008/03/15(土) 14:32:59
やはり新しい言語の方が優れてるのですか?
233デフォルトの名無しさん:2008/03/15(土) 14:42:55
兄より優秀な弟などいない
234デフォルトの名無しさん:2008/03/15(土) 15:05:15
>>233
イギリス皇室の方ですか?
235デフォルトの名無しさん:2008/03/15(土) 17:16:19
>>233
ラオウ乙
236デフォルトの名無しさん:2008/03/15(土) 17:48:49
>>235
ジャギでは
237デフォルトの名無しさん:2008/03/15(土) 18:32:44
>>231
GNU Make のソースツリーの中に無いの?
知らないけど。
238デフォルトの名無しさん:2008/03/15(土) 22:05:11
Lisp 最高〜!
239デフォルトの名無しさん:2008/03/16(日) 18:03:56
そういえば、昔どこかのサイト(海外)で、
プログラミング言語の上下関係を図式化したものがあった。
そこでは確かに Lisp が一番上位に来ていたような…

何がいいのかさっぱりわからんがw
240デフォルトの名無しさん:2008/03/17(月) 08:26:38
>>239
原文を見てない範囲での推測だが、
S式という情報の取扱形式が
全ての上位に来ると言う意味なら判らなくもない。
ただそういう比較は扱う人の主観でしか有り得ない。
241デフォルトの名無しさん:2008/03/18(火) 13:19:49
ここにそれっぽいのがあるね
ttp://www.geekpage.jp/blog/?id=2006/12/13
242デフォルトの名無しさん:2008/03/18(火) 16:18:53
Adaのマルチタスクプログラミング舐めてるのか!
243デフォルトの名無しさん:2008/03/18(火) 17:29:15
Lisp - C の連結はありえない
244デフォルトの名無しさん:2008/03/18(火) 18:16:28
>>241
これは面白いな。
ところで、最近のマクロという名のプログラムはどこに?
245デフォルトの名無しさん:2008/03/18(火) 18:23:52
面白くないぞw
246デフォルトの名無しさん:2008/03/19(水) 06:10:35
>>241
部分部分を見るとアレだけど、大まかな流れは頷けなくもない。
LanguagesではなくProgrammersを扱った図だからね。言語の宗教論争とはちょっと事情が違う。
「上位」プログラマは、多くの場合「下位」プログラマ"でもある"(その言語を使える)か、
あるいは"すぐにそうなれる"(パラダイムを十分把握していて、表面の違いを学ぶだけでいい)状態にある。
きっちり成立しているとは言わないけど、少なくとも、同じ事を上下逆に考えるよりは成立している。
だから全体を、あくまで曖昧なレベルで、クラス図の比喩として見ることができるんじゃないかと。

別の言い方をするなら、この図は、
「あなたが言語Xと言語Yを使えて、どちらかの言語名+プログラマ、でしか自称してはいけないと言われたら、
どちらを口にすれば、自分のスキルや経験値をよりあますことなく示唆できるだろうか?」
っていう「ソート」の結果であり、実際、まんざらデタラメな結果ではないと思う。
LispとCが使える人だったら、この図の「Lispプログラマ」に自分を置くし、たぶんそれで正解だろう。
逆を自称するよりは、その人の経験してきたことの「より多く」を伝えられると思う。たぶん。
247デフォルトの名無しさん:2008/03/19(水) 07:11:51
> クラス図の比喩として見ることができるんじゃないかと。

そんな必要はないだろ。
その見方から何が得られたかも書いてないし。
クラス図言いたいだけと違うんかと
248デフォルトの名無しさん:2008/03/19(水) 07:30:39
>>247
よくわからん返しだな。
249デフォルトの名無しさん:2008/03/19(水) 09:06:36
ジョークにマジレスしてる>>246もよくわからんのだが…
250デフォルトの名無しさん:2008/03/19(水) 09:23:52
>>249
ジョークがまんざらでもないことを面白がってるんだよ。
251デフォルトの名無しさん:2008/03/19(水) 13:37:47
「そうそうあるある」ってのが笑いどころのネタだしな
252デフォルトの名無しさん:2008/03/19(水) 14:59:48
まんざらでもないからこそジョークとして成立してるところに
「いやこのジョークはまんざらでもないんだよ!」と解説しちゃうところが無粋すぎ。
ってかスレ違いすぎだな…
253デフォルトの名無しさん:2008/03/19(水) 19:01:19
そうとも思わないが?スレチ
なかなかおもしろいと思う。
254デフォルトの名無しさん:2008/03/19(水) 21:27:09
使用者のヒエラルキーなんてマ板の範疇だろ・・・
スレ違いどころか板違いだ
255デフォルトの名無しさん:2008/03/19(水) 22:36:37
糞つまらなねえ >>241
256デフォルトの名無しさん:2008/03/20(木) 05:34:52
まぁ、自分が悪く言われているジョークが面白くないのは自然だ。
257デフォルトの名無しさん:2008/03/20(木) 13:23:29
>>241の元ねたの最下位カーストだけ妙に具体的なのは
おもしろかったw
258デフォルトの名無しさん:2008/03/22(土) 00:33:28
お気に入り言語が下にあるからって、そんなにカリカリせんでもw
259デフォルトの名無しさん:2008/03/22(土) 00:43:41
出来が悪いのはともかく、
言語の階層じゃなくて、
プログラマーの階層なんだぜ?
260デフォルトの名無しさん:2008/03/22(土) 01:24:06
古臭いネタまだひっぱるのか?
261デフォルトの名無しさん:2008/03/22(土) 09:59:11
約一名のこのネタの腐しかたが特徴的すぎるんだが、何がそんなに気に入らないんだろw
262デフォルトの名無しさん:2008/03/22(土) 20:03:53
誰のこと?
263デフォルトの名無しさん:2008/03/22(土) 20:59:41
野村君のことだよ
264デフォルトの名無しさん:2008/03/23(日) 19:07:54
鈴木君は?
265デフォルトの名無しさん:2008/03/23(日) 20:31:18
鈴木君は良い奴だよ。
先週、尻にタイ焼きを詰まらせて亡くなったけど。
266デフォルトの名無しさん:2008/03/25(火) 19:26:54
田中くんは?
267デフォルトの名無しさん:2008/03/30(日) 23:18:15
山田さんは?
268デフォルトの名無しさん:2008/04/02(水) 14:48:16
おーい
269デフォルトの名無しさん:2008/04/02(水) 21:19:35
中村くん
270デフォルトの名無しさん:2008/04/03(木) 16:30:45
なんだい?
271デフォルトの名無しさん:2008/04/03(木) 19:07:31
ちょいと待ちたまえ
272デフォルトの名無しさん:2008/04/03(木) 19:41:25
>>270-271>>268-269と世代が違う件について
273デフォルトの名無しさん:2008/04/07(月) 12:00:22
>>272
     オハヨー!!
    ∧∧ ∩
    (`・ω・)/
   ⊂  ノ
    (つノ
     (ノ
 ___/(___
/  (___/
 ̄ ̄ ̄ ̄ ̄ ̄
274デフォルトの名無しさん:2008/04/09(水) 10:09:21
スクリプトの概要 - Tactico
http://www.lagarto.co.jp/tactico/script.html

定評ある投資ツールOmegaチャートの作者が開発している、次期投資ツール「Tactico」に搭載されているスクリプト言語の解説。

関数型言語のにおい
275デフォルトの名無しさん:2008/04/20(日) 15:48:01
あげてもいいですか?
276デフォルトの名無しさん:2008/04/20(日) 16:03:12
いいけど、またLISPネタになるだけだよ?
277デフォルトの名無しさん:2008/04/20(日) 18:25:38
>>275
既にあげてんじゃねぇかYo!
278デフォルトの名無しさん:2008/04/23(水) 22:42:00
本のサンプルで利用されているANTLRをお勉強中。
今までこういったものを触ったことが無いので枠枠してる。
279デフォルトの名無しさん:2008/04/24(木) 18:47:58
SquirrelとXtalのソース見て勉強中
頭では分かっていても、実際にコードへ落とすときに悩んでしまう
280デフォルトの名無しさん:2008/04/27(日) 19:30:01
プログラムの最適化方法、特にベクトルプロセッシングの最適化について知りたいのですが、
どこか参考になるサイトはありませんか?
よろしくお願いします。
281デフォルトの名無しさん:2008/04/27(日) 19:34:58
つ『コンパイラの構成と最適化』
282デフォルトの名無しさん:2008/04/27(日) 20:20:15
了解しました。ありがとうございます。
283デフォルトの名無しさん:2008/05/01(木) 00:33:06
髭を伸ばそうかと思っているんだけど、おまえら髭どうしてる?
284デフォルトの名無しさん:2008/05/01(木) 03:58:14
剃ってる
285デフォルトの名無しさん:2008/05/01(木) 06:13:41
これか

スラッシュドット・ジャパン | 髭がある程プログラミング言語は繁栄する?
http://slashdot.jp/developers/08/04/30/0830201.shtml
286デフォルトの名無しさん:2008/05/01(木) 07:43:06
髭はバリカンで刈ってる。
別に髭専用バリカンてわけでもない。
287デフォルトの名無しさん:2008/05/01(木) 12:12:15
年単位で前に読んだ記憶があるネタだな
288デフォルトの名無しさん:2008/05/02(金) 05:41:41
俺はひげ専用バリカン持ってるよ。
長さを自在に調整できるやつ。
ただ今使っているのは電池専用なので使いにくい
289デフォルトの名無しさん:2008/05/06(火) 22:25:36
型名と変数名を名前システムの観点から考察した
議論ってなんかある?
290デフォルトの名無しさん:2008/05/07(水) 21:01:37
いきなりどうした、頭大丈夫か?
291デフォルトの名無しさん:2008/05/07(水) 21:13:52
静的型って、型名と変数名とスコープを結びつけるわけじゃん。

抽象データ型って、変数名とスコープを介して
型名とプロシージャ名を結びつけるわけじゃん。

こういうのを名前システムとして眺めたら、
なんか見えてこねえ?
292デフォルトの名無しさん:2008/05/07(水) 22:02:18
なにが言いたいのかわからん
マヨイガでも見えてんのか
293デフォルトの名無しさん:2008/05/07(水) 23:29:35
>>289 の脳内で画期的な理論が生まれようとしている!
のかもしれない…?
294デフォルトの名無しさん:2008/05/09(金) 13:32:22
ただの型推論なんじゃない?
295デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/09(金) 18:38:40
キログラムとセンチメートルといった単位の違うものを足したりできなくしようというわけか?
興味深いけど、なんか面倒臭そうな気がする
297デフォルトの名無しさん:2008/05/09(金) 19:01:53
過度な形式化は無用な世話だ
298デフォルトの名無しさん:2008/05/09(金) 19:07:28
>>295
間抜けでもいいなら、不正な操作を禁止することは既にできるわけだろ
冗長だから短く書きたいというなら型システムの問題ではない
Lispのマクロのようなものがあればいい
299デフォルトの名無しさん:2008/05/09(金) 21:01:59
>>298
一概にそうは言い切れないだろ
略記法を展開する過程が型情報に依存するなら、単にマクロで構文を導入するのでは済まない
300デフォルトの名無しさん:2008/05/09(金) 22:32:46
>>296
カロリー換算することで、燃費というプロキシは必要になるが計算は可能だな
ガチガチに縛るのもどうなのかなぁと思うのだが
俺の視点はずれてるのだろう
301デフォルトの名無しさん:2008/05/09(金) 23:43:33
>>299
たとえばCのsizeofは型情報がないと計算できないが、
逆に言えばsizeofのような演算子を必要な分だけ追加すれば済むってことか?
302デフォルトの名無しさん:2008/05/10(土) 00:28:51
新機能を追加しないと展開できない略記法?

ハードル上げ過ぎ
303デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/05/10(土) 03:44:39
variable Integer : num; // もちろんただの整数型も宣言可能
こればっかり使って全て台無しって事にならんかなぁ?

unit : Ohm;
unit : Volt= Ampere * Ohm;
とかせんといかんの?
305デフォルトの名無しさん:2008/05/10(土) 03:57:54
306デフォルトの名無しさん:2008/05/10(土) 05:00:56
>>295>>303
Boost C++ ライブラリに昔あったなあそれ。
今ではなくなっちゃってるっぽいけど。
変数に次元を割り当てて、異なる次元の変数同士の加算減算をしたり、
次元を無視した代入を行おうとすると、コンパイルエラーを吐いてくれるやつ。
307デフォルトの名無しさん:2008/05/10(土) 05:59:41
情処のプログラム研究会あたりでネタにな・・・らなさそうだな
308デフォルトの名無しさん:2008/05/10(土) 07:43:52
ならないな。こんなのとっくの昔からある話題だし。
言語レベルでやるようなもんじゃない。
309デフォルトの名無しさん:2008/05/10(土) 11:40:27
ハンガリアンなんて便法じゃなくて、型で強制すべき、ということでしょ。
それを支援する言語というテーマは、まんま同じものが過去になければ、
研究会発表ぐらいならいけるんでない?
310デフォルトの名無しさん:2008/05/10(土) 11:41:21
強い typedef でおkだろ。
311デフォルトの名無しさん:2008/05/10(土) 12:39:04
>>303
よくわからんがこんな言語のこと?
ttp://futureboy.us/frinkdocs/
312デフォルトの名無しさん:2008/05/10(土) 14:27:11
LLバトロワスレにはっちゃったけど、いちおうここにも

JRuby開発者のOla Bini氏がJVM上で動作するプログラミング言語「ioke」を開発中
http://groups.google.com/group/jvm-languages/browse_frm/thread/2254d1d67bda9813
313デフォルトの名無しさん:2008/05/10(土) 18:04:32
具体的な機能に飛びつく前に、こういう問題を概念レベルで
上から俯瞰できるような観点はないか、そこが知りたい。

数学基礎論だと、群だの体だの圏だので俯瞰するわけだ。
そういう観点があって初めて、5次以上の解の方程式が
存在しないことがわかる。

なにをどう構成して名づけるか? 変数名・型名・スコープは
構成の仕方の一例にすぎないわけよ。
演算子と構文にいろんなやりかたがあるように、名前システムにも
いろんなやりかたがあるはず。多分。

そのいろんなやりかたってのを、「あれを思いついた」
「これを思いついた」ではアドホックだから、名前システム
という観点が欲しい。
314デフォルトの名無しさん:2008/05/11(日) 00:19:43
>>283
レーザー脱毛した。
もともとそんなに濃くなかったけど朝がなんとなく楽になった。

他の脱毛よりましらしいがレーザーもすんげー痛い。
315デフォルトの名無しさん:2008/05/11(日) 01:06:02
>>314
痛いのか、知って良かった。

朝剃っても夕方泥棒みたいになるんだ。
316デフォルトの名無しさん:2008/05/14(水) 15:51:01
質問。
εって一つ先読みして即還元すればいい?
317デフォルトの名無しさん:2008/05/16(金) 07:20:07
「はじめてのコンパイラ - 原理と実践」って書かれてることに間違いないですよね?
正順LRって単語でググってもあまりヒットしないので不安なんだけど。
318デフォルトの名無しさん:2008/05/16(金) 07:44:02
普通 正準LRっていわんか?  canonicalの訳だろ?
319デフォルトの名無しさん:2008/05/16(金) 07:50:18
>>318
ってことは、正順と書いてあるこの本は駄目本ってことですか?
ドラゴンブックは暗号が多すぎて解読が難しかったので、この本を
無条件に信頼できると良いのですが。
320デフォルトの名無しさん:2008/05/16(金) 08:11:15
無条件に信頼って物を学ぶ態度じゃないだろw
とりあえず仮に教科書を信頼して勉強をすすめる
知識が付いてきたら別の情報源との突き合わせも難なくできるようになるだろうから、
間違ったことを覚えていたらそのときに訂正すればいい

もちろん間違いの多い教科書を避けられるならそれが良いけどな
321デフォルトの名無しさん:2008/05/16(金) 08:24:02
>>320
この本を読んだことあるのですか?
322デフォルトの名無しさん:2008/05/16(金) 08:38:39
ないよ
323デフォルトの名無しさん:2008/05/16(金) 08:45:33
>>322
やさしいJavaは?
324デフォルトの名無しさん:2008/05/16(金) 08:49:29
>>317
スタータキットとして割りきって使えよ。
「原理と実践」でそんな薄い本。
甘えすぎ。
325デフォルトの名無しさん:2008/05/16(金) 08:56:58
>>324
平易な言葉で書かれた素晴らしい本だと思うんですがね。
内容が正しければ良書なのですが。

ドラゴンブックマンセーしてるやつは3の倍数。
326デフォルトの名無しさん:2008/05/16(金) 09:17:49
順は"順当"の順だから間違いってほどではないだろ。
いずれにせよ、どうでもいいことだろ。
そんな短い本で終わることはあり得ないんだから。
327デフォルトの名無しさん:2008/05/16(金) 09:25:01
>>326
この本に含まれていなくて且一般に重要なトピックは何ですか?
こんな短い本・・・とおっしゃるくらいだからいくらでも挙げることが
できるんですよね?
それともあなた何も理解せずに適当な単語を並べてるただの3の倍数ですか?
328デフォルトの名無しさん:2008/05/16(金) 09:31:11
そのくらい自分で調べろよ。
本じゃなくて、お前の勉学の態度が悪いんだよ。
329デフォルトの名無しさん:2008/05/16(金) 09:32:53
>>328
結局のところ全く理解していないので一つも挙げることが出来ないのでは?
330デフォルトの名無しさん:2008/05/16(金) 09:33:23
情報が足りるか足りないかなんか
実装してみたらわかると思うけど
それ以前に実装しようと思うだけでわかるかもね
331デフォルトの名無しさん:2008/05/16(金) 09:33:59
情報引き出すための煽りか
332デフォルトの名無しさん:2008/05/16(金) 09:35:12
>>330
それだと実装手法は一つしか学ばないでいいって態度だね。
333デフォルトの名無しさん:2008/05/16(金) 09:38:42
>>331
引き出す情報を持っているかどうかが問題。
たぶん持ってないな。
334デフォルトの名無しさん:2008/05/16(金) 09:47:43
仮にそうだとして
それを指摘して
誰になんの得があるというのか
勝利宣言するならその本読んで
実装する必要があるし

自分の立場がわかってなさそうだな
335デフォルトの名無しさん:2008/05/16(金) 09:52:41
>>334
もうやめれ。
傍目に見てお前の無知はばれてる。
ややこしくなるからわからないならレスするな。
336デフォルトの名無しさん:2008/05/16(金) 09:58:01
IDの無い板でそれを言っても何の説得力もないけどな
337デフォルトの名無しさん:2008/05/16(金) 11:01:48
知らないならレスしないでください

の変形かw
338デフォルトの名無しさん:2008/05/16(金) 11:44:13
知らないのにレスするとはなんとおこがましいのでしょう。
339デフォルトの名無しさん:2008/05/16(金) 12:44:48
お前ら楽しそうだな。
チャットばかりしてないで、スレタイに沿った話しろよ。
340デフォルトの名無しさん:2008/05/16(金) 12:56:36
やさしい構文解析はいつ出版されるのか。
341デフォルトの名無しさん:2008/05/17(土) 06:49:26
構文解析をコードで理解するよりも、まだやることは多い気がする。

状態遷移図を書きまっくて、
NFA からε遷移が無くなるように DFA する辺りとか。
オートマトンを追いかけてのスキャンを考えて、
例外処理までもを備えた形にはどうなるのかとか。

一見動いて見えるコードを下手に書いてしまうと、後が大変になる。
思考実験で状況を追いかける位にはなれたらなー、とは思った。独感だけど。
342デフォルトの名無しさん:2008/05/18(日) 21:26:16
>一見動いて見えるコードを下手に書いてしまうと、後が大変になる。

そうか?
それこそが、ITで必要なことだと思うが、

あっ、研究は別ね。
343デフォルトの名無しさん:2008/05/18(日) 21:40:43
>>341
まずその変な日本語を直してからだな
344デフォルトの名無しさん:2008/05/19(月) 09:48:43
COBOLのコンパイラを探してるんだけど、何か無いかな?
条件としては
フリーで独自の例外表記が無くて
外部テキストファイルの読み込みが可能
ソースと実行結果をテキストで出力が可能な奴を探してるんだ。
ずっと探してるんだけど実効結果をテキストで出力可能な奴が見当たらないorz
345344:2008/05/19(月) 11:27:19
すいません。追記としてwindows上で動く奴があったら教えてください
346デフォルトの名無しさん:2008/05/20(火) 06:14:44
COBOL GCCでググってみました。
http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rls=GGLJ,GGLJ:2007-46,GGLJ:ja&q=COBOL+GCC
COBOLってよくわからんのですが、リダイレクションとかなんかつかえばいいんでないんでしょうか?
ここは、コンパイラやスクリプトエンジンを作るスレなので、
COBOLのスレで聞いたほうがイイ!と思います。
347344:2008/05/20(火) 10:14:30
>>346
本当にありがとうございます。
ぜひ、参考にさせていただきます
348デフォルトの名無しさん:2008/05/20(火) 10:25:53
inforno :: Scalaでスタック指向言語をサクッと実装する
http://inforno.net/articles/2008/05/17/simple-stack-oriented-language-implemented-using-scala
349デフォルトの名無しさん:2008/05/23(金) 09:50:42
expr:
expr + expr
|expr - expr
|special

special:
expr + expr
350デフォルトの名無しさん:2008/05/24(土) 00:54:28
動的コンパイラや最適化の勉強をしようと思っているんですが、Ruby とかのス
クリプト言語で書かれた、最適化の勉強用のおもちゃコンパイラ的なもので手
軽なのって無いでしょうか?
351デフォルトの名無しさん:2008/05/24(土) 16:25:52
・brainf*ck
インタプリタを作った事が無い人でも作れる
結構最適化に向いていると思われる
352デフォルトの名無しさん:2008/05/24(土) 18:53:35
Martin Fowler's Bliki:パーサー恐怖症(パーサージェネレータ習得のすすめ)
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?ParserFear

Terence Parr 著「The Definitive Antlr Reference: Building Domain-specific Languages」
http://www.amazon.co.jp/dp/0978739256
353デフォルトの名無しさん:2008/05/25(日) 17:57:53
一瞬、メイド特化言語に見えた。
354デフォルトの名無しさん:2008/05/26(月) 00:22:55
緊急入院
355デフォルトの名無しさん:2008/05/27(火) 03:35:41
C言語のコンパイラを探したんだが
いろいろあるんだね・・・知らなかった。
ぶっちゃけお勧めって何?
OSはWinXPとVISTAで。
356デフォルトの名無しさん:2008/05/27(火) 03:36:14
>>1
357デフォルトの名無しさん:2008/05/27(火) 08:25:07
>>355
英語学者が英語をしゃべれるとは限らないという。
Cコンパイラの話はコンパイラスレではなくCスレで聞け。
358355:2008/05/27(火) 08:28:01
スレチすまそ
359デフォルトの名無しさん:2008/05/27(火) 22:36:22
>>351
brainfuck でできる最適化って具体的になにがあるでしょうか?
360デフォルトの名無しさん:2008/05/27(火) 22:47:41
>>359
コンパイル時の定数畳み込みだろ。
究極的には入力命令","の影響の及ぶところとそうでないところを判別して、
影響の及ばないところは全てコンパイル時に計算することができる。

たとえば、
 ++[>+++<-]>.,.
というプログラムなら、
 putchar((char)6);putchar(getchar());
と最適化できる。
361デフォルトの名無しさん:2008/05/27(火) 23:37:09
>>360
ありがとうございます。

>究極的には入力命令","の影響の及ぶところとそうでないところを判別
これって、定石ではどうやってやるんでしょうか?まったくわかっていないけ
ど、コールフローやデータフローの解析をする?
362デフォルトの名無しさん:2008/05/28(水) 22:54:14
あたりまえですがなw
363デフォルトの名無しさん:2008/05/30(金) 04:45:04
>英語学者が英語をしゃべれるとは限らないという。

日本語学者が日本語をしゃべれるとは限らないという?
364デフォルトの名無しさん:2008/05/30(金) 10:44:17
海外の日本語学者にはそういう人もいるだろ
365デフォルトの名無しさん:2008/05/30(金) 13:29:20
地震の研究者がカンファレンスで日本にきて初めて地面の揺れを経験して
「今のは何だ」
と騒いだ話を思い出した。
366デフォルトの名無しさん:2008/05/30(金) 14:17:34
こういうやり取りが某スレで展開されてましたが、今の流行ですか?

638 名前:デフォルトの名無しさん 投稿日:2008/05/25(日) 00:23:06
アムロ・レイだってマニュアルが無ければ
ガンダムを操作することは出来なかった
つまりはそういう事さ


639 名前:デフォルトの名無しさん 投稿日:2008/05/25(日) 00:38:18
それ以前にアムロもカミーユもロボット作ったりしてなかったか?
つまりはそういう事さ
367デフォルトの名無しさん:2008/06/01(日) 18:30:18
教えて下さい。
Lispって人工知能とかで使われたりしてるって
よく本とかに書いてあるのをみるんですが、
何が(どこが)人工知能にむいているんでしょうか?
逆に、他の言語だと何が(どこが)向いていないのでしょうか?
368デフォルトの名無しさん:2008/06/01(日) 19:07:29
>>1にかいてあることがわからない人は、中がっこうからやりなおしてね。
369デフォルトの名無しさん:2008/06/01(日) 19:19:12
やり直しも何も中学生ですが何か?
370デフォルトの名無しさん:2008/06/01(日) 19:20:51
>>368
わからねえならわからねえってハッキリ言えよこの屑が
371デフォルトの名無しさん:2008/06/01(日) 19:28:18
分かってれば情報垂れ流しとか、ハッキリ言うとそれは廃人です
372デフォルトの名無しさん:2008/06/01(日) 19:50:59
貴様らはいちいち回りくどいな
lispスレで聞けやこのハゲ!
373デフォルトの名無しさん:2008/06/01(日) 21:07:38
>>370
わからない場合はわからないと言ってもいいんだけど、残念ながらわかるんで、
「わからない」と書くと嘘をついたことになっちゃう。だから書けないw

あと、わからない奴が「わからない」と言うのは、名指しで答を求められて
「何か言わなきゃいけないけど答がわからない」という状況に陥ったときであって、
この場合は誰も当てはまらない。わからない奴はただ「黙ってる」場面だよ。
つまり、「わからねえなら黙ってろよ」と煽らなきゃいけない。君のはまるっきり的外れ。

頭の悪い子が興奮すると、こういうミスで大恥かいちゃうから気をつけようね。
こういうところで知能レベルってバレちゃうものだから・・・。
374デフォルトの名無しさん:2008/06/01(日) 21:21:28
わからねえってハッキリ言えよこの屑
375デフォルトの名無しさん:2008/06/01(日) 22:56:08
煽りたい盛りのゴミはほっておけ
まぁ放ったところで有益な答えが返ってこないだろう事実は変わらないがな
376デフォルトの名無しさん:2008/06/02(月) 00:29:20
わかりません、ごめんなさい。
僕達は屑です
377デフォルトの名無しさん:2008/06/02(月) 13:31:35
>>376
それでいい

おまえらもこれからは素直に生きろよな
378デフォルトの名無しさん:2008/06/02(月) 13:50:51
>>377
「おまえら」なんて他人事みたいに語ってるが「僕達」にはお前も入ってるんだぜ?
379デフォルトの名無しさん:2008/06/02(月) 14:15:28
>>378
他人事も何も他人だ
お前も素直になれ
380デフォルトの名無しさん:2008/06/02(月) 16:33:51
いい加減うぜぇ
381デフォルトの名無しさん:2008/06/02(月) 18:25:54
ここはRuby坊のLisp叩きスレですか?
382デフォルトの名無しさん:2008/06/02(月) 19:14:42
Ruby坊はあらゆるスレに来てあらゆる言語を叩くので、
特にこのスレだけがどう、ということはないです。
383デフォルトの名無しさん:2008/06/04(水) 00:10:05

373さん、ここは子供の来るところではありませんよ。


さて、終了です。


スレを元に戻しましょう。
384デフォルトの名無しさん:2008/06/04(水) 00:18:33
おまえらスルーしろよ
糞が
385デフォルトの名無しさん:2008/06/04(水) 00:23:33
インタプリタをCで作りたいです。

お勧めのサンプルって、無いですか?
386デフォルトの名無しさん:2008/06/04(水) 00:57:59
>>384
頭の悪い子供には無理な注文。
相手の想定を上回ることを書いて鼻をあかしてやろう、と無駄なことを意気込み、
結果アピールできるのは自身の上昇した血圧だけ、というこの一セットは、彼らの宿命なのです。
387デフォルトの名無しさん:2008/06/04(水) 01:10:09
で、>385は放置か?w
388デフォルトの名無しさん:2008/06/04(水) 01:11:32
相手してあげたいなら、存分に相手してあげればいい。
389デフォルトの名無しさん:2008/06/04(水) 01:16:31
断る。
390デフォルトの名無しさん:2008/06/04(水) 01:57:20
自分のお勧めはCマガジン 2000年5月号。
十数ページの記事で一応インタプリタが作れる。
391デフォルトの名無しさん:2008/06/04(水) 10:24:36
>>385
テキストで書いてあるソースコードを読むようなインタプリタから
始めることはおすすめしない。

単純な仮想機械からやってみてはどうか?
392デフォルトの名無しさん:2008/06/04(水) 15:11:50
Brainfuckインタプリタでいいじゃん
393デフォルトの名無しさん:2008/06/04(水) 16:33:53
あんなの厨房でもできるじゃん
394デフォルトの名無しさん:2008/06/04(水) 17:17:39
>>393
BFソース -> sed -> Cソース -> gcc -> ./a.out
ってシェルスクリプト見たとき吹いた
395デフォルトの名無しさん:2008/06/04(水) 19:09:37
>>394
何その素敵仕様w
396デフォルトの名無しさん:2008/06/04(水) 19:36:51
>>391

初心者には無理じゃないのか?
397デフォルトの名無しさん:2008/06/04(水) 20:26:44
>>395
TextBox(BFソース)->javascriptでreplace->javascript->eval
の変化系っぽい
398デフォルトの名無しさん:2008/06/04(水) 20:34:22
BFソース + Dソース --(Dコンパイラ)--> executable
ってのなら前に見たな。

D言語では、コンパイル中にファイルを読み込んで、文字列操作をして、
その結果をコンパイルされるべきソースコードの一部に組み込めるらしい。
399デフォルトの名無しさん:2008/06/04(水) 21:09:23
VCGグラフって、JPEGとかに変換できないのでしょうか?
見れなくて…
400デフォルトの名無しさん:2008/06/04(水) 21:19:36
そのまんまの名前の可視化ツールあったと思うが。
401デフォルトの名無しさん:2008/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デフォルトの名無しさん:2008/06/05(木) 18:10:27
ここは、lispは禁句?
403デフォルトの名無しさん:2008/06/05(木) 20:21:37
下手に話題振ると、あっという間にlispスレになるよな
404デフォルトの名無しさん:2008/06/05(木) 21:41:25
構文解析をすっとばせるlispは、構文解析までしか語れない住民の多いこのスレでは不評です。
405デフォルトの名無しさん:2008/06/05(木) 21:49:17
http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/kamin/budd/0.html
Lisp風構文を持つ"APL, Scheme, SASL, CLU, Smalltalk and Prolog"のインタープリタ
406デフォルトの名無しさん:2008/06/05(木) 21:49:38
タイトル忘れた。
Kamin: Tim Budd's C++ Implementation of the Kamin Interpreters
407367:2008/06/05(木) 22:24:23
ありがとうございました。
408デフォルトの名無しさん:2008/06/05(木) 23:01:35
>>385
UNIXプログラミング環境
hocインタープリタをC+yaccで作る例が乗っている。
完全なソースコードも著者のWebSiteからダウンロード可能!
409デフォルトの名無しさん:2008/06/05(木) 23:03:24
>>401
なつかしの「while言語」w
410デフォルトの名無しさん:2008/06/13(金) 07:21:40
データフロー解析の簡単な例とか教えてください。
411デフォルトの名無しさん:2008/06/13(金) 21:15:30
412デフォルトの名無しさん:2008/06/14(土) 01:06:23
やべ、いまさらだけどBNF理解した
興奮してきた
413デフォルトの名無しさん:2008/06/14(土) 06:55:30
そこでパーザ・コンビネータですよ。
414デフォルトの名無しさん:2008/06/15(日) 09:02:14
え、どこどこ?
415デフォルトの名無しさん:2008/06/21(土) 18:17:29
160行のPythonコードでコンパイラとインタプリタを書く
http://www.jroller.com/languages/entry/python_writing_a_compiler_and

Pythonハジマタ\(^o^)/
416デフォルトの名無しさん:2008/06/21(土) 20:51:09
インタプリタしかないようだが。
417デフォルトの名無しさん:2008/06/22(日) 03:16:27
ぱいぱい
418デフォルトの名無しさん:2008/06/25(水) 00:33:43
stackless pypy
419デフォルトの名無しさん:2008/06/27(金) 09:13:08
420デフォルトの名無しさん:2008/07/02(水) 07:36:22
こんなアホしかいませんが救ってやってください
http://pc11.2ch.net/test/read.cgi/prog/1211550247/398
421デフォルトの名無しさん:2008/07/10(木) 10:16:23
>>1
計算機理論の基礎(共立出版) とかも、参考文献にはいいかも。
422デフォルトの名無しさん:2008/07/13(日) 17:58:45
コンパイラの基盤技術と実践―コンパイラ・インフラストラクチャCOINSを用いて: 中田 育男: 本
http://www.amazon.co.jp/dp/4254121733
http://ec2.images-amazon.com/images/I/41613j8f9iL._SL500_AA240_.jpg
423デフォルトの名無しさん:2008/07/13(日) 18:04:47
>>422
著者はすばらしいが
COINSは金の使い方が意地汚いからここで紹介するな

ダウンロードするのに個人情報収集とかとんでもない
アホなことしているしヤメロいいな?
424デフォルトの名無しさん:2008/07/13(日) 22:59:56
なんでそんな必死なん?
425デフォルトの名無しさん:2008/07/14(月) 04:31:14
COINSに予算取られたとか、何かうらみでもあるんじゃねーの?
426デフォルトの名無しさん:2008/07/16(水) 19:18:26
名前からして「硬貨」かw
427デフォルトの名無しさん:2008/07/17(木) 16:09:35
> ダウンロードするのに個人情報収集とかとんでもない
> アホなことしているしヤメロいいな?

成果出しました、ほーらこんなに使われてるんですよ、と主張しないといけない、とか
事情はいろいろあるのヨ。俺は中の人じゃないから知らんけど。

とりあえず空欄でsubmitしてみて文句言われなけりゃおkだろ。そんなもんは。
428デフォルトの名無しさん:2008/07/18(金) 14:28:18
一般的な JIT コンパイラの挙動について教えてください。
JIT コンパイルする箇所は動的プロファイルの結果から決定すると思うんだけ
ど、実際に JIT コンパイルを行う _タイミング_ も実行時の情報を使ったりと
か、何か工夫されてたりするの?たとえば CPU が空いてる隙にやるとか、メモ
リが空いてる隙にやるとか。具体的な実装の名前もわかればうれしいです。


429デフォルトの名無しさん:2008/07/18(金) 16:33:13
JITコンパイラではないが、Crusoeは、コードを実行しながら、実行しているコードを
効率化する、と資料にあった。つまり、実行頻度が高いコードほど、効率化が
繰り替えされて、より効率のよいコードで実行されるようになる、と。
430デフォルトの名無しさん:2008/07/18(金) 16:38:08
Crusoeははやい話x86エミュレーターだよ。

単なるソフトエミュと違うのはx86コードを処理する際にCrusoeにあった命令形態に
翻訳して予約メモリにキャッシュと持っててる。
なので一度翻訳した部分がキャッシュにあれば、2回目以降は処理効率があがる。
でもキャッシュのサイズも無尽蔵ってわけではないので、新しい翻訳をする際に
空きがなければ古い翻訳部分が捨てられて、入れ替わりにそこへ入れられる。
431デフォルトの名無しさん:2008/07/18(金) 22:57:45
なんだソレ。ただのディスクIOキャッシュじゃん。
432428:2008/07/18(金) 23:38:44
crusoe も JIT してるのか。。。最近の intel な CPU も μOP に JIT コンパ
イルしてから CICS で実行するから、同じような仕組みでキャッシュしたりす
るのかな。あと、JVM とかはどうなんでしょう。CPU がヒマになったタイミン
グをみはからって JIT コンパイルする、みたいな仕組みってある?
433デフォルトの名無しさん:2008/07/18(金) 23:49:00
>>432
だれだったかちょっとすぐに名前でないけど
たしか最適化には現状3つしか方法がないはず
434デフォルトの名無しさん:2008/07/19(土) 01:13:40
そげな事してたら、コンパイルが済むまで待たされるやろ。

「おじちゃ〜ん、JITのおじちゃん。ねぇ、コンパイルして〜」
「今いそがしか。こんどヒマのときにコンパイルしちゃるけん。
10円やるけん、あっち行ってうまい棒でも食べんしゃい」
「おじちゃん、こすか〜!もうよか。インタプリタのおばちゃんに頼むけん!」
435デフォルトの名無しさん:2008/07/19(土) 01:14:14
標準語でおけ
436428:2008/07/19(土) 01:31:41
>> 434
いや、だからユーザ入力が途切れてイベント待ちのヒマなときとかに投機的に
JIT コンパイルしとくのって、あるのかなーと。

437デフォルトの名無しさん:2008/07/19(土) 01:43:44
ヒマなときもせっせと働くんか。
JITしていられない性格なのか?
438デフォルトの名無しさん:2008/07/19(土) 01:48:24
貧乏性だから、あくせく働いて、ほっとするスポットもないのだ。
439デフォルトの名無しさん:2008/07/19(土) 08:26:03
>>140
言語比較のスレなんかでLispではこんな機能があるぞって説いて回るやつがいたがあれはうざかった
440デフォルトの名無しさん:2008/07/19(土) 08:31:45
COINSはあくまじゃああああああああああああああああ
441デフォルトの名無しさん:2008/07/19(土) 09:15:56
COINS って 殆どGCC v4 のパクリだよね

JITも、誰か HotSpot って言ってやれよ
442デフォルトの名無しさん:2008/07/19(土) 09:23:58
LLVMの方が最強だし
つーかCOINSってなんで20億以上も突っ込まれてるのか
意味がわからん

中の人ここで釈明してくれ

ちなみにLLVMは税金じゃない民間からの金が年間5000万 x 8年で
出来ている。それであの驚異的な完成度だ
443デフォルトの名無しさん:2008/07/19(土) 09:56:05
どこがどうパクりなんだよ。Javaで書いてあるコンパイラのどこが、
Cで書いてあるGCCのパクりなんだと小一時間。

最適化コンパイラのためのフレームワークなんだから、実装1個作るのとは
工数のケタが違う。
フレームワークになってるから、例えばSIMD対応最適化を、プラグインで
作ることができたりする。PROあたりで発表されてるだろ?
444デフォルトの名無しさん:2008/07/19(土) 10:04:13
>>443
それはLLVMでもできるよね?
じゃあCOINSの価値は何?

またお得意のオナ研の成果ですかねw?
445デフォルトの名無しさん:2008/07/19(土) 10:23:19
できるの?

実例示してね。
446デフォルトの名無しさん:2008/07/19(土) 10:43:03
LLVMは中間表現が低レベルすぎる
447デフォルトの名無しさん:2008/07/19(土) 10:44:42
ISO通りそうだしこれからは標準になるけどね
どっかの田舎COINSとは格が違うw
448デフォルトの名無しさん:2008/07/19(土) 11:16:12
投入した金で、LLVMを開発してる連中レベルの
人材が育ったのなら許せるけど
449デフォルトの名無しさん:2008/07/19(土) 11:24:01
>>448
そんなのないじゃんLLVMはOpenGLの
実装なんかで実績あるけど一方
COINSは何か成果ありますかね?

技術的にもし仮にすぐれていても
使う人材いないならゴミ技術と等価じゃぼけ
450デフォルトの名無しさん:2008/07/19(土) 11:44:26
なんでそんなに必死なの?
451デフォルトの名無しさん:2008/07/19(土) 11:58:47
税金使ってるからじゃねーの?
452デフォルトの名無しさん:2008/07/19(土) 12:10:39
東大の研究室の方が使ってるんじゃね?
453デフォルトの名無しさん:2008/07/19(土) 12:14:35
いやいや、道路建設なんかもっと使われてるよ
454デフォルトの名無しさん:2008/07/19(土) 12:17:37
じゃあCOINSの圧勝ってことでいい?
455デフォルトの名無しさん:2008/07/19(土) 12:22:49
LLVMの方が安いし出来いいし
もうCOINSは終了でいいよ
456デフォルトの名無しさん:2008/07/19(土) 12:35:37
東大だけとかどんだけ
無駄金使ってるんだよ
457デフォルトの名無しさん:2008/07/19(土) 12:47:34
で、誰かCOINSを使って拡張した人はいるの?
458デフォルトの名無しさん:2008/07/19(土) 13:35:53
ところでCOINSってなんだ?
459デフォルトの名無しさん:2008/07/19(土) 14:52:23
大学の図書館にいっぱい本買ってもらいました。ごめんなさい
460デフォルトの名無しさん:2008/07/20(日) 04:35:18
> つーかCOINSってなんで20億以上も突っ込まれてるのか
マジ?
ソース(ry

しかし、嫌COINS連中はなんで必死なんだ?
461デフォルトの名無しさん:2008/07/20(日) 08:19:00
第5世代プロジェクトをやたら嫌ってる人と同類でしょ
462デフォルトの名無しさん:2008/07/20(日) 08:31:18
第5世代プロジェクトは面白いこと一杯やっていたんだけど、
ネガキャンみたいになって、後に繋げることができなかったね。
荘園、PIMOSなんて地味に続けていたら面白かっただろうに。
463デフォルトの名無しさん:2008/07/20(日) 09:56:27
>>462
あいつ等は金と成果のために人のこと
陥れることばっかり考えてた奴等が
多くて人がある時期からついてこなくなった
だけだろ
464デフォルトの名無しさん:2008/07/21(月) 09:50:44
なにいってんのかわからん。悪意だけ撒きちらされても電波か私怨にしか見えない。
465デフォルトの名無しさん:2008/07/21(月) 19:08:14
>>443
>どこがどうパクりなんだよ。Javaで書いてあるコンパイラのどこが、
>Cで書いてあるGCCのパクりなんだと小一時間。

その生い立ちと、目的は一緒ではないが、メカニズムとしては良く似ている部分が有るのも事実

gcc と GCCの区別出来て無い人?
貴方が使うかもしれないgccコマンドはそGCCフレームワークのバイナリ生成物に過ぎない
そもそも、Javaで書こうがCで書こうが関係無いしw
GCC(v4)が単なるコンパイラの1実装って思ってるのも痛い

実際GCC(v4)の中身は、ある言語から、ある実行環境の最適化されたネイティブコードを
生成する為のフレームワークととして作られており、
対象言語、処理系に依存しない
依存部分は別モジュールになっている

某社CPUのハイパースレッディングだろうが、マルチコアだろうが、
MIPS派生CPUだろうが、昔なつかしVLIWだろうが対応が可能

>フレームワークになってるから、例えばSIMD対応最適化を、プラグインで
>作ることができたりする。PROあたりで発表されてるだろ?

巷に溢れるx86系のバリエーションは殆どがオプション指定で対応しているので
ハードコーディングのよう見えるけど、それはあくまで利便性とメンテナンスの為だけ
OSに対しても然り

GUIが付いていて、プラグインて名前にしないとだめですか?
466デフォルトの名無しさん:2008/07/21(月) 19:14:34
>>465
当然だろそれにgccは仕様書を公開していない糞集団だし
467デフォルトの名無しさん:2008/07/21(月) 19:17:45
GCCに高レベルな中間表現が導入されたのは最近
これってCOINSのパクリだよね
468デフォルトの名無しさん:2008/07/21(月) 19:31:35
>>467
何を今更
469デフォルトの名無しさん:2008/07/21(月) 19:38:56
COINSの話題をするなと
先週言っただろ俺の話を聞け
470デフォルトの名無しさん:2008/07/21(月) 21:33:48
>>465
何なのこの気違いは。
471デフォルトの名無しさん:2008/07/22(火) 02:32:19
>>469
お前誰だよ
472デフォルトの名無しさん:2008/07/23(水) 19:19:15
Javaのソースをパースしたいのですが、出来合いのパーサはありますか?
たとえばEclipseのパーサは外部から利用できないのかしらん。
473デフォルトの名無しさん:2008/07/23(水) 19:49:01
JavaCCのcontribにいくつかある。
474デフォルトの名無しさん:2008/07/24(木) 07:49:14
>>472
OpenJDK
475デフォルトの名無しさん:2008/07/24(木) 08:07:23
>>472
javac のパーサーなら Tree API から使える。jdk1.6以上必要だけど
476デフォルトの名無しさん:2008/07/24(木) 21:53:44
COINSは悪魔
477デフォルトの名無しさん:2008/07/25(金) 16:44:50
ニコ動でLisp‐ニコニコ動画(夏)
http://www.nicovideo.jp/watch/sm3452591
478デフォルトの名無しさん:2008/07/25(金) 21:16:08
COINSは使うな
479デフォルトの名無しさん:2008/07/26(土) 00:05:34
I love COINS.
480デフォルトの名無しさん:2008/07/26(土) 00:21:49
ゴルァアア
481デフォルトの名無しさん:2008/07/27(日) 02:27:38
関係ない所で荒れるからCOINSの話題は禁止ね。
482デフォルトの名無しさん:2008/07/27(日) 03:24:57
「COINS禁止」じゃなくて「技術に関係ない話題禁止」だろ。
483デフォルトの名無しさん:2008/07/27(日) 08:50:44
話題にするほどのものでもないしな。
禁止するまでもなく、全く話題になっていなかったものが急にこの状態だと、
自演を疑ってしまうな。
484デフォルトの名無しさん:2008/07/27(日) 14:12:40
急に盛り上がったのは>422が発売されたせいでしょ
485デフォルトの名無しさん:2008/07/27(日) 14:15:38
どうせ出版社の工作員だろ
486デフォルトの名無しさん:2008/07/27(日) 14:55:04
佐々先生は神
487デフォルトの名無しさん:2008/07/28(月) 03:27:44
COINSの何が悪いのか技術的観点からの意見が一個もないよね。
488デフォルトの名無しさん:2008/07/28(月) 06:53:54
何が良いのかもないじゃないか。工作員がうぜぇ。
489デフォルトの名無しさん:2008/07/29(火) 07:37:42
>>487
はげしく同意

ぜーきんぜーきんといわれても外からじゃわからん。
税金つかってるんだったらなおさら使ってやらないかんじゃないか
490デフォルトの名無しさん:2008/07/29(火) 13:17:40
> 税金つかってるんだったらなおさら使ってやらないかんじゃないか

本末転倒だろそりゃ。

税金つかってるんだったらなおさら……というなら、
広く使われないといけない(広く使われるほど出来がよくないといけない
or 広く使われるよう使いやすさ等を宣伝しないといけない)
というのが普通の議論だと思うが。
491デフォルトの名無しさん:2008/07/29(火) 13:32:54
税金とかどうでもいい。まずは使ってみて評価しないと始まらない。
いきなり「使うな」とか書くなら技術的な問題点をきちんと書け。
492デフォルトの名無しさん:2008/07/29(火) 15:09:41
なんでCOINSアンチが湧いてるの?
両親でも殺されたんかな。
493デフォルトの名無しさん:2008/07/29(火) 18:30:20
税金のムダ使いと連呼してる未踏スレの厨かもな
494デフォルトの名無しさん:2008/07/29(火) 18:54:28
COINSって未踏関連なのか?
495デフォルトの名無しさん:2008/07/29(火) 20:45:44
論文書ければそれでいいよ
論文書くのが仕事だから
496デフォルトの名無しさん:2008/07/29(火) 21:26:08
>487 >489 >491
そこまで言うんだったら、まずは使ってみてレビューを書いてくれ。
497デフォルトの名無しさん:2008/07/29(火) 21:53:52
「そこまで言うんだったら」って、明らかにおかしな主張につっこみ入れてるだけだろw
498デフォルトの名無しさん:2008/07/29(火) 22:43:55
COINSに文句つけてるのは十分な予算を取れなくて逆恨みしてるダメ研究者なの?
499デフォルトの名無しさん:2008/07/29(火) 22:49:41
どこで尋ねればいいのか分からなかったので、ここでお尋ねします。
ある正規言語Aの状態遷移図で、全ての受領状態から開始状態へεの矢印をいれただけでは、
A*を認識しない可能性があると本にあるのですが、そんなことってありえますか?

A*以外の言語を受領してしまう可能性が(副作用的に)発生してしまうのは理解できるのですが、
認識しないというのがどうも理解できなくて、…
500デフォルトの名無しさん:2008/07/29(火) 22:55:12
空集合を認識できないんじゃない? >499
501デフォルトの名無しさん:2008/07/29(火) 23:01:19
>>500
すいません、「元の開始状態も受領状態にする」ってことを書き忘れていました。
ごめんなさい。
502デフォルトの名無しさん:2008/07/29(火) 23:19:40
たとえば"あいうえお"という正規言語があって、これに対する(あいうえお)*というのを考えたとき、
空文字列も受理しなければいけない。
空文字列は受理状態からεの矢印を入れただけで必ず認識されるだろうか?


503デフォルトの名無しさん:2008/07/29(火) 23:20:52
あら、かな〜り遅かった。すんません。
504デフォルトの名無しさん:2008/07/29(火) 23:32:33
帰納法でA*を認識することを示せそうな気はするけど…。
Aをn回繰り返したものが認識されると仮定して、Aをn+1回繰り返したものが認識されることを示せばいいんでしょ?
どこに穴があるんだろう?さっぱりわからん。
505デフォルトの名無しさん:2008/07/30(水) 00:13:53
とりあえず空文字が答なんじゃないの?
>>501はかなりおかしいと思う。
元々受理状態じゃなかった初期状態を受理状態に変えたりしたら、全然関係なかった文字列まで含む言語になってしまう。
506500:2008/07/30(水) 00:59:42
>501は反則だよ。
さすがにそれを「正規言語Aの状態遷移図」と言うのは苦しいと思う。

A*の状態遷移図はこんな感じだから、
 --------------ε------------
 |        ---ε---       |
 |        |     |        |
 |        V     |       V
(s) --ε--> (s  A  f) --ε--> (f)

>501の条件を突っ込めば等価になりそうですな。面倒だから証明しないけど。
507デフォルトの名無しさん:2008/07/30(水) 09:13:31
>>501を許したら、例えば"abc"という入力で開始状態に戻ってくる遷移図を考えると、
abcがAに含まれない場合でも、(abc)*が修正後の言語に含まれてしまう
508デフォルトの名無しさん:2008/07/30(水) 10:29:23
だから>>499
> A*以外の言語を受領してしまう可能性が(副作用的に)発生してしまうのは理解できるのですが、
と言ってるんだろ
509デフォルトの名無しさん:2008/07/30(水) 20:34:25
499はε遷移を追加した場合の副作用についてであって、開始状態を無理やり受理する話とは別のような気もするが
510デフォルトの名無しさん:2008/07/30(水) 21:53:45
そういや、何の本に>499 & >501が書いてあったの?
511499:2008/07/30(水) 22:05:44
共立出版の計算理論の基礎(原著第二版)です。
P.99の欄外にそんなことが書いてあります。
512デフォルトの名無しさん:2008/07/31(木) 02:21:02
とりあえず言葉の定義から勉強し直せ。
513デフォルトの名無しさん:2008/07/31(木) 07:13:17
とりあえずCOINSには注意しろ
514デフォルトの名無しさん:2008/08/02(土) 00:51:44
>>498
もしかしたら触れてはいけない、コンパイラ界の2chの鮫島事件みたいなものなのかもw
515デフォルトの名無しさん:2008/08/02(土) 21:13:54
Lisp使いには注意しろ
516デフォルトの名無しさん:2008/08/04(月) 00:36:20
>>515なんでLisp?とりあえず叩けばCOINSから話題がそれるから?
517デフォルトの名無しさん:2008/08/04(月) 01:48:21
consと勘違いしたんだろ
518デフォルトの名無しさん:2008/08/04(月) 03:08:33
489が図星だったからアンチは消えたのかな
519デフォルトの名無しさん:2008/08/04(月) 12:14:48
javaベースなのが気に入らないんだろ
520デフォルトの名無しさん:2008/08/04(月) 14:56:10
.Netに書き直せばいいのか
521デフォルトの名無しさん:2008/08/04(月) 20:48:31
いや、OOじゃないとダメだろ?この先。
つまり、























(ru
522デフォルトの名無しさん:2008/08/04(月) 21:35:06
なるほど。Rubyで書くというのはおもしろいかもしれないね。
523デフォルトの名無しさん:2008/08/04(月) 22:04:10
だからCOINS禁止って言ったのに・・・
524デフォルトの名無しさん:2008/08/04(月) 22:07:38
>>521
lisp の紛い物 >(ru
525デフォルトの名無しさん:2008/08/04(月) 22:07:54
で、CONSは未踏関連なの?
そうなら全力で攻撃するけど
526デフォルトの名無しさん:2008/08/04(月) 22:17:36
CONSのことをちょっと調査してきます
未踏関係者がいた場合報告します
527デフォルトの名無しさん:2008/08/04(月) 22:24:48
なぜか叩かれるCONS。かわいそうなLISP。

いろんな意味でRubyの圧勝だな。COINSはどこいったんだろ。
528デフォルトの名無しさん:2008/08/04(月) 22:51:12
COINSって科研費しかもらってないから
まともな分類だと思うけどなぁ
税金ばら撒きプロジェクトとは違うと思うよ
529デフォルトの名無しさん:2008/08/05(火) 09:47:19
やはり「税金の無駄遣い攻撃厨」だったか
530デフォルトの名無しさん:2008/08/09(土) 00:34:48
最近Perl5.8でJavaパーサー書こうとしています。
↓こんな感じです。

my $re_define = qr!
  (?{ moveToken(); }) #現在位置を進める
  (??{ $re_type })[ \t]*
  (??{ $re_var })[ \t]*; #正規表現の遅延評価
  (?{ put(@tokens, getToken()); }) #現在位置-前回位置(つまり、上でマッチした部分)を保存する
  [ \t]*
!x;

似たような暴挙に手を染めた方はいますか?
531デフォルトの名無しさん:2008/08/09(土) 00:50:17
俺ならParse::LexとかParse::Yappから入るな。
532デフォルトの名無しさん:2008/08/09(土) 01:04:43
恒例・パーサの話題禁止しようぜ
533デフォルトの名無しさん:2008/08/09(土) 06:25:03
そんじゃあ、その後に続く「LISPなら〜」「Rubyのほうが〜」「Haskellが〜」も禁止しようぜ
534デフォルトの名無しさん:2008/08/09(土) 09:46:25
1と2,2と3を近いものと感じるからといって1と3を近いものと感じるわけではない
535デフォルトの名無しさん:2008/08/09(土) 09:53:37
3になるとバカになるからそれはない
536デフォルトの名無しさん:2008/08/10(日) 19:19:50
すいません質問なんですが、簡単なコンパイラを作っているのですが、内部的に
字句解析
構文解析
意味解析
を分離して作ろうと思っています。

そして、それぞれの機能にあたる関数名を
字句解析→Lexer()
構文解析→Parser()
と決めたまではよかったのですが、意味解析の適当な名称が思いつきません。
意味解析部はどう命名するのがセオリーなんでしょうか?
537デフォルトの名無しさん:2008/08/10(日) 20:51:01
modern compiler implementation in Javaだと
Lex、Parse、Semantic Actions、Semantic Analysisになってる
538536:2008/08/10(日) 21:59:00
ありがとうございます。
Semantic ActionsとSemantic Analysisはどう違うんでしょ。
「解析」なので後者の方が意味解析っぽいですが・・

LexやParseのように一文字では適当な命名はないんでしょうか。
539デフォルトの名無しさん:2008/08/11(月) 00:13:58
annotateとか?
540デフォルトの名無しさん:2008/08/14(木) 12:50:18
Analyzerでいいんじゃないの?
541デフォルトの名無しさん:2008/08/14(木) 23:41:41
anilingusでいいじゃん
542デフォルトの名無しさん:2008/08/16(土) 02:39:26
jiku_kaiseki()
koubun_kaiseki()
imi_kaiseki()

完璧!!!
543デフォルトの名無しさん:2008/08/16(土) 12:50:05
anal
544デフォルトの名無しさん:2008/08/17(日) 13:12:44
Analyzer.Lex()
Analyzer.Parse()
Analyzer.Semantic()
545デフォルトの名無しさん:2008/08/18(月) 11:42:52
ワタシハテンサイ
546デフォルトの名無しさん:2008/08/18(月) 11:46:38
ナンダト!コノオレサマ ヲ サシオイテ テンサイ ヲ ナノルトハ イイドキョウダ
547デフォルトの名無しさん:2008/08/18(月) 20:44:31
Anal.Sex()
548デフォルトの名無しさん:2008/08/25(月) 10:37:08
インタプリターもコンパイラと構造は一緒ですか?
549デフォルトの名無しさん:2008/08/25(月) 11:29:16
インタープリター+(コンパイル時)部分計算=コンパイラ
550デフォルトの名無しさん:2008/08/25(月) 11:30:45
最近は、どこまでがインタプリターで、どこからがコンパイラなのか
境目があいまいなので深く考える事ぁ無い
551デフォルトの名無しさん:2008/09/14(日) 19:04:46
C言語で字句解析部を作っているのですが、webや参考書などに参考になるコードはありますでしょうか
「C言語 字句解析」などで検索はしているのですが、C言語で作った物はあまり見つからなくて困っています
552デフォルトの名無しさん:2008/09/14(日) 19:07:17
lex/flexとかじゃだめなの?
553デフォルトの名無しさん:2008/09/14(日) 19:35:45
処理系の作り方本で、Cで実際に実装してる本がいくつかあるので
そのへんを見てみれ。

というか、今時、文字列処理をやるのにC言語はだるいと思うのだが。
積極的な理由がなければとりあえずLLで動くものを作ってしまったほうが
いいと思う。
554デフォルトの名無しさん:2008/09/14(日) 21:27:49
>>552
大学の実験の予習なんですが、実験の環境がCと決まっているので……
>>553
わかりました、本屋とか尼で探してみます

アドバイスありがとうございました
555デフォルトの名無しさん:2008/09/14(日) 21:36:05
学生なら図書館のほうがいいかも。
556デフォルトの名無しさん:2008/09/14(日) 21:38:24
In Javaしか持ってないから正確には分からんが
Modern Compiler Implementation In Cは?

と書こう思ったらlex使ってるかorz
ttp://www.cs.princeton.edu/~appel/modern/c/project.html
557デフォルトの名無しさん:2008/09/14(日) 21:50:56
実装寄りのコンパイラとかの処理系の教科書で、
いきなりLexとかyaccとか使って説明してる本って何なのかと思うわ。

まずはスクラッチでの実装例を示すのが一番わかり易いと思うんだが。
lexとかyaccがやりたいんならその後で説明つければいいのに。
558デフォルトの名無しさん:2008/09/14(日) 22:01:57
オートマトンの説明終わったらパーサージェネレーターでいいじゃん。
559デフォルトの名無しさん:2008/09/14(日) 22:08:32
トンカツの作り方を教えるために
わざわざ豚の飼育方法から教える事ぁ無いやろ。
豚肉はスーパーで買ってくればいい。
560デフォルトの名無しさん:2008/09/14(日) 22:25:51
Parserならまだしも、lexerなんて手で書く必要はない。
正規表現のmatcherなら、手で書いてみる価値あるけどね。
561デフォルトの名無しさん:2008/09/15(月) 11:17:53
学習用なら一度は手で書くべきだろ
562デフォルトの名無しさん:2008/09/15(月) 11:32:42
>>561
そうそう、理解するためにはそれが一番。
で、その後lex/yaccで完成させればいい。
563デフォルトの名無しさん:2008/09/15(月) 11:54:42
「コンパイラの」学習がしたいだけならパーサなんてすっとばしていいだろ
そこに興味がある奴はあらためて勉強すればいい
564デフォルトの名無しさん:2008/09/15(月) 11:55:52
課題がPL1ぐらいの実装なら手で作ればいいし
PHPとかを課題で実装するならlexer使わないと
終わらないと現実的に思う

どこぞの3分クッキングみたいに
引き出しから既に煮た具材とかは出てこないんだし
ある程度時間も考慮してlexer併用すべきだろ
565デフォルトの名無しさん:2008/09/15(月) 13:32:49
一度手で書いてみればいいんじゃないか。
lispのリーダなんかはだいたい手書きだから見てみるのもいいのでは。
566デフォルトの名無しさん:2008/09/15(月) 14:18:16
Lispのリーダは簡単だから手書きなんじゃなくて、
普通の字句解析生成ではまったく歯が立たないから手書き。
Toy実装でよいなら、PL1くらいのがお勧め。
567デフォルトの名無しさん:2008/09/15(月) 14:27:15
そんなことないだろ。
lexで生成させたトーカナイザで切り出しても書ける。
リーダマクロとか言い出すと困るけどさ。
568デフォルトの名無しさん:2008/09/15(月) 14:31:52
>>567
それキモイ実装にしかならないから
辞めてw
569デフォルトの名無しさん:2008/09/15(月) 14:38:22
>>567
入力を再帰パース出来ないんちゃうか, lex/flex シリーズ?
lex/flex + 再帰できない yacc じゃ大幅に無理なような気が...
bison って, 生成されたパーサ再帰可能になるんだっけか?
570デフォルトの名無しさん:2008/09/15(月) 14:42:57
リードマクロないなら簡単です。
571デフォルトの名無しさん:2008/09/15(月) 15:52:41
.NETコンパイラを簡単に作れるコンパイラコンパイラみたいなのってないんでしょうか?
572デフォルトの名無しさん:2008/09/15(月) 16:29:01
>>571
簡単にというのがどのレベルなのか知らないけども。

.NET 用の(.NET でも使える)パーサーとかなら検索したらすぐ出てくる。
.NET 自体がライブラリに CodeDOM とか LCG とかコンパイラ作成支援機能を持ってる。
最近は DLR も使える。
573デフォルトの名無しさん:2008/09/16(火) 01:24:13
>>568
なぜ? 全く普通の使い方にしかならないと思うが。
>>569
なぜyacc? lex使うからといって必ずyacc使うと決まったわけでは全くない。
リーダが再帰すりゃいいんであって、リーダから呼ぶlexerが再帰する必要は
全くない。
574デフォルトの名無しさん:2008/09/18(木) 08:55:35
言語処理って仕事ある?
575574:2008/09/18(木) 08:59:29
寝ぼけてエスパー書いてしまった
言語処理関係の技術を使う仕事ってどんなもんがあるのかな?
マクロとかゲームのスクリプトとか?
あと、コンパイラベンダーって凡人が就職できる場所ですか?
576デフォルトの名無しさん:2008/09/18(木) 10:02:22
コンパイラベンダーなどと言うものはいまやないのと同然。
577デフォルトの名無しさん:2008/09/18(木) 10:04:55
>>575
君みたいな人はマ板へ行きなさい。
578デフォルトの名無しさん:2008/09/18(木) 10:14:05
>>576,577
ありがとう
とりあえず黙ってドラゴンブック買ってくる
579デフォルトの名無しさん:2008/09/18(木) 18:59:47
>>575
別にプログラミング言語を開発してるベンダに限らず、色々なDSLやクエリ言語は
至る所で開発されてるから、需要はゼロではないと思う。
580デフォルトの名無しさん:2008/09/20(土) 00:30:49
IT土方万歳糞斜陽国日本のソースコードを
ばら撒かれると大変迷惑
581デフォルトの名無しさん:2008/09/23(火) 20:38:22
29日の日にでる本買う人いる?
582デフォルトの名無しさん:2008/09/23(火) 21:01:03
>>581
29日って?
もうちょっと詳しく。
583デフォルトの名無しさん:2008/09/23(火) 21:07:29
著者 坂本千尋 著
出版社 ソフトバンククリエイティブ
ISBN 978-4-7973-4762-3
発行日
2008年9月29日
価格 3,570円 (本体3,400円+税)
仕様 単色刷/B5変型判/492頁
分類 プログラミング(C言語)

ソースコードを読み込み、バイトコードを生成し、仮想マシンで動かす、スクリプト言語の「翻訳および実行のための環境」の作り方を解説。
584デフォルトの名無しさん:2008/09/23(火) 21:11:35
書名は省くのかw
585デフォルトの名無しさん:2008/09/23(火) 21:20:46
シュールな回答だなw
586デフォルトの名無しさん:2008/09/23(火) 22:55:24
書名教えてくれよw
587デフォルトの名無しさん:2008/09/23(火) 23:15:22
588デフォルトの名無しさん:2008/09/23(火) 23:19:12
これってゲームなんちゃらって本何冊か
書いてる人?
589デフォルトの名無しさん:2008/09/23(火) 23:53:38
著者名で検索してみた
ゲームプログラミング書きすぎだろ

1. スクリプトエンジン プログラミング 坂本 千尋 (大型本 - 2008/9/27)
ttp://www.amazon.co.jp/dp/4797347627/

2. ロールプレイングゲームプログラミング 2nd Edition 坂本 千尋 (単行本 - 2006/12/23)
3. Professionalゲームプログラミング 2ndEdition (C magazine) 坂本 千尋 (単行本 - 2005/9/28)
4. 3DRPGプログラミング (C magazine) 坂本 千尋 (単行本 - 2005/6/29)
5. アドベンチャーゲームプログラミング 坂本 千尋 (単行本 - 2002/6)
6. 花飾り (創作市場増刊 (6)) 坂本 千尋 アトリエ染花 (大型本 - 2002/6)
7. ロールプレイングゲームプログラミング 坂本 千尋 (単行本 - 2001/9)
8. Professionalゲームプログラミング 坂本 千尋 (単行本 - 2000/12)
9. アドベンチャーゲームプログラミング―美少... 坂本 千尋 (単行本(ソフトカバー) - 2000/4)
10. コサージュのおしゃれ―作りかたと楽しみかた 坂本 千尋 (単行本 - 1985/12)
590デフォルトの名無しさん:2008/09/24(水) 00:11:34
この人の書籍はタイトルがシンプルで内容が非汎用的という共通点があると認識している
591デフォルトの名無しさん:2008/09/24(水) 07:11:33
地雷確定と
592デフォルトの名無しさん:2008/09/24(水) 08:28:27
アドベンチャーゲームプログラミングは昔買って読んだけど、当時の俺には有用だったよ。
すごく基本的な内容だったから、物足りなさを感じる人は居ただろうけどね。
でもなんか、急に分野が変わってるな今回。別にこの人が書く必要無い気がするんだが。
593デフォルトの名無しさん:2008/09/24(水) 16:18:14
>>592
ゲーム向けスクリプトエンジン作成の知識の転用じゃね?
594 :2008/09/24(水) 16:57:03
500ページ近くあるんだな。題材考えたら本格的にやったらそれでも足りんかもしれんが。
595デフォルトの名無しさん:2008/09/24(水) 22:18:04
まぁ糞本ですよ買うと公開しますよ
詳細は言えんけど
596デフォルトの名無しさん:2008/09/25(木) 11:54:48
コサージュのおしゃれ、なんかワロタ
597デフォルトの名無しさん:2008/09/25(木) 12:22:53
じゃあ買って公開してくれ
598デフォルトの名無しさん:2008/09/25(木) 19:55:06
>>587
http://www.amazon.co.jp/dp/4797347627
アマゾンのurlはこれだけでいい
599 :2008/09/25(木) 20:00:35
仮装マシン!
しかし表紙はかっこいいな。
600デフォルトの名無しさん:2008/09/25(木) 22:10:05
おおー
>>589で見たときはまだ表紙載ってなかったぞw

つかやたら凝ってるな、これで中身もちゃんとしてればいいんだけど。
601デフォルトの名無しさん:2008/09/26(金) 21:21:17
この手の本で表紙凝ってるのは100%糞
602デフォルトの名無しさん:2008/09/27(土) 01:43:38
> この商品を買った人はこんな商品も買っています
> eb!コレ エビコレ+ キミキス
603デフォルトの名無しさん:2008/09/27(土) 12:35:30
図書館で借りたコンパイラの本の例題がOberonでした・・
604デフォルトの名無しさん:2008/09/27(土) 13:38:56
>>603
これだろ。もともとはPL/0だったんだけどね。
ftp://ftp-developpez.com/general/cours/compiler-construction-wirth.pdf

N. Wirth, "Type Extensions", ACM TOPLAS 10:2, Apr. 1988
なんかおもしろかったよ、Oberonは。
605 :2008/09/27(土) 20:49:53
COINSのコンパイラの本、そんなに厚くないのに高すぎ。
国家から金もらってしたプロジェクトなんだろ、安くして提供しろ!
606デフォルトの名無しさん:2008/09/27(土) 21:15:00
頭悪すぎ
607デフォルトの名無しさん:2008/09/28(日) 19:41:43
>>603
むしろ良本引き当てておめでとうといいたいなあ
説明が簡潔すぎて1字1句読み落とせないのが辛い本ではあるが
608デフォルトの名無しさん:2008/09/30(火) 22:23:12
http://www.amazon.co.jp/dp/4797347627
これ糞すぎて憎悪しかいただけなかったぞ

あとさこれにソースのURL載ってたんだけど
ここに書いても怒られない?
609デフォルトの名無しさん:2008/09/30(火) 22:36:46
イラネ
610デフォルトの名無しさん:2008/09/30(火) 22:44:20
>>608
消えろカス
611デフォルトの名無しさん:2008/09/30(火) 23:21:15
>>608
キモ
612デフォルトの名無しさん:2008/10/01(水) 02:28:08
著者のほかの出版タイトルを眺めれば大体中身のレベルは想像つくだろ
613デフォルトの名無しさん:2008/10/01(水) 18:58:15
>>589を見てもなお買う勇気のある人間はこのスレにはいない。

・・・と思いたかったのだが
614デフォルトの名無しさん:2008/10/01(水) 21:13:51
買ってきたぞw
マジで金ドブにしてたかんじ
このスレに著者連れてきてくれね?
マジで罵倒しないとダメなレベルだよw
615デフォルトの名無しさん:2008/10/01(水) 21:25:52
書籍『スクリプトエンジンプログラミング』のサンプルプログラムです。
購入される前にご確認ください。
ttp://www.sbcr.jp/books/img/ScriptSource.zip
616デフォルトの名無しさん:2008/10/01(水) 21:45:44
ちょっとこれやばいよ
C++スレの人に評価してもらおうよ
617デフォルトの名無しさん:2008/10/01(水) 21:50:25
貼ってきたぜ
618デフォルトの名無しさん:2008/10/01(水) 22:06:42
>>614
スレで何度も注意されてるにも関わらず無警戒に素人さん向けの本を
買った自分は罵倒しなくていいのか?
619デフォルトの名無しさん:2008/10/01(水) 22:58:49
>615-617
スレに貼るな。自分で評価ぐらいしろ。
ヤバい言うならどこがヤバいのか分析ぐらいしろよ。
620デフォルトの名無しさん:2008/10/01(水) 23:29:23
一応このスレは作者たんも見ているから、あんまり言うのはよそうよw
621デフォルトの名無しさん:2008/10/01(水) 23:33:17
>>620
見ているならあんな内容の本出さない
絶対出さない。この板の人間なら知っていることを
本にして今更出すとかありえないし
622デフォルトの名無しさん:2008/10/01(水) 23:47:23
http://pc11.2ch.net/test/read.cgi/tech/1095113801/808
なんだ、このお子様そのものの張り方は。
このスレのレベルを落とすようなことはやめてもらいたい。
http://pc11.2ch.net/test/read.cgi/tech/1095113801/810
これは酷い。謝っとけ。
623デフォルトの名無しさん:2008/10/02(木) 05:07:12
何がひどいのかわからねぇ俺は初級者
624デフォルトの名無しさん:2008/10/02(木) 09:00:45
>>614
期待通りの出来だろ
何で叩いてるの?
625デフォルトの名無しさん:2008/10/02(木) 09:12:35
>>589 をどう見ても、ゲーム方面のワナビ向けに濫造してる著者だろ
花飾りの人は偶然同姓同名らしいがw
626デフォルトの名無しさん:2008/10/02(木) 10:07:05
同姓同名の別人だったのかwwww
627デフォルトの名無しさん:2008/10/02(木) 10:11:42
というかこの流れ、同一人物がかなりの割合で頑張りすぎだろ。
628デフォルトの名無しさん:2008/10/02(木) 12:26:46
内容についてのレビューは聞きたいところ
悪書と言うのならなおのこと
629デフォルトの名無しさん:2008/10/02(木) 20:29:58
初心者むけなんだろうからお前らが読んだって意味ないだろ
630デフォルトの名無しさん:2008/10/02(木) 22:44:24
>>628
めっちゃ酷いよ
flex/bisonの説明+糞コード
オナコード説明
boostの説明+糞コード

これだけで3800円も取るとか
何考えているのかもしこのスレ見ているなら
釈明してみろっていいたいね。
どうせ小沢見たいに質問無視で終了がいいと
だろw
631デフォルトの名無しさん:2008/10/02(木) 22:56:21
初心者向けにはそういうのがいいのかもよ
俺も最初の頃は色んな書籍の糞コード読んで、ああこんなんでいいんだ、って思ったもんだ
もちろん駄目だったけど
632デフォルトの名無しさん:2008/10/02(木) 23:08:41
>>630
具体的にまずい点を書けよ
633デフォルトの名無しさん:2008/10/02(木) 23:15:22
>>632
ソース見た?あの内容で金取るってありえないんだけど
634デフォルトの名無しさん:2008/10/02(木) 23:55:39
>>633
見たが別におかしいとは思わなかった。
ソースはコメントが少なめだがコード自体は特にスパゲッティとかいうこともない。
サンプルの言語は配列と関数呼び出しぐらいまでしかないかなり基本的なものみたいだが、
ゲーム向けのスクリプトを作ろうっていうアマチュアなんかまでターゲットにした本ならこんなもんだろ。
繰り返しになるが言いたいことがあるなら何がマズイのかわかるように書いてくれ、
ありえないとか糞コードとか繰り返されても見てる人間にとって情報価値がゼロなんだよ。
635デフォルトの名無しさん:2008/10/03(金) 00:12:58
>>633
なんで実装の話になるん?
自分で書かない気なら最初から買わなければよかったんじゃね?

そもそも"当たり無しくじ"を買って外れたと怒るのはおかしいと思うがな

赤○氏の本買った人と同じパターンか?
情報弱者が調べもせずホイホイ引っかかって怒る、或いは怖いもの見たさで買ったくせに逆切れ


しつこく実装の話出すのは前者か
636デフォルトの名無しさん:2008/10/03(金) 02:00:32
たかだか3800円ぽっちドブに捨てたからってガタガタ言うな。
中身も確認せずに目次も判らない本を買った奴がマヌケなだけだ。
扱き下ろすならクソの理由ぐらい言え。話のネタにもなんねぇだろ。

まともな本が欲けりゃ素直に>6とか買うべきだな。
637デフォルトの名無しさん:2008/10/03(金) 03:55:01
今時、ゲーム用途でコンパイラ作るなんてオナニー以外の何者でもない
組み込みならLuaとかSquirrel、Pythonでもいいし。
プログラマの欲求につけこんで需要ないところにあたかも必要かのように本を出す
つまり、金稼ぎにすぎない
638デフォルトの名無しさん:2008/10/03(金) 08:50:25
オナニーが悪いと誰が決めた!!!!!!!!!!!!!!!!!!!!!!!!
639デフォルトの名無しさん:2008/10/03(金) 09:23:19
嘘を嘘と見抜くのは自分ひとりでできる。
コンセンサスは必要ない。
あるに越したことはないが、コストが高すぎる。

コスト気にしなくていいなら、オナニーも悪くないよ。
640デフォルトの名無しさん:2008/10/03(金) 13:47:04
オナニー気持ち良いじゃん!
ってか汎用言語じゃなくてDSLを作るとか普通に用途があるだろうになぁ…
641デフォルトの名無しさん:2008/10/03(金) 15:42:50
>>637
Luaって結局プログラマが扱う範囲でしかなくて、もちっと簡便なDSL使うところに適用できないんよ。
642デフォルトの名無しさん:2008/10/03(金) 16:00:33
HSPがあれだけ人気ということは、
簡易言語のようなものにも需要はあるんじゃないかな。

俺様簡易言語本ということで。
643デフォルトの名無しさん:2008/10/03(金) 16:33:13
HSPの人気ってのは描画までの初期化とか覚えたくない人向けってことなんだと思っている
プログラムで何かしたかった部分の手間は変わらないみたいだし。



644デフォルトの名無しさん:2008/10/03(金) 23:16:56
自分の文章を金に変えられないやつが嫉妬して騒いでるだけにしか見えない。
くやしかったらお前の書いた文字を金に変えてみろw
645デフォルトの名無しさん:2008/10/03(金) 23:32:31
本人乙 >644 と、とりあえず言っとこう。
というか、金貰っても軽蔑されるのは勘弁だな。
まあ、オルタネータにスポットライト落とした写真を「スクリプトエンジン」の表紙にする度胸も無いが。
646デフォルトの名無しさん:2008/10/04(土) 00:05:02
いくら2chでもここ数レスの不毛さはtech板として如何な物か?
647デフォルトの名無しさん:2008/10/04(土) 06:27:56
そんな愚問です
648デフォルトの名無しさん:2008/10/04(土) 15:05:34
>>645
>金貰っても軽蔑されるのは勘弁だな
それはあなたの文章にお金を払ってもいいよ、と認めてくれるひとが既に居る
場合に、あえて選択肢として持ち出すのは格好がつくが、だれも金を払ってく
れる人がいない状況で言っても、やっかみにしかならないことをお忘れなく。
649デフォルトの名無しさん:2008/10/04(土) 15:32:13
マスゴミが増産する文章なんて
結局文書的に問題なければ
事実や内容なんてどうでもいいからな

毎日、あかひなんか典型例だし
650デフォルトの名無しさん:2008/10/04(土) 17:15:33
原稿用紙1枚あたり幾らで商売しているんだから、中身が薄くなるのはしょうがないだろ。
651デフォルトの名無しさん:2008/10/04(土) 17:27:32
>>650
お前の書くプログラムと同じだな
652デフォルトの名無しさん:2008/10/04(土) 17:31:29
こと技術書に関しては、買わない理由を探す奴より、
とにかく買ってみる奴の方が成長する。これは確実。
653デフォルトの名無しさん:2008/10/04(土) 17:43:12
確実ってなんすか
競馬の予想すか
654デフォルトの名無しさん:2008/10/04(土) 18:32:32
こと競馬に関しては、買わない理由を探す奴より、
とにかく買ってみる奴の方が成長する。これは確実。
655デフォルトの名無しさん:2008/10/04(土) 18:57:40
>>654
それが本当なら今ごろ競馬長者がわんさかいるなw
656デフォルトの名無しさん:2008/10/04(土) 19:01:15
浮浪者にスチール缶
657デフォルトの名無しさん:2008/10/04(土) 19:02:08
>>655
しかし>>654には競馬で儲かるとは書いてない罠。
とにかく買ってみて懲りて二度とギャンブルなどやらないと反省できれば
ある意味「成長」したといえるのかもしんない。
658デフォルトの名無しさん:2008/10/04(土) 19:02:22
成長することは成長するんだろうけど、どれだけ投資してもトータルプラスになるまでは成長しないだろ。
659636:2008/10/04(土) 19:02:54
>652
>とにかく買ってみる
「読む」だろ。買うだけじゃ意味ないわ。
まずは目次だけでも良いから立ち読みで確認すべきだよな。騙されたくなければ。

それ以前に、>6みたいな実績ある本が既に挙がっているのにあえて地雷原に踏み込むのはなぁ。
……そういや、誰かCompilers: Principles, Techniques, and Tools (2nd Edition) 読んだ?

>650
作り手の都合なんてどうでもいいんだよ。読者にとって重要なのは『良い本かどうか』だろ。
660デフォルトの名無しさん:2008/10/04(土) 19:32:35
競馬で馬券買って「成長」するとかwwwワロタ
661デフォルトの名無しさん:2008/10/04(土) 19:49:19
コラム欄が青や緑の背景の本は失敗する確率高いなぁ
662デフォルトの名無しさん:2008/10/04(土) 21:13:02
>>659
ある本が「騙し」かどうかを「自分で」判断できるのは、
十分に読み漁った人間だけだよ。
663デフォルトの名無しさん:2008/10/04(土) 21:54:11
ていうか「買ったけどひどかった」というレスがこれだけあるのに
実際の書籍内の記述がゼロって時点で、何か興奮しちゃってる人が暴れてるのは確定じゃねえの?w
>>630なんか、いま書籍タイトル知っただけの俺でも書けるエアレビュー(もどき)じゃん。
664デフォルトの名無しさん:2008/10/04(土) 22:20:56
>>630の説明から糞コードを抜いてオナコードを言い換えると
> flex/bisonの説明
> 作中のコード説明
> boostの説明

…結構良い本なんじゃね?w
665デフォルトの名無しさん:2008/10/05(日) 04:25:30
>>630の説明から説明を抜くと
> 糞コード
> オナコード
> 糞コード
666デフォルトの名無しさん:2008/10/05(日) 10:41:08
つうか結局誰も読んでないだろ
667デフォルトの名無しさん:2008/10/05(日) 11:00:05
俺もってるよさっき買ってきたけど
このスレの評判と一致しすぎるほどの糞本だったぞ

668デフォルトの名無しさん:2008/10/05(日) 11:26:16
もう地雷確定なんだからスルーしろよ
669デフォルトの名無しさん:2008/10/05(日) 13:22:11
興奮しすぎw
670デフォルトの名無しさん:2008/10/05(日) 15:25:22
糞本とか言ってるやつは何が悪いか説明しろ。
671デフォルトの名無しさん:2008/10/07(火) 18:42:36
気になる本が出てたからスレ覗きに来たけど、
具体性のない感想ばかりで、
何が良くて何が悪かった本なのかさっぱり掴めないよ。
672デフォルトの名無しさん:2008/10/07(火) 20:43:53
>>671
こと技術書に関しては、買わない理由を探す奴より、
とにかく買ってみる奴の方が成長する。これは確実。
673デフォルトの名無しさん:2008/10/08(水) 00:08:23
>>671
「具体性の無い感想がある」んじゃなくて、「まだ感想が無い」んだよ。
誰も読んでないから。
674デフォルトの名無しさん:2008/10/09(木) 09:55:26
坂本千尋本のスレはここですか.

部屋に「Professionalゲームプログラミング」 があったのでざっと眺めてみたけど、PNGの読み書き関数とか、
スプライト描画高速化のためのMMXをインラインアセンブラで書く話やDirectDraw でスプライト処理を書いてみたり
する話が載っていてよさげなんですけど.確かにソースコードはコンパクトでエレガントというわけではないけど、
仕様変更などに対処しやすい平易な書き方ともいえる.てか、自分が仕事で作ってるソースコードもこの本と
大差ないレベルなので、少なくともこの本に関しては悪口を言う気はあまり起きないなぁ.昔の本だから内容が
少し古い(VC6が使われている)とかは、まああるけどね.

他の本は読んでないので知らん.

念のために言っておくけど俺は坂本じゃないので「キタ━━━━(゚∀゚)━━━━!!!! 本ww人ww降ww臨」とか
思い込みで騒がないように.
675デフォルトの名無しさん:2008/10/09(木) 09:59:38
ホンニンキタ-
676デフォルトの名無しさん:2008/10/09(木) 10:25:50
>>674
本人降臨

はい論破論破
677デフォルトの名無しさん:2008/10/09(木) 10:38:09
>>674
OK、大丈夫だ。ここ数日結構擁護レスが付いてるが、
アンチ君の方が糞糞言うだけで具体的な指摘も論理的な検証もできない、
というあまりにレベルが低すぎるおかげで、
それほど本人乙やら信者認定やらされてない。
678デフォルトの名無しさん:2008/10/09(木) 11:06:16
679デフォルトの名無しさん:2008/10/09(木) 13:30:27
擁護以前にまだ、感想がでてない件w
680デフォルトの名無しさん:2008/10/09(木) 13:32:25
>>677
> ここ数日結構擁護レスが付いてるが
いやそんなん付いてないよ。
中身を語らないレス見て「読んでないだろw」って思うのは当たり前だし、
>>674を除いて、誰も読んでないし、読む気も無いでしょ。
これは「馬鹿を叩いたらそれがアンチだった」という状態であって、「擁護した」は言わないよ。
681デフォルトの名無しさん:2008/10/09(木) 13:36:43
せっかくだから誰かまじめに読んで評価してみない?
682デフォルトの名無しさん:2008/10/09(木) 23:24:47
1. スクリプトエンジン プログラミング

一番だめな理由
糞スクリプトエンジン(笑)の設計概念や設計内容を一切説明していない
ただ永遠とソースコードと関数なんかの説明だけがずらーーっと
書いてだけである。
この本を読んでも汎用的な記述や独自の言語拡張を自力で設計
実相できるような情報、能力は一切つかない
何よりもまずいのは、著者自身が自分の設計概念、思想を他者に
伝道できるレベルに達してないしそうゆう説明や記述がまったく見られない

いわゆるデスマプロジェクトの詳細仕様レベルの情報しか書いていない
683デフォルトの名無しさん:2008/10/09(木) 23:37:52
"1." とは何だ?"2."以降のレビューがまだ続くのか・・・?
ぜひ尼のレビューに投稿して二次被害を最小限に留めてくれ
684デフォルトの名無しさん:2008/10/10(金) 00:24:29
>>682
なんだかワクワクしてきたぞ
685デフォルトの名無しさん:2008/10/10(金) 00:36:23
「延々と」を「永遠と」と書いている時点でダメレビューだな…。
686デフォルトの名無しさん:2008/10/10(金) 00:56:53
いや、ネバーエンディングファンクションのことだろ
687デフォルトの名無しさん:2008/10/10(金) 02:01:24
コードだけぱっと見で気になったところ。

・C++ 使いとしては普通やらない auto_ptr の使い方。

void compiler::DefineFunction(const yy::location& l, int type, const std::string *name, CArgList *args)
{
std::auto_ptr<const std::string> name_(name);

まぁ、bison との組み合わせ上しょうがないのかもしれないが。

・参照カウンタ付きstring、って言っていいのかよくわからないカウンタ付き string クラス。
共用体に入れるからポインタ風クラスにできないというのはわかったけどさぁ。

・努力するところを間違ってると思われる(明示的デストラクタの呼び出しとか placement new とか使いまくりの)固定サイズのスタック
これ、アラインメントのこと考えたら動作しない環境があるんじゃね?
688デフォルトの名無しさん:2008/10/10(金) 23:45:03
いまのところ
>>634が一番まともな書評。

ていうか、へんにあおってるやつは、もっといいスクリプトエンジンの書き方ができるなら
具体的にどうまずいんのかを指摘するとか、適当なブログで自作のものを公開してからものを言ってください。
それすらできない書き込みはぜんぶ妬みだからスルーしたほうがいい。

>>687が具体的な指摘をしているけど、単にC++の書き方についての指摘なのが
残念なんだよね。本の主題にたいしてこういった指摘がほしいところだよ。
689デフォルトの名無しさん:2008/10/11(土) 00:39:33
作者必死すぎw
690デフォルトの名無しさん:2008/10/11(土) 00:41:17
>>688
誤解させたのならすまん、>>634はソースをざっと見た感想で書評ではないんだ
691デフォルトの名無しさん:2008/10/11(土) 00:44:58
誤解させたのならすまん、ここは書評スレではないんだ
692デフォルトの名無しさん:2008/10/11(土) 00:50:28
というか、目次一つも公開されていないようなクソ本なんて話題にするの止めようぜ。レスのムダだぜ。
>688 も、もし持っているんだったら目次をアップしてくれないか?
693デフォルトの名無しさん:2008/10/11(土) 01:32:59
694デフォルトの名無しさん:2008/10/11(土) 02:03:56
サンクス >693

5 ソースコード
6 boost::spirit
というので激しく不安になるな。

というか、スクリプトの入門というのなら、BASICタイプ言語の作成とかCタイプ言語の作成
とか分散しないで、どっちか一つに集中すべきじゃない?

入門だったら、むしろ構文はシンプルなforthライクにして、エンジンの中身に拘るべきだと思うけど……
695デフォルトの名無しさん:2008/10/11(土) 02:32:20
>>694
いや、だから、ちゃんとコンパイラのことを学びたい人向けの本じゃないんだってばw
作者のほかの本ミロ

とりあえず、ゲームなんかで使える即席コンパイラが作りたい人むけなの。
696デフォルトの名無しさん:2008/10/11(土) 04:06:29
それだったらなおさらforth系だろ、常識的に考えて。
どこの常識だかしらんけど。

まあ、素人は変に見た目に拘るから、わざわざCとBASICなんて持って来たのかね。
697デフォルトの名無しさん:2008/10/11(土) 07:23:59
>>694
立ち読みしたところ、LALRとLLの両方を触ってみようという趣旨らしい
あと仮想マシン部分も、スタックベースとレジスタベースを一応どっちもやってみたい
それ自体は悪くないと思うが、
逆に内容が拡散することにもなってるのでまあ一長一短か
698デフォルトの名無しさん:2008/10/11(土) 08:43:17
今時ターゲット言語がForth風はないわw
パーザを手で書く時代じゃないし。
Tamarin tracingの中間言語はForth風だけれども。

>>550
Google ChromeのJavascriptエンジンv8は、
ソースを読み込んだら構文木で抱えて、
最初の実行でネイティブにコンパイルして実行。
中間言語はなし。ってスタイルだったな。
言葉を替えれば、構文木が中間言語(ただしこのまま実行しない)のJIT。
ちなみにv8のパーザはC++で手書きだったw
699デフォルトの名無しさん:2008/10/11(土) 11:20:05
>>698
入門書でいきなり「今時」に追いつこうとするのは難しいんじゃないの

そこで、いかに難しいかを説明する人もいれば
難しいなんて嘘だよほら簡単だよみたいな人もいるわけだ
700694:2008/10/11(土) 13:59:06
>697
ほう、そういう趣旨か。それなら理解できるな。
でも、入門書なら説明する対象はできるだけ簡素なものにすべきという意見は変わらんけど。
forthそのものを題材にするかどうかはともかく、スタックマシン自体は勉強しておいて損はないし。
701デフォルトの名無しさん:2008/10/11(土) 14:24:17
>>698
V8ってやっぱ構文木を介するのか・・・
ソースからいきなりネイティブコードに落とすってどこかで読んで
すげーって思った覚えがあるんだけど違ったか
702デフォルトの名無しさん:2008/10/11(土) 20:01:44
http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/ast.h
// The abstract syntax tree is an intermediate, light-weight
// representation of the parsed JavaScript code suitable for
// compilation to native code.
703デフォルトの名無しさん:2008/10/11(土) 20:59:18
>>702
accept(visitor)のとこって
visitorパターン?ダブルディスパッチ?
704デフォルトの名無しさん:2008/10/11(土) 21:15:30
メンバ変数にプレフィックスとかついてないからこんがらがる・・・
でも、組み方自体はデザパタとか今風で読みやすいな
705デフォルトの名無しさん:2008/10/11(土) 22:05:50
メンバ変数にはサフィックス"_"が付いてるじゃないか
706デフォルトの名無しさん:2008/10/11(土) 22:24:07
設定してるフォントがまずかった(固定幅にIPAモナー)orz
正直すまんかった>google
707デフォルトの名無しさん:2008/10/11(土) 23:20:47
>>704
正直読みやすい。
けど細かいとこ省いても5万行ある。
>>703
dispatchはl.1193。
708デフォルトの名無しさん:2008/10/12(日) 00:37:59
SVN入れるか・・・orz
709デフォルトの名無しさん:2008/10/12(日) 02:36:21
hg入れるか・・・
710デフォルトの名無しさん:2008/10/12(日) 17:21:46
V8って
http://code.google.com/p/v8/
ってこれだけで構成されてるんだよね?

俺の今の能力だと3ヶ月ぐらい解析するのに
かかりそう俺ダメだわ神様にお任せしよう
711デフォルトの名無しさん:2008/10/12(日) 18:48:21
神様神様
ささっと解析しちゃってくださいよw
712デフォルトの名無しさん:2008/10/12(日) 18:53:18
何を解析しろと
713デフォルトの名無しさん:2008/10/12(日) 19:13:23
別に急いでないなら三ヶ月かかってもいいじゃん
714デフォルトの名無しさん:2008/10/12(日) 19:16:51
ちなみに神様は何分ぐらいで解析してしまうの?
715デフォルトの名無しさん:2008/10/12(日) 19:26:13
神様 解析 飽きた ポポ たいへん
716デフォルトの名無しさん:2008/10/12(日) 20:13:20
まずクラス図に起こすサ行を始めてみた
717デフォルトの名無しさん:2008/10/12(日) 20:27:20
もう飽きてきたぉ
誰か助けてぉ
718デフォルトの名無しさん:2008/10/12(日) 21:35:08
じゃあ俺はワ行から逆順でいくお
719デフォルトの名無しさん:2008/10/12(日) 21:44:26
>>710
三ヶ月でコード読み終わるならかなり能力が高い方かと。

とりあえずドキュメントから。
http://code.google.com/apis/v8/design.html
http://code.google.com/apis/v8/embed.html
コードがすっきりしてるだけあって、
ドキュメントも凄く簡潔にまとめられてる。
720デフォルトの名無しさん:2008/10/12(日) 22:19:26
>>719
とりあえずmain見っけたから
サンプル食わして解析していくさ

callグラフ作るとするか
721デフォルトの名無しさん:2008/10/12(日) 22:23:08
ぐーぐる謹製か。ちょっと面白そうだな
722デフォルトの名無しさん:2008/10/13(月) 10:32:19
謹製いうても会社ごと買収しただけ
723デフォルトの名無しさん:2008/10/13(月) 11:43:43
V8っておいちょっと金出すから
今日から俺のモノになったからヨロってやっただけでしょ?
724デフォルトの名無しさん:2008/10/13(月) 14:29:15
AnimorphicのStrongtalk直系って事になるのかな。
SunのSelfの実装技術の影響が強い。
Lars BakはもともとJava HotspotやStrongtalkやってた人だし。
Google CTOのUrs Hlzleが、Selfやってた人だから、みんなお仲間。
Smalltalk, JVM/Self, v8ってかなり人が共通している。
725デフォルトの名無しさん:2008/10/13(月) 14:31:05
ちなみにStrongtalk由来のコードが、
Sunのcopyrightのままで含まれてますよ。
コード生成のところ。
726デフォルトの名無しさん:2008/10/13(月) 14:31:26
なんかきめぇなぁw
どうりでなんかきもいわけだ
727デフォルトの名無しさん:2008/10/13(月) 16:44:46
なんかきめぇからなんかきもい
???
728デフォルトの名無しさん:2008/10/13(月) 18:12:03
最大不動点で意味を定義する方なのでしょう。
729デフォルトの名無しさん:2008/10/14(火) 12:29:53
>>724
SelfってJavascriptと同じでプロトタイプ指向の言語だよね。
実行時にオブジェクトのプロパティが増えることがあるから、
どっちでもシャドウクラスの実装技法が有効なんだね。
730デフォルトの名無しさん:2008/10/18(土) 11:08:40
Virtual Machine Design and Implementation in C.C++
この本ってどうなんすか?
731デフォルトの名無しさん:2008/10/21(火) 09:10:27
著者でググれ
732デフォルトの名無しさん:2008/10/21(火) 17:26:37
某高専の図書館にドラゴンブックがあってちょっとワロタ
733デフォルトの名無しさん:2008/10/21(火) 22:53:01
某大学の図書館は>>589が全部揃ってた
734デフォルトの名無しさん:2008/10/22(水) 10:37:38
> 6. 花飾り (創作市場増刊 (6)) 坂本 千尋 アトリエ染花 (大型本 - 2002/6)
> 10. コサージュのおしゃれ―作りかたと楽しみかた 坂本 千尋 (単行本 - 1985/12)

違うだろw
735デフォルトの名無しさん:2008/10/22(水) 11:09:02
これは既出?

jolt2 が生成する機械語について - 言語ゲーム
ttp://d.hatena.ne.jp/propella/20081018/p1
> pepsi は Smalltalk に似たコンパイル言語で、C 言語へのトランスレータとし
> て実装されています。実行には gcc が必要です。
> jolt とは Lisp に似た言語で、実行時に動的にソースから機械語をコンパイル
> して実行します。jolt の関数は C で書かれた関数と互換性があり、C ライブ
> ラリのコールバックにそのまま使えます。jolt は pepsi で実装されていて、
> pepsi のライブラリオブジェクトを利用出来ます。

736デフォルトの名無しさん:2008/10/22(水) 11:52:27
>>735
ブログの副題が「とあるエンジニアが嘘ばかり書く日記」ってとこが気になるんだけど…
737デフォルトの名無しさん:2008/10/22(水) 12:10:38
過去の日記をあれこれ読めばだいたいわかると思うけど、
「嘘ばかり」ってのは韜晦ですね
738デフォルトの名無しさん:2008/10/22(水) 13:00:56
gcc呼んでる時点で糞認定してあげよう
739デフォルトの名無しさん:2008/10/22(水) 14:58:49
そういうもんでもない。
740デフォルトの名無しさん:2008/10/24(金) 08:30:18
jolt のコード生成は gcc 呼んでないよ
741デフォルトの名無しさん:2008/10/24(金) 19:38:50
gccって糞なの?
742デフォルトの名無しさん:2008/10/24(金) 21:16:27
お前が糞だと思う限り糞は存在し続ける
743デフォルトの名無しさん:2008/10/28(火) 14:15:45
>>574
仕事で困ってここにきてますよ
yacc/lexをほとんどさわったこともないのに
いきなりパーサなんて書けるんですか?
744デフォルトの名無しさん:2008/10/28(火) 14:17:17
誰だって最初は初めてだ
745デフォルトの名無しさん:2008/10/28(火) 14:20:18
>>744
便利な言葉だな
DQN会社で新人の尻を叩くのに使われていそうだ
746デフォルトの名無しさん:2008/10/28(火) 15:00:36
男は度胸!なんでもためしてみるのさ
747デフォルトの名無しさん:2008/10/28(火) 17:42:02
>>743
パーサの知識があればyacc,lexはタダの道具でしかないよ
748デフォルトの名無しさん:2008/10/31(金) 01:39:35
当たって砕けろだ。
749デフォルトの名無しさん:2008/10/31(金) 03:17:43
玉砕主義
750デフォルトの名無しさん:2008/10/31(金) 09:43:19
欲しがりません
751デフォルトの名無しさん:2008/10/31(金) 10:07:05
kinput2までは
752デフォルトの名無しさん:2008/11/03(月) 18:43:29
753デフォルトの名無しさん:2008/11/03(月) 18:45:49
>>752
クソ本見つけてくるなw消えろ帰れw
754デフォルトの名無しさん:2008/11/03(月) 18:52:44
会社の先輩にいい本だって言われたんだが。
ダメなのか?
755デフォルトの名無しさん:2008/11/03(月) 18:56:36
この人のは基本の基本しか書いてないよ
756デフォルトの名無しさん:2008/11/03(月) 18:57:23
ゲームエンジン屋で一生を終えたいなら好きにしろ。
処理系屋として上を望むならほどほどに参考にする程度に。
757デフォルトの名無しさん:2008/11/03(月) 19:02:06
そうなのか、、、
流し読み程度にしておくよ
758デフォルトの名無しさん:2008/11/03(月) 19:46:19
自作スクリプトを作成したいんだが、何から手をつければいいんだ?
759デフォルトの名無しさん:2008/11/03(月) 20:05:21
仕様を決めることだろう。
欲しい機能を列挙しろ。
勉強は必要になった分だけすればいい。

760758:2008/11/03(月) 20:15:11
言語仕様はCでやろうと思っている
シンプルだし。

761デフォルトの名無しさん:2008/11/03(月) 20:18:46
スクリプトは文字列解釈とかあるしC++以上がいいと思うけど。
問題は文字コードなんだ。
762758:2008/11/03(月) 20:24:18
言語使用はCで作成はC++でやろうとしている
いきなりOOなんて絶対無理だ
763デフォルトの名無しさん:2008/11/03(月) 20:57:11
>758
まずはForth実装でも勉強したら?

>761
UTF-8が素直でいいんじゃない?UTF-8も欠点あるけど、UTF-16とかShiftJISほどひどくないし。
764デフォルトの名無しさん:2008/11/03(月) 21:01:45
ForthはForthで独特の癖があるから、ポインタも配列も構造体もないCとか
そのへんが手頃だと思うけど。

生のハードウェアにアセンブラで実装するならForthもいいかなとか思わないでもないw
765758:2008/11/03(月) 21:15:56
>まずはForth実装でも勉強したら?
これ、情報がかなりすくないのな

>764
のようなものにするよ


この後は何から手をつければいいんだ?
766デフォルトの名無しさん:2008/11/03(月) 21:25:24
マジレスするとVCの中間コード眺めとけ
767766:2008/11/03(月) 21:26:24
妙な事言ってしまったww
混合モードだっけ?あれ見とくといいよ
768758:2008/11/03(月) 22:30:46
取りあえず、これ読むわ

スモールコンパイラの制作で学ぶプログラムのしくみ
769デフォルトの名無しさん:2008/11/03(月) 22:35:37
うはwsrymr
770デフォルトの名無しさん:2008/11/03(月) 22:56:09
ん?
まずい?
771デフォルトの名無しさん:2008/11/03(月) 23:22:40
>>770
じゃあここでみんなで作ろう
仕様ヨロ
772デフォルトの名無しさん:2008/11/04(火) 00:06:53
>言語使用はCで作成はC++でやろうとしている

これでいいんじゃね?
773デフォルトの名無しさん:2008/11/04(火) 00:08:04
>>772
じゃあCで書けばよくね?スクリプト作る意味あるの?
774デフォルトの名無しさん:2008/11/04(火) 00:11:59
>>773
スクリプトを作るのが意味じゃね?
775デフォルトの名無しさん:2008/11/04(火) 01:19:30
Cパーサなんて腐るほどあるから
そこから先の話をしろよな
776デフォルトの名無しさん:2008/11/04(火) 08:18:24
777デフォルトの名無しさん:2008/11/04(火) 11:12:01
うわ。渡邊担先生のとこ403だよ
778デフォルトの名無しさん:2008/11/04(火) 11:26:45
Cはプリプロセッサがないといまいち締まらない。やるなら込みで。
#defineの展開則にクセがあって意外とややこしいが。
779デフォルトの名無しさん:2008/11/04(火) 11:36:34
むしろプリプロセッサは既存のものを流用しないか?
780デフォルトの名無しさん:2008/11/04(火) 14:45:21
独立してるんだから好きにすればいいと思う。
781デフォルトの名無しさん:2008/11/04(火) 19:33:10
1から作った方が面白くね?
782デフォルトの名無しさん:2008/11/04(火) 23:22:49
その時間に別のもの作った方が面白くね?
783デフォルトの名無しさん:2008/11/05(水) 04:35:08
なにを面白いと思うかは人それぞれ
784デフォルトの名無しさん:2008/11/05(水) 16:15:10
 むしろその時間があるならドキュメントの整備に割り当てたほうがいいと思う。
ドキュメントがダメだと開発者にとってもユーザーにとっても本当死ねる。

...Pike v7.6 release 86リファレンスマニュアルを和訳中の人より。
あれ原文がクソで説明がチープなうえにいちいちくどい。orz
785デフォルトの名無しさん:2008/11/05(水) 17:31:38
そういうレベルの作り物じゃないだろ。
786デフォルトの名無しさん:2008/11/05(水) 20:12:27
で、これは誰が音頭を取るんだ?
787デフォルトの名無しさん:2008/11/05(水) 22:37:01
「これ」?
788デフォルトの名無しさん:2008/11/05(水) 22:55:44
あげ
789デフォルトの名無しさん:2008/11/05(水) 23:36:28
ttp://spirit.sourceforge.net/repository/applications/c.zip
ほれ、作ってやったぞ
ここから先の話をしろよな
790デフォルトの名無しさん:2008/11/06(木) 00:19:30
>>789
typedefを扱えない未完成品ですな
791デフォルトの名無しさん:2008/11/06(木) 03:10:05
盛り上がっているところ申し訳ない。
ちょいと、コンパイラの性能を測るためのベンチマークプログラムが入り用になりまして、
Cのソースコードの形で配布してる、ベンチ用に使えそうなプログラムを探しています。
SPECみたいにちゃんとしたものでなくてもいいんですが、
とにかく数を沢山(100くらい?)揃えたいと思ってます。
誰か、それっぽいプログラムが沢山ある場所を御存知でないでしょうか?
792デフォルトの名無しさん:2008/11/06(木) 08:30:52
>>790
typedefは、レキサの返すトークンにも影響をおよぼすから、
>>789みたいなtemplate実装だとなかなか難しいものがあると思う。
レキサが単なる識別子じゃなくて、型名であること返さないと
うまくパーズできないCの構文はイヤらしい。
793デフォルトの名無しさん:2008/11/06(木) 12:01:50
>>791
言語のベンチマークのページ
http://shootout.alioth.debian.org/
言語を選んでベンチの種類を選べばソースコードが出てくる

こっちも似たようなもん
http://dada.perl.it/shootout/
794791:2008/11/07(金) 01:06:16
>>793
おお、早速ありがとうございます。
そうか、日本語でググってたから駄目だったのか。
795デフォルトの名無しさん:2008/11/09(日) 01:03:01
flexに関する質問です。
パースしている各行を保存したい(変換後のコードのコメントに変換元のコードを出力したい)のですが、なかなか良い方法が思い付きません。

'\n'を読む箇所で,strdupでコピーするという方法は,入力バッファを直接さわる事になり実装依存ですのでできれば他の方法を取りたいです。
自分でバッファを用意していちいちyytextを追加していく方法は、全てのルールにその記述をしなければならないのが嫌な感じです。

何か良いアイデアがありましたらよろしくお願いします。
796デフォルトの名無しさん:2008/11/09(日) 08:02:49
行番号だけとっておいて、行の中身が必要なときに別途照らし合わせればどう。
797デフォルトの名無しさん:2008/11/09(日) 08:49:19
YY_INPUTを行指向のものに置き換えて、保存された行を参照する。
798デフォルトの名無しさん:2008/11/09(日) 10:22:08
>>796, 797
ありがとうございました。
>>797の方法で書くことにしました。
799デフォルトの名無しさん:2008/11/09(日) 11:21:15
ターゲット言語にも依りますが、
パーザが先読みすることやアクションのタイミングの関係で、
式が複数行に分かれていたりすると結構大変です。頑張って。

エラーメッセージ頑張りたいgccのパーザは手書きです。
Bisonの吐いたコードが元にはなっているけれど。
800デフォルトの名無しさん:2008/11/15(土) 05:13:43
保守
801デフォルトの名無しさん:2008/11/15(土) 06:51:21
>>799
v8も手書きだね。
「こんなメソッドないよー」とかちゃんと行番号と共に、

f.test()
(shell):12: TypeError: Object 0 has no method 'test'
f.test()
 ^
教えてくれる。
802デフォルトの名無しさん:2008/11/16(日) 09:32:03
GLRパーザっていいものなの?
elkhoundとか楽しそうなんだけど
803デフォルトの名無しさん:2008/11/18(火) 11:14:33
bisonについて質問です。

YYERROR_VERBOSEを指定した際にエラーメッセージにたとえば
"unexpected TYPE_NAME ..."
とか表示されますが、これを
"unexpected type name ..."
などのようにしたいのです。

yytname[]を書き換えれば良い事は分かるのですが, シェルスクリプトなどを使わずbison内からこれを行う方法はありませんでしょうか?
80414:2008/11/24(月) 17:47:28
ゆっくり作ってるのですが、
気づけば以前の質問から1年以上たってました・・・。
まだバグバグなのですが、
なんとなくサンプルも動くようになったので、
暫定的に公開しました。
何かご意見をいただければありがたいです。

http://www29.atwiki.jp/tinycode/pages/11.html
805デフォルトの名無しさん:2008/11/27(木) 22:31:55
いわゆる手続き型言語の処理系作っています

戻り値を持つ関数の定義で、
ちゃんとreturn 値;しているかどうかを調べようとしてハマっています

int hogehoge(int a)
{
 if ( a < 5 ) {
  return 0;
 }
}

これをコンパイルエラーにしたいです

int hogehoge(int a)
{
 if ( true ) {
  return a + 5;
 }
}

これはエラーにしたくないです

制御構文としてif/switch/whileがあるのですが
途中でbreakとかcontinueとかやられると超頭痛いです

こうやるのが常套手段みたいなのってありますか?
806デフォルトの名無しさん:2008/11/27(木) 22:40:58
100%完璧にやるのは不可能。
ほどほどのところで満足しとけ。
807デフォルトの名無しさん:2008/11/27(木) 23:01:29
>>806はただの馬鹿だから無視しておk。

>>805
末尾コンテキストという概念がある。
末尾コンテキストで値を返す作用があればおkとする。
if (true)みたいなケースをコンパイラの方針として許すなら
定数式の畳み込みをきちんと行ってから判定させる。
808デフォルトの名無しさん:2008/11/27(木) 23:10:30
例えばこのケース
int わはー(int むすー) {
 while (むすー) {
  if (むすー)
   return えへー;
 }
}
通常while内は末尾コンテキストではないのでエラーだが、
むすーが定数式に展開できる時、真ならおk、偽ならエラー
となる。
809デフォルトの名無しさん:2008/11/28(金) 00:14:01
lispスレでもそうだけど、わはーむすーは極度に気持ち悪いからやめて。。。
810デフォルトの名無しさん:2008/11/28(金) 00:15:32
識別子なんて単なる記号だろ
811デフォルトの名無しさん:2008/11/28(金) 00:22:26
何か知る前は平気だったがググった後じゃもうだめだわな>>809
812デフォルトの名無しさん:2008/11/28(金) 00:23:59
そうなんだよ…
813デフォルトの名無しさん:2008/11/28(金) 00:45:14
最高だろ・・・
814デフォルトの名無しさん:2008/11/28(金) 00:45:14
わはーまでなら許すが、
むすーやちょいあーが出てきたら受け付けない。
815デフォルトの名無しさん:2008/11/28(金) 00:46:49
そういう人多いよね
でもhogeとかよりは人間味があっていいじゃない
816デフォルトの名無しさん:2008/11/28(金) 01:03:56
人間味というか、狂おしい精液の匂いがしそうなのがやだ
817デフォルトの名無しさん:2008/11/28(金) 01:30:14
アイドルの名前が出てくるのと同じ
むしろhogeでは何がなにやら判らない
興味を引かない
818デフォルトの名無しさん:2008/11/28(金) 01:35:14
引くわ、興味の以前にw
819デフォルトの名無しさん:2008/11/28(金) 01:43:02
>>807
いや>>806の言っているのが
そんな無茶な話じゃないのはしってるだろ?

> 定数式の畳み込みをきちんと行ってから判定させる。

この辺の塩梅。
820デフォルトの名無しさん:2008/11/28(金) 01:46:45
>>807
1ステートメントごとにチェックしてくんですよね
とりあえず定数条件は無視で、ベタベタにやってみました。
簡単にテストしてみましたが、動いているようです
テストパターン作るのがこれしんどいですね

・whileの中のswitchの中のcontinueはwhileのcontinue
・switchではラベルごとの結果をマージする必要あり(ifも同様)

あたりでハマりました
なんか遠回りしている気がしないでもない・・・

もしかして「未初期化の変数の参照」を洗うのも似た処理になりますかね?
821デフォルトの名無しさん:2008/11/28(金) 01:50:52
>>820
データフロー解析に近いパス解析をする必要がある。
822デフォルトの名無しさん:2008/11/28(金) 02:00:26
>>805
二番目の例をエラーにしたくない理由がわからん。
何のために?
823デフォルトの名無しさん:2008/11/28(金) 02:14:09
>>821
うう、ググってみます・・・

>>822
流儀かもしれませんが、
コードを一時的にコメントアウトしたりもどしたりするのにこうする場合があるのと
(そんなのやるなよ、というのはナシで・・・私以外の人も使うので)
プリプロセッサマクロ展開の都合でこうなることもあるかなあと

定数畳み込みは単純ケースはすでにやっています
whileなんかでは無限ループになるのでその検出もできますね

つかこれらって意外どころじゃない大変さなんですが、
皆さんのオレオレ言語処理系はここまでやってます?
824デフォルトの名無しさん:2008/11/28(金) 02:20:56
>>822
むしろ、二番目をエラーにする根拠はないだろう?
825デフォルトの名無しさん:2008/11/28(金) 02:55:10
>>823
ループや再帰のある場合に、
頑張って近似値を得ようとしなければ簡単。
頑張るのであれば、データフロー解析で、
最小不動点演算する必要がある。

他には、

int x;
if ((y % 2) == 0) {
x = -1;
} else if ((y % 2) == 1) {
x = 1;
}

こういう代数的な理解するかどうか。
826デフォルトの名無しさん:2008/11/28(金) 03:03:17
>>825にあるのを全く無視するとすると、
基本ブロックの結合グラフの全パストラバースして、
初期値false、定義されたらtrue、合流点ではorすれば、
終了点で初期しないパスがあるかどうか分かる。
827デフォルトの名無しさん:2008/11/28(金) 12:47:45
>>824
たまに意図せずやるから警告ぐらいはほしいな
828デフォルトの名無しさん:2008/11/28(金) 19:20:00
>>826
問題は、単にエラーであることを知るだけのために、コンパイラの最適化パスっぽいフロー解析までするのはどうだろう……ってあたりだな。
829デフォルトの名無しさん:2008/11/29(土) 02:25:49
>>827
でもさ、const指定されたc++のコードでもマルチスレッドで非constなメンバ関数呼ばれたりすると
途中でifの条件変わったりすることあるからダメじゃない?(元の関数は引数評価だけどさ)
830デフォルトの名無しさん:2008/11/29(土) 10:30:11
int hoge(int a)
{
 while ( true ) {
  if ( a < 10 ) {
   return a + 10;
  } else {
   continue;
  }
 }
}

これが(チェックで)エラーにならなくなりました!

日記っぽくてすみません...
831デフォルトの名無しさん:2008/11/29(土) 10:31:51
>>826
やはりその基本ブロックの取り出しが必要ですよね
構文木のままやるのは間違ってるのかなあ・・

>>828
ええ、そうなんですよ
ちょっと前に書いた「未初期化変数の参照」チェックも
ともすれば最適化の前準備と似ているわけです

でも、最適化しなくてもコード生成ってできるじゃないですか
無駄多いですけどね
つまり今
 字句解析→構文解析→(returnなどの)チェック→コード生成
とやろうとしているのですが、
チェックは構文木上でこねくり回せばいいやと思っていたのに
どうも違うなあ、なんでだろうなあと悩んでいる次第であります

あ、遠回り自体はキライじゃないです。

>>829
その場合、このチェックでは変数として取り扱うんでしょう
>>825 でいうようなものは、
代入・参照が確実に把握できるローカル変数ならではの話だと思います
832デフォルトの名無しさん:2008/11/29(土) 10:54:10
>>831
構文木のままだと、break, continue, gotoなどの、
構文木構造とコントロール構造が同じでないもので苦労する、
あるいは含まれる場合は諦める必要がある。
833デフォルトの名無しさん:2008/11/29(土) 11:01:35
ラムダ式に変換しちゃえー
834デフォルトの名無しさん:2008/11/29(土) 14:50:07
>>831
> どうも違うなあ、なんでだろうなあと悩んでいる次第であります

中間表現をただ一つしか考えずそれで全てやろうとしているから
無理がきている。
835デフォルトの名無しさん:2008/11/29(土) 15:37:41
lispで仮組みするといいよ。
考えられるケースの断片を即実行コードに落として動作確認できるから
C言語とかで直接組みながら妄想するよりは圧倒的に早い
836デフォルトの名無しさん:2008/11/29(土) 15:42:32
つーか最初からlispでやってれば
そもそもこんなスレにお世話になりに来ることもない
まずlispやんなさい
837デフォルトの名無しさん:2008/11/29(土) 15:48:54
もちろんschemeでもいい
lispと言ったらschemeも含まれる
どこかのスレでlisp=CommonLispだなんて言い張る馬鹿がいるが
そんな事はここでは重要ではない
こんな補足をいちいちしなければいけないのは、その馬鹿のせいだが
838デフォルトの名無しさん:2008/11/29(土) 15:54:46
うぜぇよ
839デフォルトの名無しさん:2008/11/29(土) 16:23:30
グラフ探索ならハッシュテーブルを使いやすい言語がいいな。
840デフォルトの名無しさん:2008/11/29(土) 16:51:34
スレ違いなのですが質問させてください
今C言語を勉強してて ソースファイルなんかの書き方は覚えてみたのですが
コンパイルの仕方がわかりません、
どのようにすればいいのか具体的に何方か教えてもらえませんでしょうか?
お願いします
841デフォルトの名無しさん:2008/11/29(土) 16:53:12
いやです
842デフォルトの名無しさん:2008/11/29(土) 17:11:46
スレ違いとわかってるなら聞くなよ
843デフォルトの名無しさん:2008/11/29(土) 18:09:20
844デフォルトの名無しさん:2008/11/30(日) 07:35:54
>>840
format c:
845デフォルトの名無しさん:2008/11/30(日) 09:18:51
>>844
やさしいな
846デフォルトの名無しさん:2008/11/30(日) 09:25:23
>>844
やべえ、一瞬それっぽく見えるw
847840:2008/12/07(日) 01:42:56
すみません、、ありがとうございます。
848デフォルトの名無しさん:2008/12/09(火) 20:46:47
BrainFuckスレより
http://pc11.2ch.net/test/read.cgi/tech/1177988460/883-884

883 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/08(月) 19:18:08
こんな本が出るらしい

ttp://book.mycom.co.jp/book/978-4-8399-2784-4/978-4-8399-2784-4.shtml
> あなたは「+-><.,[]」の8つの記号しかないプログラミング言語や、
> 空白だけで構成されるプログラミング言語があるのをご存じだろうか。
> 本書では、そんな奇妙な言語(Esoteric Language)を題材に
> プログラミング言語の作り方を解説します。
849デフォルトの名無しさん:2008/12/09(火) 21:33:27
売れるのか、それ?w
850デフォルトの名無しさん:2008/12/09(火) 21:38:06
Whitespaceって、外見が不気味なだけで
中身はごくマトモだったような記憶が
851デフォルトの名無しさん:2008/12/09(火) 22:49:24
著者は星のウイッチの人と同じなのか?
852デフォルトの名無しさん:2008/12/10(水) 00:31:50
esolangはもはやアイデア勝負だから、
人に教えてもらってどうこうなる問題じゃない気もするがw
853デフォルトの名無しさん:2008/12/10(水) 01:34:25
rubyでの実装の方が主眼らしい。> 教えて貰ってどうのこうの
854デフォルトの名無しさん:2008/12/10(水) 07:38:47
変態言語の紹介だけじゃ、ごくごく特殊な層にしか訴求しないだろうし。
855デフォルトの名無しさん:2008/12/10(水) 09:10:11
>>854
もともとニッチ狙いじゃないの?
856デフォルトの名無しさん:2008/12/10(水) 12:42:21
しかしまぁ、よくこんな超絶ニッチな書籍出す気になったな〜
857デフォルトの名無しさん:2008/12/10(水) 14:56:25
>>850
確かbrainf*ckと同じだよ、使う記号が違うだけで。
858デフォルトの名無しさん:2008/12/10(水) 15:22:07
>>857
whitespaceは数値を直接扱えるよ
4ビットマイクロコントローラみたいな命令群になっていてる
bfはまんまチューリングマシンだけどwsは表記が変なだけのcaslという感じ
859デフォルトの名無しさん:2008/12/10(水) 21:19:37
バルバルバルバル
860デフォルトの名無しさん:2008/12/10(水) 21:46:28
物を作ろう、という気分が広がってるのかな。いい傾向かと。
この勢いでScheme手習いとか復刊しないかな。スレ違いだが。
861デフォルトの名無しさん:2008/12/10(水) 21:55:05
俺おんにゃのこの
状態繊維を制御したいぉ
862デフォルトの名無しさん:2008/12/13(土) 23:12:18
>>857
全然違います
863デフォルトの名無しさん:2008/12/19(金) 09:35:48
EBNFのBNFが載っているURLがあったら教えてください。
よろしくお願いします。
864デフォルトの名無しさん:2008/12/19(金) 11:28:37
どのEBNF?
拡張BNFで定義が一番入りやすく文法も流通しているのは、
RFC4234のABNF(Augmented BNF)だと思う。
ただしBNFでなくABNFで定義してある。
ISOのEBNFなら、
http://standards.iso.org/ittf/PubliclyAvailableStandards/s026153_ISO_IEC_14977_1996(E).zip
にある。ただしこれもEBNFで定義してある。
865デフォルトの名無しさん:2008/12/19(金) 14:27:14
>>864
BNFをパースできるようになったので、それを基礎にしてEBNFをパースしたいと思います。
最終的にはABNFなどにも取り組みたいと思いますが、もっと単純なEBNFから始めようと思います。
集合操作にはデータベースライブラリを使いました。
もっと使いやすく出来るはずだと考えています。
866デフォルトの名無しさん:2008/12/19(金) 14:35:58
いま使えるのはもっとも単純なBNFのみです。
イプシロンと連接は使えますが、選択は使えません。
選択の代わりに、選択のある数だけ同じルール名でルールを書きます。

<A> ::= <B> | <C> "literal"
の代わりに
<A> ::= <B>
<A> ::= <C> "literal"
と書くということです。

この状態からブートストラップして、もっと多くの(E)BNFを読めるように
したいということです。
そこで、ごく単純な改変しやすいBNFがないかと考えた次第です。
867デフォルトの名無しさん:2008/12/19(金) 15:25:16
えーと、書いたBNFのパーザは、パーザジェネレータじゃないから、
BNFで書いたEBNFの文法があっても、EBNFのパーザは書くしかないよね?

>>866の「読める」というのか文法のparseなのか、
それとも与えられた文法の受理器が語を受理することなのかはっきりしない。

もしかして求めているのは、EBNFの文法じゃなくて、
EBNF→BNFのコンパイラかな? > bootstrap

(A) := X where (* A.length > 1 の時しか変換は必要ない *)
  X := A

A | B := X where
  X := A
  X := B

A? := ε | A

A+ := X where
  X := A X
  X := A

A* := (A+)?

868デフォルトの名無しさん:2008/12/19(金) 15:55:58
>>867
作ったのはパーサコンビネータです。
非終端記号へ還元するときにメソッドを呼び出します。
メソッドの中身は自分で書きます。
EBNFのBNFをパーサコンビネータに入力すると、クラスのひな型ができます。
BNFを読むパーサコンビネータはすでにあるので、これに手を加えることで
EBNFを読むパーサコンビネータが出来上がるという寸法です。
そこでEBNFのBNFが必要というわけです。
自分ででっちあげてもいいのですが、すでに使われているものがあればと
思った次第です。
この手順を繰り返すことで多くのEBNFを扱いたいのですが、自己記述的な
EBNFでは無理というわけです。
ブートストラップをしたいのです。
869デフォルトの名無しさん:2008/12/19(金) 16:11:17
> そこでEBNFのBNFが必要というわけです。

ここが良くわからない。
BNFあっても結局手で書くことは変わらないから、
ブートストラップにならないんじゃ?
870デフォルトの名無しさん:2008/12/19(金) 16:19:58
>>869
それについて明快な答えを出せば、EBNFのBNFを出していただけますか?
871デフォルトの名無しさん:2008/12/19(金) 16:55:44
いいですよ。簡単だから。
872デフォルトの名無しさん:2008/12/19(金) 17:25:46
>>871
パーサジェネレータの本体はデータベースです。
データベースに生成規則を詰め込むことができれば、あとはすべてを
使いまわせます。
ただそれだけのことです。

じゃはやくBNFください。
873デフォルトの名無しさん:2008/12/19(金) 17:55:04
パーザジェネレータがあるわけね?

rulr = alt
# alt = comp ( '|' comp )*
alt = comp alt1
alt1 = ε
alt1 = '|' comp alt1
comp = term
comp = term comp
comp = term '*'
comp = term '+'
comp = term '?'
term = '(' alt ')'
term = var
term = literal

ひとまずこのくらいでどう?
| () * + ?しかないけれど。
874デフォルトの名無しさん:2008/12/19(金) 18:01:41
>>873
小学生ですか?
875デフォルトの名無しさん:2008/12/19(金) 20:56:51
なぜ急に取引が始まって罵り合いになったのかわからん
876デフォルトの名無しさん:2008/12/19(金) 21:02:38
>>875
>>869あたりを見て何もわかっちゃいないことに気がついたから。
>>873であきれた。
正直すまんかった。
877デフォルトの名無しさん:2008/12/19(金) 21:19:41
>>875
俺もわからんかったw
でも>>876を見てレスをしなくて正解だったわ
掲示板を勘違いしているとしか思えん
878デフォルトの名無しさん:2008/12/20(土) 01:20:04
単にアスペルガーなんじゃね?

ABNFの規格書には、ABNFでABNFを定義している記載があるね。
ttp://tools.ietf.org/html/rfc4234#section-6.1
879デフォルトの名無しさん:2008/12/21(日) 20:14:42
BNFでlexで処理する部分とyaccで処理する部分をどう分けたらいいのでしょうか。
たとえば、普通はlex側で整数というトークンを作ってyaccで処理するけれど、
lex側で数字というトークンを作ってyacc側で 整数:数字|数字 整数;
という定義をしてもいいような気がするのですが。
(前に1回つくったときはconflictがおきてうまくいきませんでした)
どちら側で処理するかという基準があるのでしょうか。
880デフォルトの名無しさん:2008/12/21(日) 20:16:35
>整数:数字|数字 整数;
整数より自然数のほうが適切でした。
例なんで許してください。
881デフォルトの名無しさん:2008/12/21(日) 20:42:32
>>880
基準は特にないが、なるべく lex 側に寄せた方がいいというのが俺の意見
理由は、lexの方が文法クラスが小さいから、(一般的論としては) 処理が速い (はず) だから。
lex:正規言語
yacc:文脈自由文法
882デフォルトの名無しさん:2008/12/21(日) 22:36:09
>>881
ありがとうございます
経験とある程度の勘は要りそうですね
883デフォルトの名無しさん:2008/12/23(火) 10:55:00
最近は、大文字から始まったら〜、
;がなくても改行があったら〜とか
字句か構文かややこしいのが多いね。
Cのtypedefとか。
884デフォルトの名無しさん:2008/12/23(火) 11:11:36
セミコロンなしをちょっとでもやると、ありの環境に行った時に忘れること多い。
無い方が自然なんだと思う。
885デフォルトの名無しさん:2008/12/23(火) 11:12:56
>>883
たとえば
> ;がなくても改行があったら〜とか
これは sh がそうで、結構古いものだと思うけど。
886デフォルトの名無しさん:2008/12/23(火) 11:21:53
句読点orピリオドがないと文が読みにくくなるのと同じで ; が無い方が不自然
887デフォルトの名無しさん:2008/12/23(火) 11:22:50

それは慣れの問題。
それしか知らない世代、増えたな・・・
888デフォルトの名無しさん:2008/12/23(火) 11:25:13
自分の知ってる範囲だけが、この夜中の全てだと思ってるよね。
java・C言語系の言語しか知らないヤツは、それ以外の言語を認めようとしない。
井の中のかわず。
889デフォルトの名無しさん:2008/12/23(火) 11:29:40
>>884
けど;入れなくていいだけじゃなくて、
ここは改行を入れては駄目って言語もあるからなあ。
Javascriptで、
return
(式);
とか。ややこしくなっただけだ。
> ありの環境に行った時に忘れること多い。
はちゃんとエラーになることがほとんどだと思うけれど、
上の例でwarning出そうとすると、
構文解析部がかなりややこしくなるね。
890889:2008/12/23(火) 11:30:59
オフサイド+文区切り記号なしは自然だと思う。
Javascriptは中途半端。
891デフォルトの名無しさん:2008/12/23(火) 11:42:38
Javascriptの処理系は手書きが多い。
v8, tamarin, spidermonkey, (KDE) embeded全部手書き。

Pythonは半自動生成。インデントはtokenizerが処理。
$(PYTHON)/Grammer/Grammerには、
NEWLINEやINDENTがtokenとしてルールに登場します。
けどかなり整理されていてルールとしては綺麗です。

オフサイドと併用なら処理しやすい感じ。
892デフォルトの名無しさん:2008/12/23(火) 11:47:49
区切り記号なしは、その代りに
改行が区切りになっちゃうとか、
インデントでブロック切れちゃうとか、
予約語が増えるとか、
なんらかの別の制約がかかるだけだしなぁ。
セミコロン1個で文が区切れるなら安いもんだと思うんだけど。
893デフォルトの名無しさん:2008/12/23(火) 11:48:09
gccも昔はbisonでparser生成していたんだけどなあ…
いい警告出そうとするとどうしてもな。
894デフォルトの名無しさん:2008/12/23(火) 14:33:03
gccのc-parser.cはbisonが出力したのを元に、
手書きしたという変態的なもの。

ちなみにbinsonはLALR(1) automatonをXML形式で出力できます。
895,,・´∀`・,,)っ-●◎○:2008/12/23(火) 15:37:45
xbyakをもっとコンパイル時にエラー・警告出るようにしたい
アレ引数チェック甘いから
896デフォルトの名無しさん:2008/12/23(火) 18:59:26
ダンゴさんパネェっす
897デフォルトの名無しさん:2008/12/23(火) 21:19:59
ダンゴさんの貴重なコメントが読めるのはこのスレだけ
898デフォルトの名無しさん:2008/12/23(火) 21:57:39
いや、他でも読めるぞw
899デフォルトの名無しさん:2008/12/23(火) 22:38:23
勘弁してくれ
クロック数計測スレあたりにでも閉じこもってて欲しい
900,,・´∀`・,,)っ-○◎●:2008/12/23(火) 23:11:53
パネェ
901デフォルトの名無しさん:2008/12/23(火) 23:56:40
そこいくとか、最近流行りのパーサコンビネータとかどうなんだろう?
理論的にきれいだから関数型言語系の人は大喜びなんだけど、
複雑な文法+丁寧なエラーメッセージっていう時代の流れに逆行している
気がするんだが。
をまえらどう思うよ
902デフォルトの名無しさん:2008/12/24(水) 00:21:24
パーザコンビネータは、どっちかというと、
パーザフレームワークの中にエラー処理を埋め込むのが
得意なフレームワークですよ。モナドでエラーを処理してしまうので。
実際、Haskellのparsecは、エラーの起った行の表示程度は、
ライブラリを普通に使えば、何もしなくても出来てしまいます。
「expecting 'then'」とか。

"Predictive parser combinators need for values to report errors"
"Direct Style Monadic Parser Combinators For The Real World"
この辺りの研究の成果です。

一度、ドキュメントに付いている例を入力して実行してみては?
903デフォルトの名無しさん:2008/12/24(水) 20:46:31
まあ手書きの再帰下降パーサみたいなもんだからねえ。
柔軟性はある。
904デフォルトの名無しさん:2008/12/24(水) 21:25:05
>>879みたいな悩みも少ないしね
905デフォルトの名無しさん:2008/12/24(水) 22:21:26
その代わり左再帰はちまちま除去する必要がある
906デフォルトの名無しさん:2008/12/30(火) 09:34:15
今 Mach-O の勉強してるんですが、分からないことが1つあります。

relocation_info の r_extern が 0 だった場合に
r_symbolnum が section 番号になるという話なのですが、
この時、確かに再配置の必要なアドレスの位置は分かるのですが、
どこへ再配置すべきかという情報がどこにあるのかが分かりません。
とりあえず __jump_table の位置と symtab の nlist に並んでる順番とは異なるようで、
でも n_un.n_strx の順番でソートするといい感じになっているようにも見えて、
ただ、定義されてるけど使われてないシンボルは除外されているようで。
どこへ再配置すべきかという情報はどうすれば得る事ができるのでしょうか?
907デフォルトの名無しさん:2008/12/30(火) 12:21:07
自己解決。
dysymtab_command にありました。
てっきり名前から .dylib 用のものと勘違いしてました。
908デフォルトの名無しさん:2008/12/30(火) 13:48:45
既に解決しているみたいだけど、
$(OpenDarwin)/src/cctools/misc/redo_prebinding.c
辺りが参考になる。nm.cも。

もしまだ読んでなければ「Mach-O Runtime Architecture」も一読を。
909デフォルトの名無しさん:2008/12/30(火) 20:03:49
今 yacc の勉強してるんですが、分からないことが1つあります。
shift - shift conflict というエラーが出るのですが、どこを直せばいいのですか?
910デフォルトの名無しさん:2008/12/30(火) 20:21:12
>>908
Mach-O Runtime Architecture の方が
Mac OS X ABI Mach-O File Format Reference よりも詳しいみたいですね。
ありがとうございます。
911908:2008/12/30(火) 20:30:24
どう使うかってところに焦点当ててるドキュメントだからね。
redo_prebinding.cのソースもいいよ。
912デフォルトの名無しさん:2008/12/30(火) 20:33:59
>>909
文法が衝突してるところを直す。
913デフォルトの名無しさん:2008/12/30(火) 20:58:08
>>912
すいません。
Shift同士で衝突する状況がわからないっていう質問です。
最終的な状態数が増えるだけで、その場で衝突することは
ないのではないかと思いまして。
わかりずらくてすみません。
914デフォルトの名無しさん:2008/12/30(火) 23:47:06
shift-shift conflict って初耳なんだけど、一体どんな文法を書いたの?
915デフォルトの名無しさん:2008/12/31(水) 06:59:49
初耳ってレベル低っっっ!
ググったけどそんなの見つからないとか?
916デフォルトの名無しさん:2008/12/31(水) 08:20:22
このスレは低能が知ったかぶって質問に質問を返すスレです。
> 一体どんな文法を書いたの?
文法関係ないだろw
917デフォルトの名無しさん:2008/12/31(水) 10:01:07
>>909
参考にしたいので「shift - shift conflict というエラーが出る」例を教えてください。
918908:2008/12/31(水) 10:04:27
shift/shiftってconflictしてないじゃんw
先読みしろよw
919デフォルトの名無しさん:2008/12/31(水) 11:09:45
うわっ!先読みしろよwだって!
恥ずかしっ!!!
920デフォルトの名無しさん:2008/12/31(水) 12:28:03
ageまくってる馬鹿は何が目的なんだ?
921デフォルトの名無しさん:2008/12/31(水) 12:33:39
スルーしろよ
922デフォルトの名無しさん:2008/12/31(水) 14:32:17
冬だなあ
923デフォルトの名無しさん:2008/12/31(水) 15:09:10
shift-reduce conflict と reduce-reduce conflictはあるけど
shift-shiftコンフリクトは存在しない
であってる?
924デフォルトの名無しさん:2008/12/31(水) 15:13:09
なんで最後だけカタカナなんだ俺w
まぁそこはスルーしてくれ
925デフォルトの名無しさん:2008/12/31(水) 16:41:31
まあLR系のパーサの話をしてるなら、shiftってのは入力をスタックに入れるだけだしな。
2通り以上のshiftができるって意味わかんね。
926デフォルトの名無しさん:2008/12/31(水) 16:58:24
> 2通り以上のshiftができるって意味わかんね。
2チャンネルのレベル低下は深刻。
927デフォルトの名無しさん:2008/12/31(水) 17:06:28
shift-shift conflictは聞いたことないな
928デフォルトの名無しさん:2009/01/04(日) 11:37:20
ASTからVMの命令の列に直すやり方がわからない
ツリー構造から単純なリストに意味を保ちながら直すなんて本当にどうすりゃいいんだって話だ
簡約化の為の公理を与えろという事なんだけど、破綻しない公理なんてどうやって考えるんだろう
929デフォルトの名無しさん:2009/01/04(日) 11:43:48
>SSA変換,CPS変換,
930デフォルトの名無しさん:2009/01/04(日) 11:53:13
とりあえずターゲットを抽象度が低いSECDから始めてはどうよ。
http://d.hatena.ne.jp/h_sakurai/20070908
http://skelet.ludost.net/sec/
931デフォルトの名無しさん:2009/01/04(日) 23:34:59
SECDむずいっす助けて
932デフォルトの名無しさん:2009/01/05(月) 00:11:02
最も単純な仮想機械の一つだぜ!頑張れ!
というかわからんとこを聞けば?
933デフォルトの名無しさん:2009/01/06(火) 00:14:06
SECDってどれから読めばいいのですか?
自分も初めてみたいのですが
934デフォルトの名無しさん:2009/01/06(火) 11:44:59
原論文は古いんだよね。あれオンラインになってたっけ?

原論文よりこっち読めというおすすめがあったら知りたい。
935デフォルトの名無しさん:2009/01/07(水) 13:03:53
ML分かる人はこれで。
A Rational Deconstruction of Landin's SECD Machine
http://www.brics.dk/RS/03/33/

持っておいて損はない本。
http://www.amazon.co.jp/Architecture-Computers-Mcgraw-Hill-Supercomputing-Processing/dp/0070355967/
936デフォルトの名無しさん:2009/01/07(水) 20:53:36
コード読みたい人はLispMeのsrc/vm.cはどうだろうか。
Cだし、読みやすいし、コメントにSECDの遷移ルールが書いてある。
LispMeって名前だけどSchemeだから継続もある。
Rubyみたいに継続ある言語をやろうとしている人はお勧め。
SECDは凄く分かりやすいから。
937デフォルトの名無しさん:2009/01/07(水) 22:07:42
解る解る詐欺ですね解ります。
938デフォルトの名無しさん:2009/01/08(木) 00:14:34
Xtal復活か?
939デフォルトの名無しさん:2009/01/08(木) 22:29:14
blog見たらむっちゃ謝ってるw

>>936
switch-interpreterだね。
940デフォルトの名無しさん:2009/01/08(木) 23:34:44
汚かちゃんが言ってる言語中間子って何?
941ボーア:2009/01/08(木) 23:49:41
きみはそんなに新しい粒子が好きか?
942デフォルトの名無しさん:2009/01/09(金) 11:45:21
祭り厨は自分のスレに帰れ
943デフォルトの名無しさん:2009/01/11(日) 01:23:22
みなさん、はじめまして。
言語処理系のMLに入会したくメールをさし上げます。

豊島経営事務所の岡田と申し上げます。
土谷様よりこのMLのご紹介を頂きました。
外国語は基本的に苦手なのですが(笑)、コンピューター言語はどうやら私に優
しい(易しくはない)ようです。
プログラム、システム開発を行ううえで、ときに翻訳に近いプログラムを組んだ
りもします。これまでには何千ものHPの英文上から特定の単語条件を絞っていく
プログラムを作った経験があります。
これもなにかの縁ですので、どうぞよろしくおねがいします。
944デフォルトの名無しさん:2009/01/11(日) 06:29:07
>>940
言葉を最小単位に切り分けていきます。
すると最後に複数の原子という状態になります。
これを仮に形態素と呼びます。
この原子と原子の間には確率的に存在する各要素を結合する何かがあります。
この何かを仮に言語中間子と呼びます。
この言語中間子を確定することは様々な問題を解くことと同じです。
言語中間子の定義は言語の処理において数学的な基礎を形成します。

ということじゃないか?
今適当に考えただけなんだけどさ。
945デフォルトの名無しさん:2009/01/11(日) 07:27:33
豊島だと・・・!!!
946デフォルトの名無しさん:2009/01/11(日) 13:15:50
言語中間子は接続詞のことさ
947デフォルトの名無しさん:2009/01/11(日) 13:20:20
普通にメタ言語とかオントロジーとかでいいんではないかと
948デフォルトの名無しさん:2009/01/13(火) 20:46:18
半固定パイプラインに対するスケジューラーってどういう方式で実装すればいいんだろう。
一部だけ動的なシステムなんだけど、うまくスケジュールしたい。
ちょっと考えたんだが、結局コンテキスト切り替えコストと応答速度の兼ね合いに落ち着くのかなぁ。
949デフォルトの名無しさん:2009/01/13(火) 22:34:32
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
950デフォルトの名無しさん:2009/01/14(水) 15:19:28
LRで還元した記号は次の入力になりますよね?
この次の入力になる記号って普通どこに置くものなんですか?
次の入力専用に非終端記号型の変数を用意するもの?
951デフォルトの名無しさん:2009/01/14(水) 16:59:35
>>950
なりません。
次の入力(移動で得られる記号)はあくまでも終端記号列でできた入力記号から取られます。
還元して得られた非終端記号はどこにも保存されません。
スタックされたLRの状態遷移表の状態そのものがそれまでの履歴を表しているからです。
LRの説明で分かりやすくするために状態と一緒に還元された記号も入れることはありますが、
本質的なものではなく本来入れる必要はないものです。
952デフォルトの名無しさん:2009/01/14(水) 17:20:46
「入れる」は状態スタックにプッシュするってことね。多くのLR構文解析系はスタックを使って状態記号を保存するので。
LR構文解析は状態記号が入ったスタックのトップの状態と入力記号列の最初の終端記号からだけで次に行うべき動作を決定する。
その動作が移動なら入力から一つ記号を取り出し構文解析表から次に移る状態を引いて状態スタックにプッシュする。
還元なら生成規則に従って状態スタックから特定の数だけ状態をポップして、
その時の状態スタックのトップの状態と還元された非終端文字で決まる状態をプッシュする。
この時にだけ還元された記号が使われるが後から使ったりしないので特に保存する必要はない。
953デフォルトの名無しさん:2009/01/14(水) 18:07:01
>>952
だとするととてもありがたいのですが、それほんとに信じてもいいんですよね?
LR構文解析機を作ったことがあったうえで言ってるんですよね?
954デフォルトの名無しさん:2009/01/14(水) 18:18:51
>>953
感謝の言葉もなしに>>952になんて失礼なことを言ってるんだ、こいつはw
955デフォルトの名無しさん:2009/01/14(水) 18:21:41
ちょっと読み返すと失礼にあたる書き方に見えてきました。
どうもすいません。
>>953をちょっと補足します。
コンパイラIの286ページ図4.39を参考にします。
ここでI0からI1へ遷移するためには非終端記号Sの入力が必要なのではないか?
と考えたわけです。
逆に終端記号のみから次の遷移先を決定できる項集合について考えると、
循環する文法記号がある場合、永遠に展開し続けねばならず、終端記号のみからなる
gotoグラフの作成は不可能ではないかと考えたのです。
これを可能にするには、goto表の入力となる非終端記号を何に置き換えればいいのでしょう?

よろしくお願いします。
956デフォルトの名無しさん:2009/01/14(水) 18:22:25
相談に来ておいて相手に文句たれる奴っているよね。
なんで相談する気になったのかいつ見ても不思議
957デフォルトの名無しさん:2009/01/14(水) 18:23:05
>>954さんも>>952さんの考えを裏付けるってことですか?
私はドラゴンブックを見て考えていたので、最近の事情は知らないのです。
よろしくお願いします。
958デフォルトの名無しさん:2009/01/14(水) 18:26:03
>>957
裏づけがほしいんだったら、相応の対価を払って専門家に会って聞くべき
959デフォルトの名無しさん:2009/01/14(水) 18:54:20
構文解析系が入力記号列と状態スタックから構成されている場合、
状態スタックには最初に初期状態0がプッシュされている。
構文解析動作は、入力記号列の先頭の記号と状態スタックのトップ状態を見て、
対応する状態遷移表の項目からその動作を決定する。
移動なら、入力記号列の先頭記号を消費し、指定の状態を状態スタックにプッシュ。
還元なら、指定の生成規則の右辺の記号数だけ状態スタックからポップし、
     その時の状態スタックのトップ状態と生成規則の左辺とで決まる状態をプッシュ。
受理なら、正しく構文解析が完了。それ以外はエラー。
構文解析系はこれだけで動作する。還元された非終端記号はそれ以降の動作に出てくることはない。
例えば、数と+を終端記号、式を非終端記号として、
(1) 式 ::= 式 + 数
(2) 式 ::= 数
のような生成規則に対して、+は左結合的とすると、
状態0:入力記号が数なら移動し状態1、還元されたものが式なら状態2
状態1:有無を言わせず生成規則(2)によって還元する
状態2:入力記号が+なら移動し状態3、入力が終端に達していたら受理
状態3:入力記号が数なら移動し状態4
状態4:有無を言わせず生成規則(1)によって還元する
のような状態遷移表が作られる。
状態スタック:0|入力記号列:数+数+数 (0と数で状態1移動)
0,1|+数+数 (1と+で生成規則(2)による還元、状態を1個ポップし0と式なので状態2をプッシュ)
0,2|+数+数 (2と+で状態3移動)
0,2,3|数+数 (3と数で状態4移動)
0,2,3,4|+数 (4と+で生成規則(1)による還元、状態を3個ポップし0と式なので状態2をプッシュ)
0,2|+数 (2と+で状態3移動)
0,2,3|数 (3と数で状態4移動)
0,2,3,4| (4と終端で生成規則(1)による還元)
0,2| (2と終端で受理)
で、受理される。
960デフォルトの名無しさん:2009/01/14(水) 19:11:39
>>959
どうもありがとうございます。
よくわかりました。
お礼に私に出来ることはありますか?
961デフォルトの名無しさん:2009/01/14(水) 19:13:47
>>955
「コンパイラIの286ページ図4.39を参考に」できないからその内容はよく分からないけれど、
LR項の集合族間の状態遷移図とLR構文解析系の状態遷移表による動作とは別物。
LR構文解析系の状態遷移表を構成するための理論的裏づけがLR項の集合族間の状態遷移というだけであって、
実際に構文解析を行うに当たって非終端記号を入力記号として記録する必要はない。
もちろん、次の状態を決定するために、ある1動作の範囲内で非終端記号は必要になるが、それだけ。
そして、その必要な非終端記号は還元時に定まるもので入力として記憶するものではない。
962デフォルトの名無しさん:2009/01/14(水) 19:17:23
>>960
別にないよw
構文解析関係は理論だけでは取り付き難いから、
小さな系でもいいから実際に動作を手で追いかけながら見ていくと理解が進む。
963デフォルトの名無しさん:2009/01/14(水) 19:22:28
LISPやれば構文とかどうでもよくなる
964デフォルトの名無しさん:2009/01/14(水) 19:28:34
推敲せずに書いたらちょっと不要なことまで書いてしまった。
>>959の「+は左結合的とする」必要はなかった。
生成規則の定義だけで結合性を指定しなくても衝突は起きない。
965デフォルトの名無しさん:2009/01/14(水) 19:46:24
>>963
構文解析とかガキのやることだよな。
その先を見ろよ。
966デフォルトの名無しさん:2009/01/14(水) 22:00:31
おれのちんこなめろよ
967デフォルトの名無しさん:2009/01/14(水) 23:51:47
構文解析は今もホットだぜ。
968デフォルトの名無しさん:2009/01/24(土) 01:08:13
>>947
オントロジーwwwwww
969デフォルトの名無しさん:2009/01/24(土) 11:39:00
未だにオントロジーやってるのってEUの
外基地研究者ぐらいじゃねーの?
970デフォルトの名無しさん:2009/01/24(土) 19:45:18
オントロジーなんて日本でもアメリカでも中国でもどこでもやってるぞい
971デフォルトの名無しさん:2009/01/24(土) 20:11:22
阪大でやってたような
972デフォルトの名無しさん:2009/01/24(土) 21:21:27
オントロジーいらないって言ってる輩は、
「いいもん、別にCだけで何でも作れるから今のままで苦労してないもん!」
みたいな事を平然と言ってのける人種だけ
「もっとOSとかネットとかグリッドとかやってみたいから何かいいのないかな」
っていってる奴は死んでいいけどオントロジーはおもしろいです
973デフォルトの名無しさん:2009/01/24(土) 21:22:26
( ゚д゚)ポカーン
974デフォルトの名無しさん:2009/01/25(日) 00:08:49
ちょっとした処理系を作ろうと思ってるんだけど、yacc勉強したほうがいい?
それとも、自前で実装するほうがいい?
975デフォルトの名無しさん:2009/01/25(日) 00:11:57
ソースを公開したい場合は、
lex はライブラリを必要とするので
lex のインストールを相手に強要することになってしまう。

この点が問題にならないのであれば、yacc/lex というか、
今なら bison/flex あたりを勉強するのが楽だと思う。
976デフォルトの名無しさん:2009/01/25(日) 00:33:13
> lex はライブラリを必要とするので

ええ?どの環境?
977デフォルトの名無しさん:2009/01/25(日) 00:37:29
そもそもライブラリ無かろうが lex のソースをコンパイルするのに lex が要るんじゃないか?
978デフォルトの名無しさん:2009/01/25(日) 00:38:43
lex が flexのエイリアスだったりすることをいってるじゃないか?
979デフォルトの名無しさん:2009/01/25(日) 09:36:12
ソースを公開したい場合は、
〜 はコンパイラを必要とするので
〜 のインストールを相手に強要することになってしまう。
980デフォルトの名無しさん:2009/01/25(日) 10:26:35
ユーザならともかくコンパイルする人間にそこまで気を使ってどうするよ
981デフォルトの名無しさん:2009/01/25(日) 10:51:55
コンパイラ1つあればコンパイルできる、って方が楽だ
982デフォルトの名無しさん:2009/01/25(日) 11:34:23
>それとも、自前で実装するほうがいい?
983デフォルトの名無しさん:2009/01/25(日) 11:57:49
自前で実装すればコンパイラ1つあればコンパイルできるという状況になる。
そっちの方がいいと思うなら自前で実装した方が良い。
984デフォルトの名無しさん:2009/01/25(日) 13:17:04
ソースを公開したい場合は、
ソースはダウンロードを必要とするので
ソースのダウンロードを相手に強要することになってしまう。
985デフォルトの名無しさん:2009/01/25(日) 13:21:23
バイナリを公開したい場合は(以下略
986デフォルトの名無しさん:2009/01/25(日) 13:22:27
>>977
cに変換したの入れとけばいいし。
987デフォルトの名無しさん:2009/01/25(日) 13:25:15
>>978
libflのこと言ってるんだろうね。
BSDライセンスだから、一緒にソースを配布すればいいんだけど。
988デフォルトの名無しさん:2009/01/25(日) 23:59:14
ここ2,3日ttp://piumarta.com/software/peg/のPEG/LEGっての弄ってるけど
エラー出にくくてBNF系より楽でなんか気に入った
Windows用にビルドしたので一応UP
ttp://www.csync.net/service/file/view.cgi?id=1232894452
989デフォルトの名無しさん:2009/01/26(月) 11:32:37
気づいたら980越えてるな。
テンプレ修正要求とかあったら出してちょ。
990デフォルトの名無しさん:2009/01/26(月) 11:39:40
...電通大の(渡邊先生のところかな)compilers鯖が403のままだ。
検索したら最終講義という話題が2005年にあったようなので、
引退されたから鯖止めたのか、だとすると復帰はないかな。
991デフォルトの名無しさん:2009/01/26(月) 12:42:38
あそこは研究室にグローバルIP振って各自管理だから、
引退されたなら、ゼミを引き継いだ教授ゼミのサーバにあるかも。
992デフォルトの名無しさん:2009/01/26(月) 14:53:08
次スレ立てるまでに情報探すの無理そうだな。
http://compilers.cs.uec.ac.jp/ はウェブアーカイブを示しとくか。
http://web.archive.org/web/*/compilers.cs.uec.ac.jp/

21st Century Compilers はISBNが変わったらしい
http://www.amazon.co.jp/dp/0321210913
993デフォルトの名無しさん:2009/01/26(月) 17:51:54
>>295
アプリケーションハンガリアンを言語レベルでサポートするということかな。

ttp://local.joelonsoftware.com/mediawiki/index.php/間違ったコードは間違って見えるようにする

タイプセーフな言語の好き嫌いと同様に好みは分かれそうだけど、
好む人たちもいると思う。
私は、制限できること自体は便利そうだと思うけど、
元の型が分からないのは困る。
(Cのtypedefは無い方がいいと思っている)
994993:2009/01/26(月) 17:58:33
うぉ、>>297までしか見えていない状態だったので、
超カメレスしてしまった。。

>>974
使っているうちに欲しい機能は増えていくから、
最初からパーサジェネレータを使った方がいいと思う。
再帰下降だと左再帰の扱いが面倒だし。
yaccやbisonは古臭くて扱いにくいので、他のも見てみては。
ソースコードのきれいさで言えば、個人的にはCaperが好み。

995デフォルトの名無しさん:2009/01/26(月) 19:27:26
テンプレにPEGとPackrat parsingの話題ほしいかな。
まとまってるのはウィキペディアの解析表現文法とか。
http://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95
996デフォルトの名無しさん:2009/01/26(月) 23:07:02
さっき見たら昨日の>>988が壊れてたのでSJIS対応外してうpし直し
ttp://www.csync.net/service/file/view.cgi?id=1232978313
そのうち本家にパッチ送るけど..
997デフォルトの名無しさん:2009/01/27(火) 13:37:46
>>976
最近は違うのか?

flexをC++モードで使うとライブラリが必要ないのでオヌヌメだったりする....ってか
10年以上前の情報だけどね。
998デフォルトの名無しさん:2009/01/27(火) 13:39:05
>>974
実装したい言語のタイプによるんじゃないかなぁ。Lispっぽければパーサジェネレータいらない。
999デフォルトの名無しさん:2009/01/27(火) 13:40:40
>>972
オントロジーは面白いです、確かに。しかし、オントロジー研究者が約束した果実は
今までもたらされていないし、これからももたらされることはないでしょう。
1000デフォルトの名無しさん:2009/01/27(火) 14:40:57
>>1000にあたり意見を述べさせていただきます。
次スレは必要ないと思います。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。