「コンパイラ・スクリプトエンジン」相談室15
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2011/01/28(金) 20:33:18字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,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/
12 http://pc11.2ch.net/test/read.cgi/tech/1188688416/
13 http://pc12.2ch.net/test/read.cgi/tech/1233143342/
14 http://hibari.2ch.net/test/read.cgi/tech/1258431145/
0002デフォルトの名無しさん
2011/01/28(金) 20:33:40http://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/
0003デフォルトの名無しさん
2011/01/28(金) 20:33:55・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
0004デフォルトの名無しさん
2011/01/28(金) 20:34:10・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
0005デフォルトの名無しさん
2011/01/28(金) 20:34:35・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/
ヨーロッパ系。派手さはないが堅実。
0006デフォルトの名無しさん
2011/01/28(金) 20:35:22・コンパイラ 原理・技法・ツール 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
初心者向けの優しい解説本。
0007デフォルトの名無しさん
2011/01/28(金) 20:35:38http://www.amazon.co.jp/dp/4798114685
・ふつうのコンパイラをつくろう
http://www.amazon.co.jp/dp/4797337958
・プログラミング言語を作る
http://www.amazon.co.jp/dp/4774138959
・やさしいインタープリタの作り方入門
・やさしいコンパイラの作り方入門
http://www.amazon.co.jp/dp/487783219X
http://www.amazon.co.jp/dp/4877832203
0008デフォルトの名無しさん
2011/01/28(金) 21:45:32スレ立て乙
前スレ終盤で「漢字嫁ねカタカナ表記の方が分かり易くね?」というカキコに対して賛否あった。
で、手元に「翻訳系構成法序論」という1982年刊行の古い本があるけど、
題名で分かるように(w)徹底的に漢字を使う。この本から「さ行」の一部を引用してみる。
元の英単語は、このスレに興味を持つようなヤシなら誰でも知っているものばかり。
お前ら、対応する英単語を即答できるか?(カナでも可とする)
・算体
・算帖
・算程
・算譜
・算法
0009デフォルトの名無しさん
2011/01/28(金) 22:09:06>・『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』
> http://www.okisoft.co.jp/esc/go.html
URL が変更になっていました。
http://www.oki-osk.jp/esc/go.html
0010デフォルトの名無しさん
2011/01/29(土) 04:39:23すらすら読めるところもあるんだけどたまに引っかかって、文意を解くのに疲れる
いい本だとは思うけどね
0011デフォルトの名無しさん
2011/01/29(土) 08:28:51・算譜 プログラム
・算法 アルゴリズム
残りはわからん。
0012デフォルトの名無しさん
2011/01/29(土) 11:11:21算帖 file
算程 process
算譜 program
算法 algorithm
0013デフォルトの名無しさん
2011/01/29(土) 13:04:45譲り受けた物が手元にあるのですが、最後にピンク色の破線で切り離せるっぽい頁があったみたいなのですが、切り離されていました。
これが何だったのか気になりましてw
00148
2011/01/29(土) 13:24:01素晴らしい。全問正解だ。
>>11
それが(自分を含めて)普通の感覚だと思うよ。
ちなみにこの本では、前スレで誰かが言ってた初出の箇所は「漢字(英単語)」という表記で、
しかも巻末にまとめとして対訳表があるから、漢字だらけでも苦痛に感じられなかった。
0015デフォルトの名無しさん
2011/02/02(水) 00:51:19力押しでゴリゴリ動かしてるぜー
0016デフォルトの名無しさん
2011/02/02(水) 07:38:31構文解析分野共通の言語あるいは図解フォーマットみたいなものだから
0017デフォルトの名無しさん
2011/02/02(水) 07:59:04BNFとか見てるとなんでlexとyaccに分解されちゃうのか時々わかんなくなる(自己記述可能な言語でパーサ書いたあととか特に)
0018デフォルトの名無しさん
2011/02/02(水) 08:10:300019デフォルトの名無しさん
2011/02/02(水) 13:38:59どうしようもなく時間がかかるようになるからでない
0020デフォルトの名無しさん
2011/02/02(水) 16:15:26ツール的にはむしろyacc(bison)は更に2つに分かれてた方が助かる
状態と遷移表の抽出結果を入力として、表圧縮とソース成形の機能だけ利用したい時があるんだよね
入力内の遷移表にshift/goto/reduce以外の独自操作を定義追記出来る形ならなお良い
0021デフォルトの名無しさん
2011/02/02(水) 18:09:47BNFが使えるようになれば、言語処理系以外の
一般的なデータ構造の記述(定義)にも応用がきくから、慣れた方がいいと思う。
BNFが難しければ、最初は構文図(Syntax Diagram)でスケッチして、
それをBNFに書き換えるという練習をするのがいいと思われ。
構文図については、たとえば http://www.json.org を参照。
他にもググるといくつも例が見つかるから、自分で調べてね。
0022デフォルトの名無しさん
2011/02/02(水) 20:50:57言語定義の規模が大きくなるから機能分割しているのではないかと。
より一般的な言い方をすれば、字句解析(下位層)と構文解析(上位層)への階層化。
階層化によって、>>19が指摘した効率化(処理の高速化)という利点も生まれる。
実用的な言語レベルの規模になると、lex/yaccのようなパーサジェネレータを使わずに
実装された例としては、自分の知る限りSmalltalkしかない。(Lisp/Prolog系は別格なので除く)
しかもSmalltalkの構文は二項演算子に優先度が無い等、かなり簡素な定義になっている。
また、自己記述可能な言語としては、自分はPrologのDCG(Definite Clause Grammer)を
使うことが多いけど、定義言語の規模が小さくても意識的にscannerとparserに分割して書いているよ。
0023デフォルトの名無しさん
2011/02/02(水) 20:57:140024デフォルトの名無しさん
2011/02/02(水) 21:08:01gccは手書きだよ
0025デフォルトの名無しさん
2011/02/02(水) 21:12:28Rubyとかは、その典型例だね。
Rubyは人に優しい言語だから自分は大好きだけど、中の人にはなりたくないw
0027デフォルトの名無しさん
2011/02/02(水) 22:09:560028デフォルトの名無しさん
2011/02/02(水) 22:28:260029デフォルトの名無しさん
2011/02/03(木) 00:49:17よく知らんのだけど、
パーサジェネレータの吐いたコードを下敷きにしてるとかじゃなかったっけ?
エラーメッセージの丁寧さがうんたらかんたら
0030デフォルトの名無しさん
2011/02/03(木) 02:06:06構文エラーでも、コンパイル続けたいし。
字句解析/構文解析分割については、
字句解析ないと、BNFレベルで字句解析もやることになるから、
予約語や数値リテラルの解析なんかも全部BNFに入ってくる。
嬉しいことなんてないと思うが。
0031デフォルトの名無しさん
2011/02/03(木) 07:49:270032デフォルトの名無しさん
2011/02/03(木) 10:55:17FORTRANとCOBOLに火炎瓶投げられても知らんぞw
0033デフォルトの名無しさん
2011/02/03(木) 16:43:02ぐぐったらちょうどこの文法がPackrat Parserで受理出来ないって英語版Wikiにかいてあるね
0034デフォルトの名無しさん
2011/02/15(火) 00:13:4813.4 SSA形式での最適化のアルゴリズム の 13.4.6 定数伝播 内の、
b. 条件文を考慮したアルゴリズム の部分です(第2版ではp.367)。
図13.41 の定数伝播の例(その1)(c) にて、
k3 = φ(k2,k1);
の行を処理した結果が 未→0 となっていますが、この理由が分かりません。
この時点で
k1→1
k2→0
なので、表13.1 により、不定(c≠c') になるのではないでしょうか。
0035デフォルトの名無しさん
2011/02/15(火) 06:57:14lispのリーダーマクロみたいな仕組みで別言語に化けられる奴とかってないかな?
0036デフォルトの名無しさん
2011/02/15(火) 10:46:32言語開発フレームワークがある。
Algol 60の例
http://docs.racket-lang.org/algol60/index.html
0037デフォルトの名無しさん
2011/02/16(水) 02:23:510038デフォルトの名無しさん
2011/02/16(水) 10:43:230039デフォルトの名無しさん
2011/02/16(水) 13:27:010040デフォルトの名無しさん
2011/02/16(水) 13:29:470041デフォルトの名無しさん
2011/02/16(水) 20:25:50E -> a
E -> a b
のとき、first(E) in follow(L)なのでしょうか?
Eはepsilonを生成しないのでfollow(L) = phiだと思うのですが...
ドラゴンブックによる解説だと
(1) A -> alpha B betaの時
follow(B) := first(beta)∪follow(B)\epsilon
(2) A -> alpha B betaでepsilon in first(beta)もしくは A -> alpha Bの時
follow(A) := follow(B)∪follow(A)\epsilon
なのであっている気がするのですが...
0042デフォルトの名無しさん
2011/02/16(水) 20:28:296行目は「のとき、follow(E) in follow(L)なのでしょうか?」が正しいです。
それと、自分で組んだ実装では、follow(L)はfollow(E)を含みませんでした。
タイガーブックにある例とドラゴンブックにある例をパスしましたが、これが気になって先にすすめません。
0043デフォルトの名無しさん
2011/02/17(木) 04:45:27生成規則の右辺に出てくる終端記号以外に関してはfollow集合は作らなくても大丈夫なんですか?
004434
2011/02/17(木) 23:42:20ところで、LLVM の '条件文を考慮した定数伝播' って実装途中なんですかね。
肝心な部分の処理が足りてない気がします。
0045デフォルトの名無しさん
2011/02/18(金) 20:01:090046デフォルトの名無しさん
2011/03/08(火) 15:30:02.50毎号付属するモジュールを組み立てていくと、あなたオリジナルのコンパイラが完成します。
創刊号は字句解析器が付いて1200円。
ディアゴスティーニ♪
0047デフォルトの名無しさん
2011/03/08(火) 15:41:47.020048デフォルトの名無しさん
2011/03/08(火) 15:45:30.820049デフォルトの名無しさん
2011/03/08(火) 15:48:35.940050デフォルトの名無しさん
2011/03/21(月) 21:10:43.51----
for K の中の各項 B -> γ.δ do begin
J' := closure {[B -> γ.δ, #]}; // (1)
if a を # 以外の記号として、[A -> α.Xβ, a] が J' に含まれている then
goto(I, X) の中の項 A -> αX.β に対して、先読み a が内部生成される;
if [A -> α.Xβ, #] が J' に含まれている then
I の中の B -> γ.δ から goto(I, X) の中の A -> αX.β に先読みを伝播する;
end
----
ここで例えば拡大文法の開始部分 {[S' = .S, #]} で4.12が開始されると
その goto(I, X) の中で {[S' = S., #]} とドットの位置がひとつ右に動かされ、その状態で closure({[S' = S., #]}) と実行されるので
後半部分の closure はドットの位置が最後にあり実行される意味がなく、
それ以上伝達が起こらないと思うんですが実際のアルゴリズムはどうなんでしょうか?
自分で書いたコードでも、上記の通り伝達が S' = S. までしか起こりませんでした。
0051デフォルトの名無しさん
2011/04/03(日) 14:41:58.25参考しても(パクっても)GPLに汚染されない、無料なwindows向けのCのソースってない?
0052デフォルトの名無しさん
2011/04/03(日) 15:26:35.67http://pcc.ludd.ltu.se/building/
0053デフォルトの名無しさん
2011/04/03(日) 15:40:34.51ありがとう。
でもmingw32(gcc)のライブラリが必要っぽいんだけど、
ライブラリだけなら、汚染されないんだっけ?
0054デフォルトの名無しさん
2011/04/03(日) 15:45:39.15http://www.mingw.org/license
0055デフォルトの名無しさん
2011/04/03(日) 15:47:16.950056デフォルトの名無しさん
2011/04/03(日) 15:59:21.58なるほど、大丈夫なんですね。
w32apiの
> If distributed as a modified package, then a copy of this notice must be included.
の部分は
> This library is distributed in the hope that it will be useful, but WITHOUT WARRANTY OF ANY KIND;
> without even the implied warranties of MERCHANTABILITY or of FITNESS FOR A PARTICULAR PURPOSE.
を通知しなさいってことでOK?
0057デフォルトの名無しさん
2011/04/03(日) 16:12:55.55自分なら w32api: のパラグラフ全文を入れると思う
0058デフォルトの名無しさん
2011/04/03(日) 16:27:15.86全文入れれば間違いないのは分かるけど、文章の掛かってる部分はどこなのかと…
まぁ、取り合えず、GPLにはならないことは間違いなさそうなので、
もう少し良く考えて、分からなければ、全文にします。
0059デフォルトの名無しさん
2011/04/03(日) 16:41:19.25>文章の掛かってる部分
だから w32api: の項目全文でしょ
1. This library... の部分は免責の事しか書いていない(利用制限をしてはいけないという条項が入っていない)
2. This library... の部分だけなら、"the notice below must be included." みたいに書く筈
他人の助言を信じるにせよ信じないにせよ、Use at your own risk.
0060デフォルトの名無しさん
2011/04/05(火) 10:46:46.58手元でやるより超高速で出来そうじゃないか?
0061デフォルトの名無しさん
2011/04/05(火) 10:55:07.510062デフォルトの名無しさん
2011/04/05(火) 20:34:39.934/7 予測 http://up3.viploader.net/ippan/src/vlippan198234.jpg
発表はドイツ気象庁 http://www.dwd.de/
0063デフォルトの名無しさん
2011/04/06(水) 02:55:03.68どうして止めたんだろう
0064デフォルトの名無しさん
2011/04/13(水) 20:18:35.44コメントすら日本語入れるとinternal errorとかいってくれちゃうんだけど、
何か設定なりオプションなり加えれば通るのかしら。
0065デフォルトの名無しさん
2011/05/05(木) 18:19:53.360066デフォルトの名無しさん
2011/05/06(金) 23:53:19.792ちゃんねるってなんなの。シネよ。
0067デフォルトの名無しさん
2011/05/07(土) 14:01:54.75エイホは知らんが。
0068デフォルトの名無しさん
2011/06/10(金) 05:34:32.17どうも、うまく出来ません。
できれば、エラー復帰もできるとうれしいのですが、そういう話の前に、
エラーをうまく管理できてないので、ちゃんと管理したいんです。
エラーコード表つくって、エラー発生時はエラーコードから、メッセージを取り出せば、
管理は出来そうな気はしてます。
みなさんはどのようにしてますか?
0069デフォルトの名無しさん
2011/06/10(金) 11:11:28.61が参考になると思う。オリジナルは、
http://wiki.clean.cs.ru.nl/Documentation
0070デフォルトの名無しさん
2011/06/10(金) 14:15:01.54表をずらして保存して圧縮するアルゴリズムの一般的な名前ってなんですか?
0071デフォルトの名無しさん
2011/06/12(日) 03:55:38.580072デフォルトの名無しさん
2011/06/14(火) 07:45:32.220073デフォルトの名無しさん
2011/06/14(火) 19:09:26.75何のコメントも無しにリンク張るなよ紛らわしい。
0074デフォルトの名無しさん
2011/06/14(火) 19:20:31.080075デフォルトの名無しさん
2011/06/18(土) 15:52:19.34ありがとうございます。参考になります。
>>71 が JavaScriptで書いたPEGのパーサ
>>72 がRubyで書いた、パーサやら、LLVMのなにか
みたいですね。
0076デフォルトの名無しさん
2011/06/21(火) 01:35:14.66プログラミング歴はそれなりで、構造化されたものを読むのに
なんとなく再帰下降型のパーサを書くくらいのことはできます
情報科学については学部レベルの知識……かなぁ
仮想マシンの設計や JIT コンパイルとかやってみたいのです
0077デフォルトの名無しさん
2011/06/21(火) 03:14:19.87仮想マシンはドラゴンブックでいいかもしれんがJITだとあんまり良い書籍無いような気がする
JITで良い書籍あったら自分も読みたい
#第一版しかもってないからかもしれんけど
0078デフォルトの名無しさん
2011/06/21(火) 06:56:57.610079デフォルトの名無しさん
2011/06/21(火) 12:02:57.47具体的なことまで読みたくなると、ドラゴンブックだけでは足りない。
もちろんドラゴンブックだけで書いてしまう人もいる。
JITはインタプリタ、コンパイラ、リンカ、機械語の知識が必要になるので、
いきなりJITを目指さないほうがいいと思う。仮想機械方式にしておけば、
コンパイラからJITへの発展は、ほぼ仮想機械の書き換えで済む。
tccにJITを付けるプロジェクトが幾つかあったはずだが、今はもうないようだ。
0080デフォルトの名無しさん
2011/06/21(火) 12:06:28.43それから前に会ったとあるコンパイラ屋はドラゴンブックよりタイガーブックと言っていた
0081デフォルトの名無しさん
2011/06/21(火) 12:08:02.99http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97.3985&rep=rep1&type=pdf
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.71.3303&rep=rep1&type=pdf
0082デフォルトの名無しさん
2011/06/21(火) 12:08:57.15タイガーブックのほうが実際的だね。
ドラゴンブックは網羅的概論。
0083デフォルトの名無しさん
2011/06/21(火) 12:48:38.80http://www.amazon.co.jp/dp/012088478X/
0084デフォルトの名無しさん
2011/06/21(火) 12:58:12.070085デフォルトの名無しさん
2011/06/21(火) 21:02:38.80フロントエンドはドラゴンのほうが詳しいが、
最適化の部分はタイガーのほうが良いとか
008676
2011/06/22(水) 02:51:12.37JIT がレベル高そうな直感はありました
参考にさせて頂きつつ段階的に勉強したいと思いますです
0087天使 ◆uL5esZLBSE
2011/07/03(日) 00:41:34.13((((((((( 最近だとLLVMを触ってみるのもいいかもしれんねぇ )))))))))(キリッッッッ!!キリッッッッ!!!!キリッッッ!!キリッッ!ッッッ!
----
(((((( それから前に会ったとあるコンパイラ屋はドラゴンブックよりタイガーブックと言っていた ))))))(←キリッッッ!!キリッッ!キリッ!!!!ッッ
--------------(キリッッ
ゴミは何いってもゴミ
0088デフォルトの名無しさん
2011/07/03(日) 15:35:05.840089デフォルトの名無しさん
2011/07/04(月) 10:40:16.73355/113のような文字列を分数として認識させたいと思い、後続コンテキストを使用して
ureal {uinteger}|{numerator}\/{uinteger}
numerator {uinteger}/\/
uinteger [:digit:]+
のように定義を書いてみたのですが、
urealのルール部分でunrecognized ruleというエラーになってしまいます。
(意図しているのは、「スラッシュが続く無符号整数を分母と認識する」というものです)
ルールnumeratorが悪いのか、一時的に
ureal {uinteger}|{uinteger}\/{uinteger}
と置くとエラーは無くなるのですが、正しい書き方とはどのようなものでしょうか。
009089
2011/07/04(月) 11:57:48.68| と / では | の方が優先度が高かったため、
{uinteger2}|{numerator2}\/{uinteger2}
だと、
({uinteger2}|{numerator2})\/{uinteger2}
として解釈されていたようです。
{uinteger2}|({numerator2}\/{uinteger2})
のように括弧をつけたところエラーがなくなりました。
009189
2011/07/04(月) 12:02:36.54何度か弄っている間にnumeratorの後ろの /\/ を誤って消してしまっていて
numerator {uinteger}
になっていました。
0092デフォルトの名無しさん
2011/07/04(月) 12:06:31.36009389
2011/07/04(月) 12:15:13.40暑くて半分頭茹ってるし。へるぷ
009489
2011/07/04(月) 12:31:56.41Lex とFlex では定義の展開の方法が違います。Flex(およびPOSIXのドラフト仕様)は、
定義を展開する時に丸括弧( ) で囲みますが、Lex は囲みません。
このことは、Flex 定義では演算子`^'、`$'、`/'、`<<EOF>>'、および`<start state>'は使うことができない
ということを意味しています。
だって(マニュアル8章)。
-l コマンドオプション使ったら排他的スタート状態を使えなくなるし…。うーあー。
0095デフォルトの名無しさん
2011/07/06(水) 10:22:42.740096デフォルトの名無しさん
2011/07/06(水) 18:11:18.050097デフォルトの名無しさん
2011/07/12(火) 15:25:19.44そんなに大事とは思えないのは俺だけ?
0098デフォルトの名無しさん
2011/07/12(火) 15:47:12.360099デフォルトの名無しさん
2011/07/12(火) 17:32:18.65つまり1文字先読みだけで解析できればメモリも消費しないし、
入力ファイルを先頭からサーッとなめるだけで終わる。
現代ではぜんぜん大事ではないね。
0100デフォルトの名無しさん
2011/07/12(火) 17:38:15.85> 入力ファイルを先頭からサーッとなめるだけで終わる。
何文字先読みしようがここは変わらんだろ。
0101デフォルトの名無しさん
2011/07/12(火) 17:48:45.830102デフォルトの名無しさん
2011/07/15(金) 12:43:55.55いくつかのルールからなる正規表現の、各部分を検出するごとにアクションを実行したいのですが、
一番長い(最長一致)ルールのアクションしか実行してくれません。
このような動作をさせるのはre2cでは不可能なのでしょうか。
re2c 0.13.5で現在、以下のコマンドラインで実行しています。
re2c -i -w -o "lexer2.cpp" "lexer2.re"
0103デフォルトの名無しさん
2011/07/15(金) 14:30:29.020104デフォルトの名無しさん
2011/08/04(木) 11:29:59.04これからはウイルスを含むクラスとの差を取らないといけなくなるな。
0105デフォルトの名無しさん
2011/08/04(木) 12:34:27.810106デフォルトの名無しさん
2011/08/04(木) 13:39:08.78受理するだけなんだから。
0107デフォルトの名無しさん
2011/08/04(木) 13:52:16.060108デフォルトの名無しさん
2011/08/23(火) 14:28:26.14関数型とか手続き型とかじゃなくて、既存にない新しい型の言語を作りたいけど
そんな型はもう発見できないのでしょうか?
0109デフォルトの名無しさん
2011/08/23(火) 15:39:00.90まずは実装する腕力を付ける必要がある。
なのでまずは手続き型でも関数型でも、なんでもいいから簡単なものを実装してみること。
0110デフォルトの名無しさん
2011/08/23(火) 15:45:01.70新しい計算モデルを考えないといけないよねえ。
0111デフォルトの名無しさん
2011/08/23(火) 15:49:23.58Steele先生のConnection Machine Lispは面白かった。
立派な餅だった。
(*Lispの方じゃないよ)
0112デフォルトの名無しさん
2011/08/23(火) 16:11:23.23頑張って発明しろ
0113デフォルトの名無しさん
2011/08/23(火) 20:55:42.94これからのパラダイムと言えば、「確率的コンピューティング」かな。
http://slashdot.jp/science/article.pl?sid=09/02/11/0219213
http://slashdot.jp/hardware/article.pl?sid=11/03/23/0228212
http://slashdot.jp/developers/article.pl?sid=11/06/07/0151249
0114デフォルトの名無しさん
2011/08/27(土) 11:06:00.49キューマシンに特化したような言語はまだないと思うから、それ作ってみたらどうよ。
VMの実装も簡単な部類みたいだし。
キューマシンの研究そのものがマイナーだから、自分でいろいろ考えなきゃだけど、
それを楽しんだり発表したりしたいんだよな?
0115デフォルトの名無しさん
2011/08/27(土) 13:02:13.550116デフォルトの名無しさん
2011/08/27(土) 13:32:50.45データフロー計算やることになる。
データフロー計算は昔流行ったので、特化言語も結構ある。
昔、九州大学でやってて、九大は関数型がメインだった。
0117デフォルトの名無しさん
2011/08/28(日) 09:13:50.59重要状態とはε遷移を含む状態である。
って訳してあるけど原著を見ると
重要状態とはε以外の遷移を持つ状態である。
の誤訳だな。
ドラゴンブックの翻訳、訳者は内容わかってなくて翻訳したんだろうな。
0118デフォルトの名無しさん
2011/08/28(日) 09:21:51.31って書いてあるけど、これってnewStateの状態だから
TRUEにするっていうのは間違いですよね?
ドラゴンブック2の原著です。
0119デフォルトの名無しさん
2011/08/28(日) 10:03:31.25含む状態→含まない状態
0120デフォルトの名無しさん
2011/09/17(土) 00:56:25.04で
「最後のn個のトークンとグループが文法規則に当てはまる場合には、
それらは規則に従って組み合わされます。これを、還元(reduction)と呼びます。」
とあるのですが、最後のn個というのは複数通りの文法規則があてはまる場合
長い方と短いほうどちらになるのでしょうか?
0121デフォルトの名無しさん
2011/09/17(土) 09:05:52.810122デフォルトの名無しさん
2011/09/17(土) 17:05:32.36どうもです。
あとbisonの
a: /*空*/ |
...
っていうような
/*空*/ってどういうときマッチするんでしょうか?
一回以上の繰り返しとかを終わらせるとかくらいしかないです?
0123デフォルトの名無しさん
2011/09/18(日) 19:00:24.88例えばこういうのはどうです
f()
f(1)
f(1, 2)
関数呼び出し: 関数名 '(' 0個以上の引数 ')'
0個以上の引数: /*空*/ | 1個以上の引数
1個以上の引数: 引数 | 1個以上の引数 ',' 引数
0124デフォルトの名無しさん
2011/09/18(日) 20:02:42.21いまいち>>120のリンクにある説明での動作との対応がとれないんですが、
a: /*空*/ |
hoge
;
ってあったとき
hogeって入力があったら,
hogeが先読みスタックへつまれて、
現在スタックには何も無いので/*空*/とマッチ,
シフト還元衝突でhogeが読み込まれるってことでいいんでしょうか?
それだと5.6の還元/還元衝突がよく分からないのですが。
5.6ではsequenceとmaybewordの還元/還元衝突が起こって
先にあるsequenceが選ばれると書かれているように見えるのですが
実際にマッチするのはmaybewordみたいです。
0125デフォルトの名無しさん
2011/09/18(日) 20:41:59.28maybeword: /*空*/ | word;
にwordを入力すると、3通りの解釈の方法が生じる
スタック:(空) 先読み:word
↓空をsequenceに還元
スタック:sequence 先読み:word
↓シフト
スタック:sequence word 先読み:$
↓sequence wordをsequenceに還元
スタック:sequence 先読み:$
スタック:(空) 先読み:word
↓空をmaybewordに還元
スタック:maybeword 先読み:word
↓maybewordをsequenceに還元
スタック:sequence 先読み:word
↓シフト
スタック:sequence word 先読み:$
↓sequence wordをsequenceに還元
スタック:sequence 先読み:$
スタック:(空) 先読み:word
↓シフト
スタック:word 先読み:$
↓wordをmaybewordに還元
スタック:maybeword 先読み:$
↓maybewordをsequenceに還元
スタック:sequence 先読み:$
2種類の還元と1つのシフトが衝突している
シフトと還元ではシフトが優先されるので最後のシフトの方法が選ばれる
0126デフォルトの名無しさん
2011/09/18(日) 21:26:23.530127デフォルトの名無しさん
2011/09/18(日) 22:03:31.41どうもです。
0128デフォルトの名無しさん
2011/09/19(月) 13:35:51.05正しい日本語をつかいましょうね。
0129デフォルトの名無しさん
2011/09/19(月) 13:59:37.83恐悦至極にございます。
0130デフォルトの名無しさん
2011/09/19(月) 22:38:31.940131デフォルトの名無しさん
2011/09/23(金) 13:55:04.37意 味: 相手の厚意に大変喜び感謝すること。
0132デフォルトの名無しさん
2011/10/01(土) 14:26:37.70#includeとかは全部無視してて良いのですが。
あってもおかしくなさそうな物なんですが見つかりません。
0133デフォルトの名無しさん
2011/10/01(土) 14:50:18.010134デフォルトの名無しさん
2011/10/01(土) 14:57:06.500135デフォルトの名無しさん
2011/10/01(土) 17:03:42.510136デフォルトの名無しさん
2011/10/02(日) 00:03:44.980137デフォルトの名無しさん
2011/10/02(日) 00:09:49.41Cのみかもしれないけど
0138デフォルトの名無しさん
2011/10/02(日) 02:10:09.54今でもメインテナンスされてるbisonコードはないんじゃないだろうか。
この辺り読んでみて。
http://scottmcpeak.com/elkhound/
http://www.nobugs.org/developer/parsingcpp/
http://www.computing.surrey.ac.uk/research/dsrg/fog/FogThesis.pdf
0139デフォルトの名無しさん
2011/10/11(火) 12:50:32.08の13.静的単一代入形式(SSA形式)のp.344の図13.15
「変数の名前変えアルゴリズム」についてですが、一カ所、
プログラムの最後から二つ目のfor eachブロックが、
for each ブロックY∈child(X) do
call SEARCH(Y) /*支配木の上から下の順で名前替え*/
end for
となっているのですが、Y∈child(X)は、Y∈succ(X) の間違いではない
でしょうか?
自分の理解だと、succ(X)だと上手く動く様に思えますが、child(X)だと、
「抜け」が出てくるんじゃないかと思います。
0140デフォルトの名無しさん
2011/10/11(火) 15:19:34.230141デフォルトの名無しさん
2011/10/11(火) 21:10:47.980142デフォルトの名無しさん
2011/10/12(水) 00:20:16.65succ() と child() の定義を確認してみ。
p.339 の最後の段落。IDOM() がポイント。
succ()にしたら同じブロックを二度以上処理しちゃうよ。
0143139
2011/10/12(水) 11:28:51.85有り難うございます。succ, child, IDM については表面的には理解して
いたつもりだったんですが、今回より深い理解に到達できた様に思います。
succ()にした場合、あるブロックBから2つのブロックC1,C2に分岐し、
再度、一つのブロックDに合流する様な場合に、SEARCH(C1)とSEARCH(C2)
の両方からSEARCH(D)が呼び出されてしまうことになり、Dに対して二重に
処理が行われることになってしまいますね。
最初に、今回、理解が深まったと言った事は、直接支配のIDOM(B)が
必ず唯一、しかもBが入り口ブロック以外では、絶対1つは必ず存在する
事の重要性です。このことは、IDOM(B)によってリンクされた木である
「支配木」が、循環がないこと(合流が存在しない、親が必ず1つ)は
もちろん、必ず全てのブロックが含まれている、非常に有用な構造で
有る事を意味するんですね。
このことから、全てのブロックを「巡る(walkする)」には、支配木の子で
あるchild()に対して再帰呼び出しをすることが一つの方法である、と言う
事に気付きました。つまり、>>139の部分で、Y∈child(X) に対して、
SEARCH(Y)を呼び出していけば、必ず全てのブロックを一回づつ巡る事に
成るんですね。
しかも、実際のプログラム実行時の実行順序と同じ順序関係を満たしている
んですね。
0144139
2011/10/12(水) 11:43:15.97再帰的に呼び出して行くだけでは、全てのブロックを巡ることが出来ない
場合があるのではないか、と思ってしまったことです。
しかし、実際には、>>143 に書いたとおり、child(X)に対応した構造で
ある「支配木」は、プログラム中の全てのブロックを必ず一回づつ含む
面白い構造をしているんですね。
0145142
2011/10/12(水) 23:24:56.51最適化って、うまく動くとすっごい楽しいです。
0146デフォルトの名無しさん
2011/10/13(木) 02:39:26.68<SSA!SSA!SSA!SSA!SSA!SSA!SSA!SSA!SSA!SSA! >
∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨
、 、 、 、 、
/っノ /っノ /っノ /っノ /っノ
/ / ∧_∧ / / ∧_∧ / / ∧_∧ / / ∧_∧ / / ∧_∧
\\( )\\( )\\( )\\( )\\( )
ところで、C言語風の構文解析でBisonファイルを3つ書いて三層構造にしたんだが、こういうのって普通?
字句解析 → マクロ展開層 → プリプロセス命令解析層 → 普通の構文解析層 の順で、マクロ展開層はバッファに展開した文字列を字句解析器が読むように設定する。
0147デフォルトの名無しさん
2011/10/13(木) 04:27:44.860148デフォルトの名無しさん
2011/10/13(木) 05:30:28.890149デフォルトの名無しさん
2011/10/13(木) 12:33:03.10ありがちな話
0151デフォルトの名無しさん
2011/10/15(土) 08:46:49.81の15.レジスタ割付けのp.409の厚被覆アルゴリズムの部分で、
大体の方針は分かったのですが、細かい部分が分からないので
質問させてください。
アルゴリズムとしてi)〜iv)が書かれていますが、 特に iv)の部分が分か
りません。
ii) 循環区間グラフの左から右に向かって、厚被覆の要素の候補となりうる
生存区間を全てリストしていく.その際,どの生存区間との組み合わせで
候補となるかを記しておく.
iii) 最初に選んだ循環区間のループの最後の部分(のステップ)に到達
したとき,ii)で最後の厚点に対して選んだ生存区間に,その循環区間と
重ならないものがないときは,厚被覆は存在しない.そのようなものが
あったときは,その1つを選ぶ.
iv) iii)で選んだものから始めて、ii)とは逆向きに、ii)で作った候補
の中から厚被覆となる組み合わせを作っていく(それまで選んだものと
重なりの無いものを選んでいく).
【分からない理由】
iii)で既に最良のものが選ばれていると思えるのに、iv)ではいったい
何をしようとしているのか分かりません。既にいっぱいいっぱになっている
ように思えるのに、逆向きに選んだところで、隙間が無いのでどうしようも
ないように思えてしまいます。
ご親切な方のアドバイスをお願いします。
0152デフォルトの名無しさん
2011/10/20(木) 08:59:10.43アルゴリズム中に現れるgoto(I, X)(ただしI∋ [B→γ・δ])の結果に一致する主要項の集合がどうしても見つかりません。
自分で走らせたプログラムを実行すると、以下の様になります。
J = {
[S'→・S, #/$]
[S→・L=R, #]
[S→・R, #]
[R→・L, #]
[L→・*R, #/=]
[L→・id, #/=]
}
(1回目の試行) 「[A→α・Xβ, #]がJ'に含まれている(伝搬)」
[A→α・Xβ, #] = [S'→S・, #/$] (「#」に対して)
goto(I, X) = {[S'→S・, $]}
(2回目の試行) 「aを#以外の記号として[A→α・Xβ, a]がJ'に含まれている(内部生成)」
[A→α・Xβ, #] = [S'→S・, #/$] (「$」に対して)
goto(I, X) = {[S'→S・, $]}
(3回目の試行) 「[A→α・Xβ, #]がJ'に含まれている(伝搬)」
[A→α・Xβ, #] = [S'→L・=R, #] (「#」に対して)
goto(I, X) = {[S→・S, $], [S→・L=R, $], [S→・R, $], [R→・L, $], [L→・*R, $/=], [L→・id, $/=]}
三回目の試行で[S'→L・=R, #]がgoto(I, X)に含まれていないためエラーになります。
本を読み進めていくと「I_4の主要項L→*・Rには先読み=が内部生成され、項[L→・id, =]によってI_5のL→id・には先読み=が内部生成される」
とあるので主要項から主要項集合へのマップを考えたのですが、I_2とI_8でR→L・が重複してうまくいきません。
どなたかご教示ください。
0153デフォルトの名無しさん
2011/10/20(木) 09:11:18.99[A→α・Xβ, #] = [S'→S・, #/$]
[A→α・Xβ, #] = [S'→S・, #/$]
[A→α・Xβ, #] = [S'→L・=R, #]
はそれぞれ、
[A→α・Xβ, #] = [S'→・S, #/$]
[A→α・Xβ, #] = [S'→・S, #/$]
[A→α・Xβ, #] = [S'→・L=R, #]
です。
0154デフォルトの名無しさん
2011/10/20(木) 12:34:59.11まず説明を読んで手でやってみたら?
その後に表つきで例として載ってるんだから答合わせも楽でしょう。
0155デフォルトの名無しさん
2011/10/21(金) 14:37:42.69アルゴリズム4.12の「goto(I, X)の中の項A→αX・βに対して先読みaが内部生成される」と
「goto(I, X)の中のA→αX・βに先読みを伝搬する」はそのままの意味でJ' := closure({[B→γ・δ]});された
J'中の項としか受け取れないのですが…。
表に関しても、図4.44の伝搬元と伝搬先の対応を見るにgoto(I, X)で求めた主要項から
主要項集合への対応を見てlookaheadを伝搬させているという風にしか読めません。
その場合だと図4.42のI_2の二番目の主要項とI_8が重複してうまく動作するようには思えません。
何度も何度も申し訳ありません。理解のある方、ご教示ください。
0156デフォルトの名無しさん
2011/10/21(金) 19:03:44.24各自身につけてないとねぇ…
0157デフォルトの名無しさん
2011/10/21(金) 21:28:12.370158デフォルトの名無しさん
2011/10/22(土) 13:39:47.28コンパイラの勉強をされてる方に
今更自習の仕方をお教えするなんて大それたことを………
0159デフォルトの名無しさん
2011/10/22(土) 15:18:35.230160デフォルトの名無しさん
2011/10/22(土) 15:50:07.93一行にまとめて書いた感じ
構文なんて有って無いようなモンだ
0161デフォルトの名無しさん
2011/10/22(土) 16:19:08.05LR(1)のgotoを用いていたのが間違いだった様です。
文脈上、LR(0)の主要項集合を扱うのでLR(0)のgotoを使わなければいけませんでした。
0163デフォルトの名無しさん
2011/10/23(日) 16:02:33.07www.k.hosei.ac.jp/~nakata/
一番下にメアドあるし
0164デフォルトの名無しさん
2011/10/23(日) 22:44:20.86明確な間違いを指摘するなら結構だが、理解できないなんて理由でメールしてたら中田神に迷惑だ。
答えられる人がいなくたって仕方ないよ。
正誤表は確認しとくべきだが。
0165デフォルトの名無しさん
2011/10/23(日) 23:01:05.330166デフォルトの名無しさん
2011/10/23(日) 23:01:42.20本人に理解できないとメールで質問したら、
数回にわたって理解できるまでメールのやりとりをしてくれたよ
もちろん、どこまで理解できて、何が理解できないのか、
こういう理由でこういう事ではないかという
自分の考えを説明した上でのことだが
他にも、海外の著者にも拙い英語で質問したら、
皆さんちゃんとやりとりしてくれた
普通はこちらが真摯に質問すれば、相手も真摯に答えてくれるよ
ただ、相手も仕事や研究があって忙しいから返事に時間かかるかもしれんし、
クヌース先生みたいに秘書に任せているかもしれんが
0167デフォルトの名無しさん
2011/10/24(月) 08:59:59.160168デフォルトの名無しさん
2011/10/24(月) 09:34:03.80まともな内容であれば問題ない。
0169デフォルトの名無しさん
2011/10/24(月) 09:48:04.210170デフォルトの名無しさん
2011/10/24(月) 12:44:01.09その考え方は勿体ないなぁ
せっかくメールアドレスが公開されてるんだから、
遠慮しないで、思い切って質問してみた方がいいよ
専門書は著者も金稼ぎや頼まれて書いてる分はほんの僅かで、
ほとんどは情報を発信したくてうずうずするから書いてる
俺の恩師もそうだったが、真面目な質問は大歓迎なんだよ
0171デフォルトの名無しさん
2011/10/24(月) 13:52:34.48ただ、メールアドレスが書いてるからとかどっかの恩師が大歓迎してたからとか
そんなアホな理屈で一般的に質問OKという風潮ができるのは恐ろしい
うっかりアドレスも書けなくなるな
0172デフォルトの名無しさん
2011/10/24(月) 14:01:44.310173デフォルトの名無しさん
2011/10/24(月) 15:46:14.360174デフォルトの名無しさん
2011/10/24(月) 19:12:06.440175デフォルトの名無しさん
2011/10/24(月) 20:06:13.45その編集プロダクションでは読者からの質問には
回答義務……まではいかないけどできるだけ回答すべき、
みたいな空気だったよ。
最終的には相手が判断することでいいんじゃない?
回答がおっくうなら無視するか断ればいいんだし。
>>164 が勝手に思い込んでるだけだと思うけど
0176デフォルトの名無しさん
2011/10/24(月) 21:00:14.26個人的な意見ですが、学者は、税金で色々と支援されているので、
少なくとも同じ国の人から教えを請うた時は、それに答える義務が
存在すると私は常日頃から思っています。
そうでなくては、自国で学者を支援する意味がありません。
0177デフォルトの名無しさん
2011/10/24(月) 21:31:29.09他人から「おまえには義務がある」と言われる人を見るのは少し抵抗があるなあ。
心情的にはわかるけど語感としてキツい印象を持った。
0178デフォルトの名無しさん
2011/10/24(月) 21:33:34.02ごめん、「回答を受ける人自身」は「質問を受ける人自身」の間違いです。
0179デフォルトの名無しさん
2011/10/24(月) 21:36:46.67こわいこわい
0180デフォルトの名無しさん
2011/10/24(月) 21:42:04.24そんな義務ないよ。給料分のことはしてるから。
たぶん良質の質問、および質問者ばかり想定して
そういう事言ってるんだろうけど…
金払っていて明確な義務がある学生の中でも基地外対処に苦労してる。
質問および質問者も選別されるのは当然のこと。
それが人と人とのつながりというものですよ。
0181デフォルトの名無しさん
2011/10/24(月) 21:47:35.41自国民の役に立つ義務は必ずあるんですって。
税金で研究していますが、それだけだと、外国人でも研究成果は活用でき
てしまいますから、自国民にはせめて優先して成果が伝える義務があるん
です。
そこを勘違いしている教授が多くて感覚のズレに憤りを感じます。
0182デフォルトの名無しさん
2011/10/24(月) 21:48:47.95本も自分の利益のためではなく、国民への奉仕として出す義務があるんです。
それが嫌なら、国から研究費を貰わないで下さい。
0183デフォルトの名無しさん
2011/10/24(月) 21:51:26.70「大学はろくな事を教えないから、教育し直さなくては成らない」
と言っています。
実際的でないセンスの悪い研究や教育が多いと言うことなんですよね。
0184デフォルトの名無しさん
2011/10/24(月) 21:58:53.53無償で写真とかの著作権を放棄するとか立派だと思うけどな
0185デフォルトの名無しさん
2011/10/24(月) 22:35:45.81ないよ。そんな狭い考え方で本当に有意味な成果は生まれてこない。あなたの勘違いの方が甚だしいw
0186デフォルトの名無しさん
2011/10/24(月) 23:16:22.52真面目な質問来たら嬉しいだろう
好意で答えてくれるのはありがたい
回答を義務とか言うのはお門違い
0187デフォルトの名無しさん
2011/10/24(月) 23:50:30.86米国民以外の人間も見放題だけどな
0188デフォルトの名無しさん
2011/10/25(火) 03:38:02.33自分は真摯に著書で理解できない場合割と質問するんだ、中田先生はどうかわからないけど、
学術書の場合自分の不理解を説明した上での質問は割と答えてもらえるし、
改訂版で不理解が多かった部分に手直し入れたよって教えてもらえてうれしかったりした経験があったから軽い気持ちで書いたんだ。
元の質問者の学習態度がよかったから勧めてみたけど、スレあれちゃってごめんな。
0189デフォルトの名無しさん
2011/10/25(火) 05:33:00.41著者にもメリットあるし、いいかもね。
0190デフォルトの名無しさん
2011/10/25(火) 08:08:53.10多分そいつは他人に迷惑を一切かけない、酸素を全く消費しないで生きてる奴なんだろう。
0191デフォルトの名無しさん
2011/10/25(火) 21:27:26.14いや、あなたは正しいでしょう。書いた方も、解答できる時間があるかは別にして、率直に嬉しく思うでしょ。
0192デフォルトの名無しさん
2011/10/26(水) 00:39:31.44自国民の役に立つ義務はあっても
お前の質問に答える義務はない
いちいち一人一人相手にしてたら仕事にならん
そのために本出したり、一般向けの講演会やったりしてんだよ
0193デフォルトの名無しさん
2011/10/26(水) 00:40:59.66そもそもpanaみたいなオワコン企業の役に立つ人間を育てようとしてないから
勘違い甚だしい
0194デフォルトの名無しさん
2011/10/26(水) 01:58:06.300195デフォルトの名無しさん
2011/10/26(水) 03:57:55.590196デフォルトの名無しさん
2011/10/26(水) 07:51:02.200197デフォルトの名無しさん
2011/10/26(水) 12:18:13.77Panasonicをオワコンというなら、日本企業でオワコンで無い物はどこなの?
0198デフォルトの名無しさん
2011/10/26(水) 12:25:38.600199デフォルトの名無しさん
2011/10/26(水) 19:04:23.450200デフォルトの名無しさん
2011/10/26(水) 23:19:56.71いくらでもあるよ
もっとレベルの高い仕事をしてる会社、利益率の高い会社・・・いくらでもある
ざっと四季報にでも目を通してみたら?
実際、panaは儲かってもいないし、優秀な人も行ってないしね
一部優秀な人もいるけど、大半は作業員レベル。学歴も低い。
0201デフォルトの名無しさん
2011/10/27(木) 10:06:06.43具体的にどこ?
0202デフォルトの名無しさん
2011/10/27(木) 10:14:30.00正社員で研究・開発、と言えば、そこそこ優秀な人はいってると思うけどね。
0203デフォルトの名無しさん
2011/10/27(木) 10:15:18.230204デフォルトの名無しさん
2011/10/27(木) 10:23:49.31気付くことはないんだろう。
馬鹿は自分が馬鹿なことに気付かないらしいから。
0205デフォルトの名無しさん
2011/10/27(木) 11:27:44.490206デフォルトの名無しさん
2011/10/28(金) 00:37:21.78panaの研究・開発がレベル低いなんて言ってないよ。
「一部優秀な人」と書いたのは研究開発の人たちのつもり。
でもね、panaは連結で30万以上の社員がいるけど、そのうちの大半は
低レベルな仕事しかしてないんだよ。低レベルな仕事というのは
工場の現場のこと。こういう低レベルな仕事を抱えこんでいるかぎり
どうしようもないよ
>>201
ファナックとか、製薬全般とか、たくさんあるよ
東証一部だけでも1000以上の会社があるんだから、自分でいろんな会社調べてみたら?
低レベルな仕事をたくさん抱え込んでいる会社は図体がでかいから目立つけど、
そんなもんは日本を代表する会社じゃないよ。中身が伴ってない。でかいだけ。
テレビ作る仕事なんてもはや昔の繊維産業と同じ。オワコン。
韓国がライバルになった時点で負けたも同然。なぜなら韓国の
ほうが給料が安いから。韓国人と同レベルの仕事しかできないから
panaはオワコンなんだよ。
給料の安い韓国人と同じ仕事しかできないのに日本人の高い給料を
取るから、サムスンは黒字なのにpanaは赤字になるんだよ。
ファナックや製薬はどう?
ライバルはどこ?中国でも韓国でもないよ。
それがレベルの高い仕事をしてる証拠だよ。
こういう会社は給料は高いし、高い給料を出しても儲かってる。
0207デフォルトの名無しさん
2011/10/28(金) 08:23:52.35>ファナックとか、製薬全般とか、たくさんあるよ
現状、発展途上国が台頭してきてないとは言えるけど、ロボット作り
がPanasonicがやってることに比べてそんなに高度だとは思えないし、
製薬に関しては口に入れる物だから国内産に人気があることが大きく
影響している。
0208デフォルトの名無しさん
2011/10/28(金) 09:33:20.02俺が生涯で初めて見たロボットがパナソニックの5軸だった。
それは、博覧会で書道やってたやつだったな。
0209デフォルトの名無しさん
2011/10/28(金) 10:56:33.140210デフォルトの名無しさん
2011/10/28(金) 11:36:08.880211デフォルトの名無しさん
2011/10/28(金) 22:43:23.12でおまえはどういう仕事してるの?、自宅警備?
0212デフォルトの名無しさん
2011/10/28(金) 23:43:02.74>ロボット作りがPanasonicがやってることに比べてそんなに高度だとは思えないし、
何の根拠もなく思うとだけ言われても困るけど・・・
現実の評価はではロボットのほうが高度なんだよ。
それだけのお金をみんな現実に払ってる。
それだけファナックは儲かってる。ほかにはできない、高度な仕事だから
みんな高いお金を払ってるんだよ。
あれだけ儲かってるのに、テレビ作りみたいに簡単に真似できることなら
すぐに韓国や中国に真似されるよ。できないんだよ。
>製薬に関しては口に入れる物だから国内産に人気があること
そんなことじゃないよ
日本国内の製薬売り上げランキングでもファイザーとか
ノバルティスはベスト10に入ってるんよ。
つまり日本人も外国産の薬をたくさん飲んでる。
でも中国や韓国の薬は飲んでない。なんでかわかる?
人気の問題じゃなくて、そもそも中国や韓国にまともな製薬企業がないんだよ。
世界の製薬企業の売り上げランキングを見てみたら?
中国や韓国じゃ薬は作れないから、彼らは外国産の薬ばかり飲んでるんだよ。
>>208
そう
だからパナもテレビ作りなどというくだらない仕事を早く捨てて
高度なことだけをやったほうがいい。
ようやく捨て始めてるようだけどね。
0213デフォルトの名無しさん
2011/10/28(金) 23:48:27.370214デフォルトの名無しさん
2011/10/30(日) 11:12:35.28携帯向けのJVMは黎明期に結構頑張っていたよ。
0215デフォルトの名無しさん
2011/10/30(日) 15:26:36.740216デフォルトの名無しさん
2011/10/30(日) 16:28:53.230217デフォルトの名無しさん
2011/10/30(日) 18:11:11.180218デフォルトの名無しさん
2011/10/30(日) 22:16:43.43あれの発展系がVisualAgeJavaなんだよね、今再開しても十分魅力的だとおもうんだがだいぶ前にVA*系はとだえちゃったな
IBMって言語開発系のプロダクト凄くいいのに長続きしないの悲しいな
0219デフォルトの名無しさん
2011/10/30(日) 23:29:33.54Eclipseに引き継がれてる。
元々どの言語向けもsmalltalkで書かれていたのを、
組み込みJava用VisualAgeでJavaで書き換えたのが始まり。
>>216
http://www.bayspo.com/kurasu/kurasu8xx/kurasu807/807.html
0220デフォルトの名無しさん
2011/11/04(金) 21:23:54.20簡単な言語処理系のようなもの(基本的な制御構造・関数・ローカル変数がある程度)を作っています。
速度を追求する必要がないので、構文木を直接、再帰的に評価しています。
この評価器を
0. suspend/resume できるようにしたい。
1. ファイル入出力などを非同期に行いたい。
ため、自前でスタック相当のものを用意して非再帰的な形に書き換えられれば、と思っています。
単純な木のトラバースなら非再帰の形に書き換えられるのは理解しているのですが、
構文木の評価を非再帰的に行おうとすると、中間コードを吐く以外の方法が思いつきません。
用途的に中間コードを吐くのはちと大げさなので、もし構文木を非再帰的に評価する
良い方法がありましたら教えてください。
0221デフォルトの名無しさん
2011/11/04(金) 21:29:51.720222デフォルトの名無しさん
2011/11/04(金) 21:46:52.93構文木の「評価」がわかんないのです。具体的には例えば、
type stmt = Seq of stmt * stmt | If of expr * stmt * stmt | While of ...
みたいな木があったとして、再帰的な評価は
evalStmt(s) {
match(s) {
| Seq(s0, s1) -> evalStmt(s0); evalStmt(s1);
| If(cond, then, elze) -> if(cond) evalStmt(then) else evalStmt(elze);
| While(...) ...
....
}
}
こんな感じでできるんですが、この木を非再帰的に評価する方法が分からんです。
0223デフォルトの名無しさん
2011/11/04(金) 21:57:38.55中間コード吐けない事情があるなら同情するけど
0224デフォルトの名無しさん
2011/11/04(金) 22:11:47.58LLはよく分からないっていうか>>223が言っている通りなんじゃないかな。
0225デフォルトの名無しさん
2011/11/04(金) 22:16:59.73if 文とかがあって動的に評価されるかされないか決まる場合を考えてください。
条件の値を評価してからどっちを積むか決めなければいけないので、再帰しない条件だと、
stack.push( stmt.cond );
stack.push( new IfStmtEvaluator( stmt.then, stmt.elze ) ); // なんか if 文を実行する特殊な値を積む。
こんな感じにしないといけない。この「特殊な値」が増えてくると事実上中間コードを吐いているような状態
になってしまうのです。
0226デフォルトの名無しさん
2011/11/04(金) 22:19:37.660227デフォルトの名無しさん
2011/11/04(金) 22:56:14.75単純に
type expr = Add of expr * expr | Value of int
こんな木を評価したいとして、
func evalStmtNonRecursive( tree ) {
Stack<expr> treeStack;
Stack<int> retvStack;
treeStack.push( tree );
while( !treeStack.empty() ) {
match( treeStack.pop() ) {
Add(lhs, rhs) -> treeStack.push( new EvaluateAdd() ); treeStack.push(rhs); treeStack.push(lhs);
Value(val) -> retvStack.push(val);
EvaluateAdd() -> retvStack.push( retvStack.pop() + retvStack.pop() );
}
}
}
こんな感じのコードしか思いつかないんです。
0228デフォルトの名無しさん
2011/11/05(土) 00:22:23.31はい。それしか方法はありません。
0229デフォルトの名無しさん
2011/11/05(土) 01:02:38.12かえって大げさになるだけだと思うが
携帯か組み込み用途か?
0230デフォルトの名無しさん
2011/11/05(土) 02:08:31.610231デフォルトの名無しさん
2011/11/05(土) 14:56:22.23うーん。そうですか。もしかしたら何か賢いテクニックがあるかと思ったんですが。
> かえって大げさになるだけだと思うが
みたいですねえ。速度が全く問題にならないので、もし中間コード生成が必要なければ
そっちの方がシンプルでいいと思ったんです。現にステートの保存が必要なければ再帰的な評価器で
済んでいるわけで。
> 再帰パーサをCPS変換してみたら幸せになれるかも
CPS に変換して末尾関数呼び出しをループに置き換えると >>227 と同じような感じになりませんか?
あとでもう少し考えてみます。
0232デフォルトの名無しさん
2011/11/06(日) 00:19:06.200233デフォルトの名無しさん
2011/11/06(日) 02:19:42.200234デフォルトの名無しさん
2011/11/08(火) 03:14:01.16TXL の話題はここでいいのかな?
ttp://www.txl.ca/nabouttxl.html
0235デフォルトの名無しさん
2011/11/09(水) 08:41:25.580236デフォルトの名無しさん
2011/11/09(水) 12:20:50.43kikx 2007/12/04 23:23
>expression:
> expression relational-op additive-expression
> additive-expression
から下を LL(1) にするのは面倒ですよ。
LL(1)かどうかを考えるなら、こっちを問題にすべきなのではないでしょうか。
みずしま 2007/12/05 01:40
>>expression:
>> expression relational-op additive-expression
>> additive-expression
> から下を LL(1) にするのは面倒ですよ。
その辺は割と簡単に変形できませんか?こんな感じで。
(略)
kikx 2007/12/05 02:33
この式の文法を変換する方法は、たいていの文法の本に練習問題で載ってるので、
kmaebashiさんにちょうどいいんじゃないかなって思って書いたんだけど、
みずしまさんに答を書かれちゃった♪
http://d.hatena.ne.jp/kmaebashi/20071203
0237デフォルトの名無しさん
2011/11/11(金) 23:45:31.660238デフォルトの名無しさん
2011/11/15(火) 13:46:44.45禁止してはいけませんよね?
0239デフォルトの名無しさん
2011/11/15(火) 14:02:02.44無意味なことを許してはいけない
0240デフォルトの名無しさん
2011/11/15(火) 14:51:00.68意味は全く無いが処理コストは食うね
>>239
0回以上の繰り返しだから文法的にも間違ってはいないと思うが、エラー処理には賛成する
0241デフォルトの名無しさん
2011/11/15(火) 14:55:11.490242デフォルトの名無しさん
2011/11/15(火) 15:39:52.21(a*)* みたいになることはあるね
0243デフォルトの名無しさん
2011/11/15(火) 17:14:54.02>>239のノリでエラーにすると(((a)))も文法的に無意味だから禁止になっちゃう
効率と柔軟さのバランス次第だね
0244デフォルトの名無しさん
2011/11/15(火) 23:37:11.33>>243のようなアホがいるから仕事が増える
0245デフォルトの名無しさん
2011/11/16(水) 08:29:34.78どうやって機械的に正規化できるのかな?
ヒューリスティックでルールをいくつか適用することはできると思うが。
0246デフォルトの名無しさん
2011/11/16(水) 23:17:07.79問題ない
出来ないなら適用する文法見直し
0247デフォルトの名無しさん
2011/11/17(木) 13:13:33.15構文解析されるデータを作るのがプログラムならa**とか((a))は許さなくてもいい
0248デフォルトの名無しさん
2011/11/17(木) 18:40:22.350249デフォルトの名無しさん
2011/11/18(金) 00:10:30.470250デフォルトの名無しさん
2011/11/18(金) 13:01:36.04a**とか((a))はどう出力されるのか仕様を確認だな
0251デフォルトの名無しさん
2011/11/18(金) 15:11:51.22a**の場合はa**の形が出てこなければそう処理は変わらないな。
よってa**は許可した方がいいな。
0252デフォルトの名無しさん
2011/11/18(金) 16:31:10.300253デフォルトの名無しさん
2011/11/18(金) 17:13:07.070254デフォルトの名無しさん
2011/11/18(金) 17:13:27.330255デフォルトの名無しさん
2011/11/18(金) 17:19:58.750256デフォルトの名無しさん
2011/11/19(土) 01:14:12.51もち論
と返すところだべ
0257デフォルトの名無しさん
2011/11/24(木) 12:43:06.510258デフォルトの名無しさん
2011/12/21(水) 22:29:20.34というわけで一旦放置して落とせ。
0259デフォルトの名無しさん
2011/12/22(木) 23:18:26.57新宿の大型書店に大量に置かれていたので見てきた。
理論よりも具体例で話を進めている感じで入門者には良さそうな感じ。動物本にありがちな冗長さも少なめ。
でも買わなかった
0260デフォルトの名無しさん
2011/12/23(金) 11:15:26.68日本のコンパイラの本書いた有名なやつだな。
0261デフォルトの名無しさん
2011/12/23(金) 16:32:46.04ってかオライリーの本って特定のプログラム言語を扱うときだけ動物表紙なんだな
0262デフォルトの名無しさん
2011/12/23(金) 17:22:52.54原書のヒエログリフはカラーなのに紫と黒の二色刷りにしてくるあたりやらしい
あとプログラミング言語でなくても動物表紙なのはいっぱいあるよ
0263デフォルトの名無しさん
2011/12/28(水) 01:09:25.83RubyのMatzは大学生のころ中田先生の研究室だったんでしょ。そのことが「推薦のことば」に
書いてある。
年末年始休みにこれ読んで1つくらいおれおれ言語つくってみっかな。
0264デフォルトの名無しさん
2011/12/28(水) 01:45:23.250265デフォルトの名無しさん
2011/12/28(水) 09:14:34.620266デフォルトの名無しさん
2011/12/28(水) 11:38:03.700267デフォルトの名無しさん
2011/12/29(木) 02:03:51.770268デフォルトの名無しさん
2011/12/29(木) 08:20:42.910269デフォルトの名無しさん
2011/12/29(木) 12:54:44.870270デフォルトの名無しさん
2011/12/29(木) 13:06:51.650271デフォルトの名無しさん
2011/12/29(木) 13:58:21.74どうぞどうぞw
0272デフォルトの名無しさん
2011/12/30(金) 16:54:37.48ようだ。
0273デフォルトの名無しさん
2011/12/31(土) 20:56:32.480274デフォルトの名無しさん
2011/12/31(土) 21:12:00.01> a * b; // 掛け算ですか? いいえ、変数宣言です
名前空間の違いで判断できるから、
名前空間に対応したbison作ればいいんでは。
名前空間での切り分けってほとんどの言語で使ってるでしょ。
C言語でもtypedefで同じ式になるし。
0275デフォルトの名無しさん
2011/12/31(土) 21:12:17.910276デフォルトの名無しさん
2011/12/31(土) 21:29:09.43実装して使う人が増えたから規格で仕様を統一したんでしょw
規格が先なんてありえないっての
0277デフォルトの名無しさん
2011/12/31(土) 21:34:45.280278デフォルトの名無しさん
2011/12/31(土) 21:49:14.640279デフォルトの名無しさん
2011/12/31(土) 22:35:12.710280デフォルトの名無しさん
2012/01/01(日) 05:46:44.640281デフォルトの名無しさん
2012/01/03(火) 12:44:39.85flexがやってます。
identifier, keyword, typenameをtable lookupで区別してる。
0282デフォルトの名無しさん
2012/01/03(火) 12:48:55.73Iswim, FPは実装は計画されてなかった。
>>278
Eiffel
0283デフォルトの名無しさん
2012/01/03(火) 13:06:08.780284デフォルトの名無しさん
2012/01/03(火) 14:48:57.340285デフォルトの名無しさん
2012/01/03(火) 15:33:53.61ありがと。でもそれはもう見たけど分かりづらいので別のを探してるんだわ
0286デフォルトの名無しさん
2012/01/03(火) 16:45:04.68君が既に見た分かりづらいのを列挙してくれないか?
0287デフォルトの名無しさん
2012/01/03(火) 16:54:15.30もっと基本的なところから勉強した方が良さそう。
0288デフォルトの名無しさん
2012/01/03(火) 16:55:39.37背伸びする前に基本を勉強した方がいいと思われ
0289デフォルトの名無しさん
2012/01/03(火) 17:13:37.90かなり古い本だけどこの辺から勉強するといいと思う。
G-machineは載ってないけど、この本の関数型言語処理系の仕組みを
基本的なところから解説している日本語の本は殆ど無いので。
理論寄りならλ計算の本はたくさんあるが。
0290デフォルトの名無しさん
2012/01/03(火) 19:43:46.25「言語実装パターン」(Laguage Implementation Patterns)はでたけど
「DSL in Action」と「Domain Specific Languages」(Martin Fowler)の翻訳ってでないのかなあ?
0291デフォルトの名無しさん
2012/01/09(月) 17:59:02.48多くのesolangは規格(というかネタ)先行な気もする
0292デフォルトの名無しさん
2012/01/17(火) 00:03:18.76作ろうと思うんですけど、それほど大規模な物じゃなければ
yaccやlexを使わずに作っても、それほど大変じゃなく
作れそうですか?
それともやっぱり、yaccやlexを使わずに全部自前で
作るとなると、小規模の物でも大変ですかね?
0293デフォルトの名無しさん
2012/01/17(火) 00:14:24.19まあやってみればいいんじゃね?
あまり勧めはしないけど
0294デフォルトの名無しさん
2012/01/17(火) 00:19:23.88構文解析しない言語がお勧め。
LispとかForthとか。
0295デフォルトの名無しさん
2012/01/17(火) 00:29:56.98構文と関係あることなの?
0296デフォルトの名無しさん
2012/01/17(火) 01:30:38.38LALR(1)なら小規模な文法入力であっても状態数がSLR(1)と同じになるからやってられんよ。
それでも正準LR(1)に比べると圧倒的に少ないけど。
0297デフォルトの名無しさん
2012/01/17(火) 22:06:07.27LISPで書かれてたとかネットで見たような気がする
0298デフォルトの名無しさん
2012/01/17(火) 23:10:04.19俺はクラッシュバンディクー1はフルアセンブリだったって聞いたけど。
0299デフォルトの名無しさん
2012/01/18(水) 00:23:34.50ttp://otsune.tumblr.com/post/72504819/naughty-dog-lisp
元サイトだとURL長すぎるのでTumblrからでスマン。
0300デフォルトの名無しさん
2012/01/18(水) 02:20:52.65今ならリダイレクト先確認できる短縮サービスが沢山ある。
あとotsune死ね。
0301デフォルトの名無しさん
2012/01/18(水) 04:11:09.65ttp://bit.ly/wDhQVh
0302デフォルトの名無しさん
2012/02/10(金) 15:41:05.460303デフォルトの名無しさん
2012/02/11(土) 20:49:13.362.「明快入門 インタプリタ開発」 ソフトバンククリエイティブ
3.「言語実装パターン」 オライリージャパン
おまえらもう読んだ?
0304デフォルトの名無しさん
2012/02/12(日) 00:45:44.36PEGが楽。yaccとかlexとか分かりづらすぎconflictとか意味分からん
一方PEGは人間でも順を追って解析できるし、表現できる集合も大きい
自前で書いても結局PEGみたいなことをすることになる。
関数から関数を呼んでっていう
0305デフォルトの名無しさん
2012/02/12(日) 07:20:16.17PEGはpackratで実装することで本領を発揮するんだから。
0306デフォルトの名無しさん
2012/02/12(日) 15:01:30.88本は雑食なんでなんでも買ったり図書館行ったりするけど3はともかく1,2はおもちゃだったぞ
0307デフォルトの名無しさん
2012/02/15(水) 03:17:06.15peg -> パースしてパーサ作る
パーサ使う -> 構文木 -> 自分で辿っていろいろ実装
っていう奴。本当はパーサをコンパイルしちゃうのも考えてたけどそのまま放置
あとPEGの記述自体がパーサーになるわけだけど、論理的に最適化の余地があったりするんだよな
そういうの考えたけどやってないな
0308デフォルトの名無しさん
2012/02/15(水) 03:18:50.11思い出してきた
0309デフォルトの名無しさん
2012/02/19(日) 16:24:34.5610W30を選ぶ利点は何かありますか?
0310デフォルトの名無しさん
2012/02/21(火) 13:29:34.840311デフォルトの名無しさん
2012/02/21(火) 17:08:28.32単なる誤爆かと思ったわ。
0312デフォルトの名無しさん
2012/03/01(木) 16:41:06.360313デフォルトの名無しさん
2012/03/04(日) 10:30:27.72インタプリタ系でそういうのってないのだろうか?
0314デフォルトの名無しさん
2012/03/05(月) 11:52:49.190315デフォルトの名無しさん
2012/03/05(月) 21:16:44.51機械語に落とさないで実行すりゃいいだけじゃないの?
コンパイラ系の良書って構文解析からオプティマイズまで入ってるから基本は網羅されてるし
モダンなインタプリタ処理系は内部がVMだったりするから見かけ上インタプリタに見えるだけでやってることはコンパイラ処理系とかわらんよ。
0316デフォルトの名無しさん
2012/03/05(月) 21:44:14.740317デフォルトの名無しさん
2012/03/05(月) 21:45:45.97あんまり見かけないんだよな
0318デフォルトの名無しさん
2012/03/05(月) 22:25:56.12古いforthの本とかなら載ってると思う
0319デフォルトの名無しさん
2012/03/05(月) 23:56:53.49GCC とかだったら
goto *ip++;
とかできるんだけど。
0320デフォルトの名無しさん
2012/03/06(火) 00:17:34.51ダイレクト・スレデッドコードなら、
void (*ip)();
....
*ip++;
でいいよね。
0321デフォルトの名無しさん
2012/03/06(火) 00:32:44.03ダイレクト、インダイレクト、もう一種類なんだっけ。
0322デフォルトの名無しさん
2012/03/06(火) 00:47:41.16単にサブルーチン呼び出しに展開する簡単な Forth コンパイラとかで使われてたね。
http://en.wikipedia.org/wiki/Threaded_code
0323デフォルトの名無しさん
2012/03/06(火) 09:07:56.970324デフォルトの名無しさん
2012/03/08(木) 17:22:33.78BNFも抽象構文木もわからず力押しでやってきたけど
なんとかトークン分割と文脈チェック・解析までできた。
でもバイトコードの生成・実行は難しそうだ。
たぶんこれができればあとはなんとかなるはず。
・メモリ管理(スタック、GC)
・goto(例外、if、switch、return)
無理だったら諦めて他言語のソース吐く。
0325デフォルトの名無しさん
2012/03/08(木) 17:25:53.63マイ言語作ってみたいと思ってる口だけど、そもそも入り口の言語仕様をどうやって考えたか聞かせて
0326デフォルトの名無しさん
2012/03/08(木) 17:34:01.84教科書見るとそういう話がいろいろあるけど、今時ならデータ構造を持って、
何パスでも走らせてかまわないのが普通よね。
GCはとりあえず本もあるし、ウェブには情報がたくさんあるからそれを見る。
gotoの処理は、コードを吐きながら、今吐いてるコードのアドレスを数えておく。
飛び先の候補とかならそのアドレスを覚えておいて、あとでgotoする所でその
アドレスを書き込む。順番が逆の場合(先にgotoが出てきて、あとからその
飛び先の場所が決まる)場合は、gotoのある場所を覚えておいて、一旦ダミーの
アドレスを付けてgotoを出力してから、あとで書き直す。
と、一応書いてみたけど、BNFも抽象構文木もわからんとすると、
if (...) {
if (...) {
} else {
}
} else {
if (...) {
} else {
}
}
みたいなネストをちゃんと処理できてる?
0327デフォルトの名無しさん
2012/03/08(木) 18:54:58.49実用性とか考えてなくて、とりあえずなんでもいいから
Javaから文法削ったようなものが動けばいいと思ってる。
>>326
ネストは速度とメモリ犠牲に段階分ければ簡単。
バイトコードは時間かけて作れなかったら嫌だから
BCELとかツールでjvmとか.netを生成してもらおうと思う。
0328デフォルトの名無しさん
2012/03/08(木) 18:58:39.750329デフォルトの名無しさん
2012/03/08(木) 19:54:23.77世界一簡単に説明してるサイトない?
もちろん日本語で
0330デフォルトの名無しさん
2012/03/08(木) 20:06:38.220331デフォルトの名無しさん
2012/03/08(木) 22:52:31.94バイトコードはある物使ったほうがてっとり早いね。
遅くてもいいならフロントエンド程の手間も掛からないけれど。
jvm や .net のエンジンの性能はほとんど芸術品だよ。
0332デフォルトの名無しさん
2012/03/09(金) 00:02:15.460333デフォルトの名無しさん
2012/03/09(金) 01:13:11.15遅い、か。ゲームエンジンで使いたい人などは
LUAのように以下の条件を満たす必要があるもんね。
・Cとの連携にオーバーヘッドが小さい
・スクリプト・ランタイムの起動が早い
・JRE(一緒に配布できないようなランタイム)が必要ない
でも自分は動けばなんでもいいから、
簡単ツールに頼ってバイトコードの知識0で作る方法を選ぶよ。
0334デフォルトの名無しさん
2012/03/09(金) 01:48:17.81ちょうど >322 で出てるスレデッド・コードの wikipedia の解説には
インタプリタの核となる内部ループの実装が一通り載ってる。
後はスタック・マシンにするかレジスタ・マシンにするかだけれど
スタック・マシンなら半日で骨組みは書けるんじゃないかな。
0335デフォルトの名無しさん
2012/03/09(金) 01:49:34.930336デフォルトの名無しさん
2012/03/09(金) 09:15:59.95CFGとPEGの比較ということなら、CFGでは曖昧な文法ということになるようなものが、
PEGでは全部許されちゃうのが嫌ってのはあるかもしれないけど。
0337デフォルトの名無しさん
2012/03/09(金) 12:56:59.71そこまで理解が及んでいれば、何も困る事はないしPEG使うのだったらCFGに対する正確な理解も必要。
PEGは確かに行き当たりばったりで小さな言語を作るのには向いているかもしれないけど左再帰ができないし、
「終端記号や非終端記号の集合」としての非終端記号を構築するに当たってCFGはそこが「素朴な」集合で論理的に整理されているのに対して
PEGは「順々にマッチするかを試す」辺りが「純粋な」集合ではない。
だから人間の記述ミスに起因する構文を書いてしまった時、CFGはちゃんとエラーを出してくれるのに対してPEGはacceptされてしまう。
構文は大きくなればなる程シビアになっていくから、機械的にエラーを吐いてくれた方が人間の側としては嬉しい。
よってPEGは最初から完璧に構文が出来上がっている場合(更にCFGでいう左再帰も人間の手で予め左再帰でない構文に直しておく必要がある)に採用するべきで、
それ以外の比較的規模の大きな言語はCFGを採用するべき。
0338デフォルトの名無しさん
2012/03/09(金) 13:13:07.81ドラゴンブックに「SLRとオートマトン数が同じで表現能力がLRよりは低いけどLLよりは高いからお勧め」って書いてあったから
0339デフォルトの名無しさん
2012/03/09(金) 20:15:22.52当時は, LL から自動生成する理論的根拠が薄弱だっただけだと思う
0340デフォルトの名無しさん
2012/03/09(金) 21:48:23.71表駆動でなければ普通に再帰降下するだけだし、左再帰の除去とかはすぐに理論が確立しちゃったし。
0341デフォルトの名無しさん
2012/03/12(月) 00:16:33.08修飾子増えると一行にかなり詰め込む事になるよね。
public def hello ( @Size(min = 0, max = 100) int value)(int, int) throws IOException {
print("hello");
}
複数行にするのもタイプ量が増える。難しいな。
def hello {
-opt public
-arg (@Size(min = 0, max = 100) int value);
-ret (int, int);
-thw (IOException);
print("hello");
}
0342デフォルトの名無しさん
2012/03/24(土) 11:22:52.78データ構造って自分で作ってる?
それともライブラリーのやつ使ってる?
俺は全部作りたいからテンプレートで標準ライブラリーのやつを使ってはじめに作って
あとで自作に戻すつもりだったけれど、
インターフェイスを標準のにあわせないといけないからそこで効率の悪さが発生しそうなので
テンプレートを使わずに0からまた作ることに決定しました。
0343デフォルトの名無しさん
2012/03/24(土) 11:26:44.53それ以外は特に使ってない。
STLと同じかそれ以上の速度で完璧に書けるなら車輪の再発明してもいいんじゃね。
0344デフォルトの名無しさん
2012/03/24(土) 13:21:28.67実装すること自体や性能に興味があるなら自作するだろうし、
とにかく言語をパーズして役立てたいなら有り物使うし。
0345デフォルトの名無しさん
2012/03/24(土) 14:00:24.16まずC++の規格書を読んでポリシーを頭に叩き込まないとな。
0346デフォルトの名無しさん
2012/03/24(土) 14:42:52.09C++のtemplateなのか?
0347デフォルトの名無しさん
2012/03/24(土) 14:46:27.090348デフォルトの名無しさん
2012/03/24(土) 14:47:46.41既にあるものを使わないのは効率が悪いと思う
0349デフォルトの名無しさん
2012/03/24(土) 15:09:17.66としておいて後から変えるということだろう。
0350デフォルトの名無しさん
2012/03/24(土) 15:37:43.960351デフォルトの名無しさん
2012/03/24(土) 19:18:33.660352デフォルトの名無しさん
2012/03/24(土) 19:23:00.08少ないほうを取るだけやな
趣味なら好きなほうでいいけど、こっちは仕事で書いてんねん
0353デフォルトの名無しさん
2012/03/24(土) 19:24:46.06適わないって思うわ
特に浮動小数点をやらせたら、fadd fxch fmul・・・・って人間技では無理やからwww
局所的なやつとか、アルゴリズム的に特別な命令使うと速くなるやつとかは別な
0354デフォルトの名無しさん
2012/03/24(土) 19:33:50.40unorderedな。
0355デフォルトの名無しさん
2012/03/24(土) 19:39:03.730356デフォルトの名無しさん
2012/03/25(日) 01:25:28.76情報をプログラマが持ってる場合
別名とかが絡むとコンパイラは最適化を保守的にやらざるを得ない
0357片山博文MZボット ◆0lBZNi.Q7evd
2012/04/01(日) 15:34:29.360358営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 15:38:43.34無理そう。
0359営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 15:39:09.460360営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 15:44:37.720361営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:08:16.350362営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 21:10:22.830363営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 07:49:42.21http://d.hatena.ne.jp/kmizushima/searchdiary?of=10&word=peg
0364片山博文MZボット ◆0lBZNi.Q7evd
2012/04/02(月) 14:26:30.20IRBにRubyLexがあるから、それを利用してできるかも。
0365営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:25:16.75そういう実験もしやすいだろうね。Shed Skinはまったくpypy使ってないとはいえ。
0366営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 14:24:47.280367営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 17:58:39.130368営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:31:05.54なかなか素晴らしいサイトだが、すまんけどもっと分かりやすく
説明してるサイト無いか?w
いや、そのサイトも凄い分かりやすいけどねコードとか
0369営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:47:04.07順々にマッチングしていくだけ
0370営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:49:43.80http://d.hatena.ne.jp/kmizushima/20100203/1265183754
0371営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 12:02:14.70原文読むのが一番楽。英語の壁はあるんだけど
0372営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:18:31.06尻込みしがちだが、実は丁寧に書いてあって、一番すらすら読めると思う。
0373営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 18:50:21.99それとも「えい・やっ」で、これまでに知ってる言語からあとは思いつきでやるものなのかな?
OSの一般理論みたいに、プログラミング言語とはこういうものだ、みたいな考え方を知りたい。
0374営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:28:12.92少なくとも自分はそういう道筋を辿っている。
あと最適化だったら中田本を当たった。
0375営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 19:46:54.97工学部って消費者。数学者からすればザコ
0376営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:01:07.570377営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:43:12.01工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系工学部は文系
0378営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:53:55.380379営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 20:59:11.700380373
2012/04/07(土) 21:34:11.62とりあえずタイガーブックってのを見ようと思って尼に行ったら★2つだったorz
ドラゴンブックいっとくかw
0381営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 00:17:02.35それを言語処理系として実装する方法は違うんじゃないの
プログラミング言語のパラダイムの整理という点では
CTMCPが面白かった
0382営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 19:43:01.65ただ、ドラゴンブックに出てる最適化を本腰を入れてしたいなら、中田本の二版を買ったほうが良いと思う。
力不足だから。
0383営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 21:39:02.230384営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 00:00:32.10フロントエンドはドラゴンで、最適化部分はタイガーで
0385営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 14:43:47.37ただあの評価コメントも完全にハズレってわけでもなくて
1冊目に読む本じゃなかったってだけの話だ
0386営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 08:53:47.100387片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:01:24.680388デフォルトの名無しさん
2012/04/12(木) 17:15:15.40スクリプト系が遅いのはライブラリを実行時に毎回読み込むから
でもあいつらはガチのオブジェクト志向だから、それは本質的に必要な処理
0389片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:28:27.86少なくとも私にある。字句解析と構文解析をすっ飛ばせば
それなりに早くなると思うんだけどね。
0390デフォルトの名無しさん
2012/04/12(木) 19:09:11.700391デフォルトの名無しさん
2012/04/12(木) 22:49:19.75> でもあいつらはガチのオブジェクト志向だから、それは本質的に必要な処理
具体的にどういうこと?
0392デフォルトの名無しさん
2012/04/13(金) 00:17:14.200393デフォルトの名無しさん
2012/04/13(金) 08:45:43.79クラス定義も"実行"しないといけない。コンパイルで速くなるかもしれんが
C++とかはクラス定義をプリ実行できちゃってるから、そこには大きい差があるなって
0394デフォルトの名無しさん
2012/04/13(金) 08:56:48.84でもプロトタイプってどう最適化できるかな
0395デフォルトの名無しさん
2012/04/13(金) 09:02:38.74Ruby好きだからちょっと考えてみよっかな
クラス定義のプリ実行だけは本質的に無理だろうけど
0396デフォルトの名無しさん
2012/04/13(金) 09:03:30.25オブジェクト志向とは直行してるし、
実行時構文解析も必要じゃない。
0397デフォルトの名無しさん
2012/04/13(金) 09:15:32.85糞プログラマだな。多分そもそも速くする必要が無いと判断してるんだろうけど
0398デフォルトの名無しさん
2012/04/13(金) 09:21:22.15それで"変な"バグが出たりするとストレス溜まるもんな
代償もでかい
0399デフォルトの名無しさん
2012/04/13(金) 09:49:41.68萎えた
こういうの見る限り、Javaに協力したほうが汎用性があって良さそう。
p.tl/K7Ld
invokedynamicの速い実装方法を考える
0400デフォルトの名無しさん
2012/04/13(金) 09:57:21.94それにLispは動的な言語なのに、昔からネィティブにコンパイルした
ライブラリのコードをプリロードした実行ファイルにしていたし。
0401デフォルトの名無しさん
2012/04/13(金) 09:59:25.17JavaやJavascriptは人的リソースが豊富だからねえ。
JVMもproper tail callをサポートすればもっと言語屋の利用が増えるだろうに。
0402デフォルトの名無しさん
2012/04/13(金) 20:27:03.10perlだのphpだのぶっつぶしてRubyを主流にしたいってのもあるし
0403デフォルトの名無しさん
2012/04/13(金) 21:07:19.630404デフォルトの名無しさん
2012/04/13(金) 23:23:15.310405デフォルトの名無しさん
2012/04/14(土) 00:43:06.14"メソッドを動的にインラインバージョンにすりかえる"ってのをまずやってみる
vm_call0ってところを書き換えればいいらしい
0406デフォルトの名無しさん
2012/04/14(土) 01:28:36.210407デフォルトの名無しさん
2012/04/14(土) 01:49:23.56アイデアの詳細
bugs.ruby-lang.org/issues/6289
調べたところ古くはYARVってのが高速Rubyで、Ruby1.9で本家にマージされたらしいが
最適化ぬるいわwww。だから俺がここらで締めてやる
0408デフォルトの名無しさん
2012/04/14(土) 08:38:18.29関数のβ変換エイリアスを作ってくれや
0409デフォルトの名無しさん
2012/04/14(土) 11:41:10.25どんだけおっさんだよ
0410デフォルトの名無しさん
2012/04/14(土) 18:24:15.06Closedおつ
0411デフォルトの名無しさん
2012/04/14(土) 18:30:40.590412デフォルトの名無しさん
2012/04/15(日) 06:22:26.33小説じゃないんだから、もう少し大きい紙で1頁でもっとたくさん字が載るようにしてくれた方が使いやすいのに。
と思ったけど、英語版もこんななのか。
0413デフォルトの名無しさん
2012/04/15(日) 10:07:07.660414デフォルトの名無しさん
2012/04/15(日) 10:09:16.01そういうのは無視
0415デフォルトの名無しさん
2012/04/15(日) 10:48:05.62> 小説じゃないんだから、もう少し大きい紙で1頁でもっとたくさん字が載るようにしてくれた方が使いやすいのに。
英語版はそうなっている。
0416デフォルトの名無しさん
2012/04/30(月) 17:38:37.420417片山博文MZボット ◆0lBZNi.Q7evd
2012/05/03(木) 17:26:35.790418デフォルトの名無しさん
2012/05/08(火) 07:13:58.210419デフォルトの名無しさん
2012/05/08(火) 09:20:59.33力を入れるのが定番だったけど、ぶっちゃけコンパイラ作りというのは、
理学というより工学なので、代数学というのはそんなに大事じゃない。
0420デフォルトの名無しさん
2012/05/08(火) 13:22:58.550421デフォルトの名無しさん
2012/05/08(火) 13:36:23.19新版が出たのに、旧版も刷られ続ける本というのは相当珍しいと思うけど。
0422デフォルトの名無しさん
2012/05/08(火) 13:43:33.960423デフォルトの名無しさん
2012/05/08(火) 15:59:33.770424デフォルトの名無しさん
2012/05/08(火) 16:05:06.240425デフォルトの名無しさん
2012/05/08(火) 17:00:18.91本屋でチラ見した程度ではそこそこ良かった
0426デフォルトの名無しさん
2012/05/10(木) 18:06:27.94http://www.infoq.com/jp/news/2012/05/RubyMotion
0428デフォルトの名無しさん
2012/05/19(土) 21:52:56.35ググってみたところ、Cでダメなのは有名な話らしく真っ先に出てきました。
OCamlもちょいと試した感じではなんかダメそう。
0429デフォルトの名無しさん
2012/05/19(土) 22:28:18.79自分自身とは何を指しますか?
0430デフォルトの名無しさん
2012/05/19(土) 22:47:08.95Cで書くと(戻り値の型を書けないので仮にvoid*で代用したとして)
void *foo(int x) { return foo; }
みたいな。
OCamlで試したのは
let rec f x = f;;
とかです(エラーになりました)。
0431デフォルトの名無しさん
2012/05/19(土) 23:19:57.330432デフォルトの名無しさん
2012/05/19(土) 23:24:29.200433デフォルトの名無しさん
2012/05/19(土) 23:28:34.830434デフォルトの名無しさん
2012/05/19(土) 23:32:07.130435デフォルトの名無しさん
2012/05/20(日) 01:49:57.44typedef void *(*foo_t)(int x);
foo_t foo(int x)
{
return (foo_t)&foo;
}
int main(int argc, char *argv[])
{
foo_t f1 = foo(123);
foo_t f2 = f1(456);
return 0;
}
0436デフォルトの名無しさん
2012/05/20(日) 17:15:57.850437デフォルトの名無しさん
2012/05/22(火) 12:59:33.99無理だと思う。仮にできたとしても、返された関数は循環するだけで使い道がない。
0438デフォルトの名無しさん
2012/05/22(火) 13:36:13.280439デフォルトの名無しさん
2012/05/22(火) 22:14:58.640440デフォルトの名無しさん
2012/05/22(火) 22:17:46.33その関数の型と、返ってくる関数の型
これらは意味の上で同じなのかどうか
たまたま同じ形になってるだけじゃないのか
0441デフォルトの名無しさん
2012/05/22(火) 22:29:53.520442デフォルトの名無しさん
2012/05/22(火) 22:33:36.03ここで fのグラフは集合なん?
0443デフォルトの名無しさん
2012/05/22(火) 22:44:44.860444デフォルトの名無しさん
2012/05/22(火) 22:47:19.05そういう話出てきてしかるべきだろ
0445デフォルトの名無しさん
2012/05/23(水) 22:25:09.01解決しましたのでご報告。
OCamlに-rectypesというオプションがあるのを教わり
それでやってみるとあっさりできてしまいました。
ダメそうとか書いておいてスミマセン。
# type foo_t = int->foo_t ;;
type foo_t = int -> foo_t
# let rec f x = f ;;
val f : 'b -> 'a as 'a = <fun>
# f ();;
- : unit -> 'a as 'a = <fun>
# f 1;;
- : int -> 'a as 'a = <fun>
0446片山博文MZボット ◆0lBZNi.Q7evd
2012/05/30(水) 10:49:57.08ここでグラフというのは、関数を特徴付ける集合であるから、集合。
http://ja.wikipedia.org/wiki/%E3%82%B0%E3%83%A9%E3%83%95_(%E9%96%A2%E6%95%B0)
0447デフォルトの名無しさん
2012/06/02(土) 18:56:09.37ダウンロードできる場所しりませんか?
0448デフォルトの名無しさん
2012/06/02(土) 19:11:47.930449デフォルトの名無しさん
2012/06/02(土) 19:31:49.11http://akkera102.sakura.ne.jp/test/compiler.zip
0450デフォルトの名無しさん
2012/06/02(土) 19:36:38.36入手できました、ありがとうございました。
0451デフォルトの名無しさん
2012/06/03(日) 00:16:39.09この型推論ってどうやって解決してるんですか?
0452デフォルトの名無しさん
2012/06/05(火) 15:00:21.11無限に再帰するのを発見するものですか?
0453デフォルトの名無しさん
2012/06/05(火) 15:05:32.680454デフォルトの名無しさん
2012/06/05(火) 15:08:27.01どのようにやるかなんてことは教えてくれませんか?
0455デフォルトの名無しさん
2012/06/14(木) 19:49:29.880456デフォルトの名無しさん
2012/06/14(木) 19:51:56.700457デフォルトの名無しさん
2012/06/29(金) 10:45:27.52どうしたらいいですか?
たとえばa+b+cがa+(b+c)になるということです。
最後の文字から入力することを思いついたけど、
文字の長さが決まってないとき困ります。
0458デフォルトの名無しさん
2012/06/29(金) 11:07:34.56パーザジェネレータなら右結合に自然になるように文法を書けばいい。
0459デフォルトの名無しさん
2012/06/29(金) 11:12:59.09終端記号ってアスキー文字が一文字無駄になるんで無くしたいんですけど、
アスキー文字に使われていない数とか使えばいいですか?
0460デフォルトの名無しさん
2012/06/29(金) 13:20:50.40expr := term op expr か expr := expr op term のどちらかでしょ?
expr := expr op expr だったら、a + b + c が、(a + b) + c と a + (b + c) の
どちらなのか、構文規則から一意に決定できない。
あと LL だと expr := expr op term をそのまま実装すると無限ループに
なるから、左再帰の除去を適用する。
0461デフォルトの名無しさん
2012/06/29(金) 18:54:39.820462デフォルトの名無しさん
2012/06/29(金) 19:07:11.92演算子の結合規則を指定する事によって曖昧さと衝突を避けられるようにしたんだけど
需要ある?
0463デフォルトの名無しさん
2012/06/29(金) 20:50:02.810464デフォルトの名無しさん
2012/06/29(金) 21:03:01.42ドキュメントがないので必要ならば今から書き始めますが…。
0465デフォルトの名無しさん
2012/06/29(金) 21:41:23.93最近はPEG?が流行ってるんだっけ?
誰か教えてくれw
0466デフォルトの名無しさん
2012/06/29(金) 22:15:40.06ドキュメントにもサンプルにも、定義ファイル内でのコメントの書き方が載ってなくて
(結局//でいけたけど)
そういうあたりが色々惜しいなぁって感じるわ
0467デフォルトの名無しさん
2012/06/29(金) 22:36:11.44githubのマークダウン形式になるのですぐに終わると思いますが如何せん眠いのでどうだか分かりません。
0468デフォルトの名無しさん
2012/06/30(土) 00:04:15.64ttps://github.com/uwanosora/kp19pp
boostの使える環境でmain.cppをコンパイルすると実行ファイルができあがる。
とりあえず書式の導入だけでも書き上げたけど、生成されたhppファイルの使い方はcaperとほとんど同じだから
そっちも見て脳内補間してくれるとありがたいです。
最後に、構文を受理させる場合は「token_0」をpostしてね。
暇があったらまた書きなおすよ。
0469デフォルトの名無しさん
2012/06/30(土) 00:21:02.890470デフォルトの名無しさん
2012/06/30(土) 03:06:31.810471デフォルトの名無しさん
2012/06/30(土) 03:12:00.39後は若干の高速化(漸近的には同じオーダー)。
それともリポジトリに何が違うかを書かないとダメってこと?
0472デフォルトの名無しさん
2012/06/30(土) 03:21:32.02あなたと同じようにcaperに不満を持った人が、これを見つけられるように。
0473デフォルトの名無しさん
2012/06/30(土) 08:33:22.04なんでもいいから使ってみれ。
探せばたぶん、一般的なたいていの言語に実装があるから。
0474デフォルトの名無しさん
2012/07/11(水) 20:49:45.24個人的にBNFより好きかも
0475デフォルトの名無しさん
2012/07/12(木) 00:16:31.66C++のオブジェクトアクセスが楽なスクリプトエンジンってある?
その際スクリプトとして使う言語はJavascriptやPHPの様な
スクリプト用言語よりPerlやPython、Rubyみたいな汎用言語がよかです。
0476デフォルトの名無しさん
2012/07/12(木) 00:24:32.95Luaとか、今ならmrubyの人柱になるとか。
0477デフォルトの名無しさん
2012/07/12(木) 09:51:01.320478デフォルトの名無しさん
2012/07/12(木) 17:33:47.12PEGをBNFと比較するのは間違いです。
0479デフォルトの名無しさん
2012/07/12(木) 18:07:56.570480デフォルトの名無しさん
2012/07/12(木) 18:28:28.880481デフォルトの名無しさん
2012/07/12(木) 22:19:12.25スクリプトのランタイムもC++でないとまずい。
だから、LuaをC++でコンパイルしたものがおすすめ。
ちなみに、ビルド済みのバイナリでIDEに対応したやつは
たいていCでコンパイルしてるから要リビルド。
mrubyはC++でコンパイルできるのかな?
開発者はC++嫌いだからね。
Cのランタイム上で動作するスクリプトなら
直接オブジェクトの参照でなく
IPC機能を使わないと互換性で難儀する。
0482デフォルトの名無しさん
2012/07/12(木) 23:05:36.67Krossどうよ?
en.wikipedia.org/wiki/Kross_(KDE)
0483デフォルトの名無しさん
2012/07/13(金) 02:05:36.38kwsk
いまいちC++でコンパイルし直さなければならない理由がわからない。
0484デフォルトの名無しさん
2012/07/13(金) 02:19:39.65Bryan FordさんのPOPLの論文でも
文脈自由文法との差異について頻繁に論じられていた気がするけど
0485デフォルトの名無しさん
2012/07/13(金) 04:19:15.31言っては駄目なんだろうが、C++のオブジェクトにアクセスしたいなら、
C++からアクセスするのが一番楽だわ。
GCC系とVC系の間でもアレなのに、スクリプト言語から呼び出しとか、果てしなくはまりそう。
ヘッダファイルに直接実装されてるインラインメソッド持ったクラスとか、どうするんだって感じだし。
>スクリプト用言語よりPerlやPython、Rubyみたいな汎用言語がよかです。
汎用言語でバリバリ制御したいなら、なおのことC++でプラグイン形式にした方が良いだろう。
汎用言語の上に別の汎用言語を載せて、
上位層から下位層にフレキシブルにアクセスしたいってのは、いろいろ不毛に思える。
そもそもが意味無いっつーか。その割りに技術的に難題だらけっていう。
0486デフォルトの名無しさん
2012/07/13(金) 06:56:14.46http://d.hatena.ne.jp/moriyoshi/20091214/1260779899
0487デフォルトの名無しさん
2012/07/13(金) 07:08:26.04既にCOMってものが実現してるかならぁ
メンバー関数のポインターをラップしてテーブル化してアクセスしたり
仮想関数テーブル経由で操作するんなら処理系の壁はないぞ
0488デフォルトの名無しさん
2012/07/13(金) 16:17:12.83実際には仮想関数テーブルの何番目の関数ポインタが、どういった
・名前になっているか
・戻り値と引数の型は何か
を、スクリプト言語側が知る必要がある。
ここが大きな壁。
0489デフォルトの名無しさん
2012/07/13(金) 17:04:15.25BNFと文脈自由文法は別のものです。
かたや記法、かたや文法。
0490デフォルトの名無しさん
2012/07/13(金) 17:06:04.71>>475の質問の趣旨を全く理解してない人がいるね。
0491デフォルトの名無しさん
2012/07/13(金) 18:08:21.50スクリプトのソースがC++でビルドできるものを選んで
一緒にmakeするのがベストじゃん。
組み込み関数の作成にもboostとか使いたいしね。
0492デフォルトの名無しさん
2012/07/13(金) 20:22:17.63これのどこが便利なんだか。
クラスのメソッドを全て手動で登録とか・・・。
C++からC++を呼び出すなら、全く必要のない手間だよ。
PythonからC++で作ったパーツを呼び出したいって需要なら分かるが、
その逆に、C++で作ったフレームワークをPythonから制御したいってのは
果たしてメリットあるのかねぇ。
C++もPythonも汎用言語だから同程度には複雑だし、
手動でコンバートを書かなくちゃならなかったり、速度面で不利だったり、
コンパイラの静的型チェックが死んだり、と、
何も良いことないように思えるが。
0493デフォルトの名無しさん
2012/07/13(金) 20:47:38.020494デフォルトの名無しさん
2012/07/13(金) 22:19:01.50だれか上手に教えてくれ orz
0495475
2012/07/13(金) 22:31:17.62Krossとboost::pythonが気に入りました。
どの方法も直接C++のオブジェクトを操作ってのは難しそうですが
C++アプリの制御する分にはそれなりに楽に行けそうですね
0496デフォルトの名無しさん
2012/07/15(日) 22:32:38.76Lua は C でコンパイルしてあっても extern "C" でヘッダを読み込めば問題ないよ。
0497デフォルトの名無しさん
2012/07/15(日) 23:26:35.02データベースの使い方の事じゃなくて、プログラミング言語の文法として
0498デフォルトの名無しさん
2012/07/16(月) 02:01:54.62その制約で最適化が効くわけだけどね。
んでも
互換性の問題がないのなら新規設計で
もっと素晴らしいものが作れるように思う。
0499デフォルトの名無しさん
2012/07/16(月) 02:30:24.81こういう言い方をすると怒られそうだが、
実用上はすげー強力な正規表現だと思っていい気がする
大きく違うのは非終端記号が使えることで、
例えば括弧対応の認識のような、正規表現じゃ書けないようなものも表現できる
e <- "(" e ")" / ε
理論的にはLR(k)より強力らしいから、人工言語を扱う限りは
非力さを感じることはそうそう無いはず
その他いろいろあるけど
・選択オペレータ/が優先度付きなので、曖昧な文法が生じない
文法をいじってたらいつの間にかシフト-還元競合みたいな事は起きない
・先読みが使える
・*は貪欲マッチを行う
0500デフォルトの名無しさん
2012/07/16(月) 02:40:31.970501デフォルトの名無しさん
2012/07/17(火) 02:56:59.590502デフォルトの名無しさん
2012/07/17(火) 08:36:09.87わざわざ組み込むのなら、出来ることに制限をかけたスクリプト的な物でなければ意味がない。
0503デフォルトの名無しさん
2012/07/17(火) 20:54:44.77スクリプト前提に作られた言語は便利じゃあるが、
Blenderみたいに汎用言語でも十分な場合は多い。
わざわざ新しい言語エンジン作るだけ無駄だよ。
それから、わざわざ作業を自動化したいだけなのに
メモリーやら最適化やら気にしながら書くのも煩わしい。
ましてや、ホビーグラマー程度のユーザーに使わせるものに
聖書バリのリファレンスが必要な言語を導入するなんてオーバースペックすぎる。
0504デフォルトの名無しさん
2012/07/17(火) 22:22:49.16ありがとうございます
あとは処理形が安定してるかどうか、ですねぇ
どっかに言語処理形作るような仕事、ありませんかねぇ…
0505デフォルトの名無しさん
2012/07/18(水) 09:54:43.80まさに組み込み用と思われてた言語がどんどん汎用化して、
ほとんどCやC++やJavaやC#と変わらなくなってきてるのが問題なわけだが。
汎用用途じゃC++とかJavaに勝てるわけ無いし、
そっちの方向を追い求めても空しいっつーか。
0506デフォルトの名無しさん
2012/07/18(水) 20:06:21.76出来合いの汎用言語をスクリプトに使うんだろ。頭かてぇなぁ。
0507デフォルトの名無しさん
2012/07/18(水) 21:14:47.83元がC++ならC++のDLLを、元がJavaならjarを、
プラグイン的に読み込めるようにすれば良いだろ。
スクリプト言語側へクラスや関数を公開したり型変換を提供するための、特別なコードも必要ないし、
標準的な言語と環境だから利用者の幅も広いし枯れてるし、
開発環境もデバッガも強力だし、実行速度も速いし、良い事尽くめじゃないか。
「出来合いの汎用言語をスクリプトに使う」というところまで思考が及んでいるのに、
どうして、お手元の出来合いの汎用言語(C++やJava)で十分な事を見落としてしまうのか不思議だ
0508デフォルトの名無しさん
2012/07/18(水) 22:04:14.540509デフォルトの名無しさん
2012/07/18(水) 23:16:59.63開発環境の使用を求めるのかよ。
描画エフェクトの順番制御のためだけにEclipseやらVSインスコしろとかw
0510デフォルトの名無しさん
2012/07/18(水) 23:35:26.32選択範囲の90度方向から40%の範囲にハイライト。
ハイライト完了後選択範囲全体にlog_[10]( 閾値 )でガウシアンぼかし。
数行で書けるコードのためにコンパイルとかパッケージ化とかやっとられんわ。
0511デフォルトの名無しさん
2012/07/18(水) 23:52:37.14VSやEclipseを自分のソフトに組み込んで配布することが出来るなら、
それがベストのはずだ。
イラストレータやモデラーだって、しょぼいエディタでプログラム書きたくないわ。
本来必要なのは、C++やJavaのフリーライセンスでアプリから呼び出し可能な統合開発環境。
ブラウザで言うところのIEコンポーネントに相当するもの。
そういうものが出てきたら、組み込み用汎用スクリプト言語は、いよいよ死ぬ。
0512デフォルトの名無しさん
2012/07/19(木) 07:31:55.25どう考えても大昔からあるものを、
「そういうものが出てきたら、組み込み用汎用スクリプト言語は、いよいよ死ぬ。(キリッ)」とかw
0513デフォルトの名無しさん
2012/07/19(木) 12:46:52.46誰か使ってるのだろうか
0514デフォルトの名無しさん
2012/07/19(木) 14:54:50.38>イラストレータやモデラーだって、しょぼいエディタでプログラム書きたくないわ。
そもそも絵描きの人たちがプログラムを書きたがるとは思えないんだが。
うちでもXSIのスクリプトは絵の人じゃなくてプログラマの人が書いてるよ。
0515デフォルトの名無しさん
2012/07/19(木) 21:12:11.25まだNeXT健在の頃の話ね
0516デフォルトの名無しさん
2012/07/20(金) 10:39:59.812011年のプログラミング言語シェア、Objective-Cが増加率1位…総合ではC#が3位・Objective-Cは5位
http://kohada.2ch.net/test/read.cgi/pcnews/1326714846/
0517デフォルトの名無しさん
2012/07/20(金) 16:56:59.22大は小を兼ねるってのは迷信
無駄な機能を切り捨てないのは悪
一生使わない機能のために
セキュリティホールやリスクやアップデートの手間を増やすのは罪
0518デフォルトの名無しさん
2012/07/21(土) 01:09:18.15ブランド大好きだなって冷ややかな目で見てる。
0519デフォルトの名無しさん
2012/07/21(土) 01:11:35.320520デフォルトの名無しさん
2012/07/21(土) 01:42:03.92単純に悪いわけではないでしょ
0521デフォルトの名無しさん
2012/07/21(土) 13:31:50.72Root C++でググればいろいろ出てくるが、高エネルギー研究フレームワークの
一部として実装されてて、そういう分野じゃ基本技能として使われてる。
http://hep.planet-koo.com/index.php?g=root
http://www.quark.kj.yamagata-u.ac.jp/~miyachi/ROOT/index.html
0522デフォルトの名無しさん
2012/07/21(土) 13:39:27.410523デフォルトの名無しさん
2012/07/21(土) 16:14:19.37うん、だから、組み込み用言語がどんどん汎用言語化していく方向に難色しめしているんだよ。
汎用系はC++やJavaに任せていれば良い。
0524デフォルトの名無しさん
2012/07/21(土) 16:21:44.82そうだね。
プログラマが書くんなら、プラグイン形式にしておいて、
VSとかでコード書けたほうが良いね。
強力なデバッガやインテリセンスがあって便利。
0525デフォルトの名無しさん
2012/07/21(土) 16:26:02.25そうそう。DirectXで3Dゲームを作りたいなら、C++やC#を使えばよいだけなのにね。
マイクロソフトがヘッダを用意してくれてるから超楽チン。
わざわざ移植する必要ないよね。
0526デフォルトの名無しさん
2012/07/21(土) 16:37:29.15でも、君らはそれがとても出来ないからって、どっかのフリーの組み込み用の汎用言語の処理系を
借りてくるっていうんだろ。そんな中途半端なこと。しないほうがマシ。
お互い無駄なことに時間を使う羽目になる。
プラグインの仕様とヘッダだけ公開しておけば、それで良いんだよ。
アプリ書く人も拡張する人もコンピュータも、皆が楽。
0527デフォルトの名無しさん
2012/07/21(土) 16:59:54.81特に、「組み込み用汎用スクリプト言語」とか書かれると気持ち悪くて仕方ない
このスレの流れで言うと、こういう感じだろ表現を統一してくれ。
スクリプト用言語 = ( 組み込み用言語 or 制御用言語 )
汎用言語 = スクリプト用言語以外
汎用言語を組み込む = 汎用言語をスクリプト用途で使う
0528デフォルトの名無しさん
2012/07/21(土) 17:05:32.84所詮プラグインはプラグインで、スクリプトはスクリプトだよ。
エンドユーザーで実際にコード書ける人はいるし需要があるから
スクリプト搭載したソフトが出回ってる。特に、ここ数年は、
OOナニそれレベルだけどJavascriptで小細工できるって人が非常に増えた。
高機能なソフトだとスクリプトの需要は増えてる。
0529デフォルトの名無しさん
2012/07/21(土) 17:23:49.77スクリプト言語へのインターフェースと型変換の提供は結構面倒。
がんばってシコシコ橋渡しの部分を書いても、
載っかるのはC++やJavaとそう変わりないほど複雑な汎用スクリプト言語。
しかも、VSやEclipseのような便利なエディタも無し。
デバッガなんか有るわけ無いし、運が悪ければ、printデバッグすら無理だったり。
そんな事実を知らない人への売りにならなるんじゃないかな。
Officeのマクロのような開発環境を一式ごっそり用意できるってんなら別だが。
どうせそんな余力無いんだから、大人しく「出来合いのもの」を使えって話。
「出来合いのスクリプト言語処理系」ではなく、「出来合いの開発環境」を使えるようにしろと。
0530デフォルトの名無しさん
2012/07/21(土) 17:33:11.65そんなヤベー言語があるのか、…知らなかったぜ
メモリアライアメントがどうとかADLとか右辺値参照みたいなことを要求してくるのか、こりゃ地獄だな!
0531デフォルトの名無しさん
2012/07/21(土) 17:36:52.98なんで希望・願望を垂れ流してんの?
スクリプトエンジン組み込んだソフトリリースして一度でもユーザーから
統合開発環境が欲しいとか要望あったか?
0532デフォルトの名無しさん
2012/07/21(土) 17:57:48.94どう考えてもマトモなデバッガが無いほうが地獄だし、
大抵が動的型言語だったりするので、バグ取りはC++よりも複雑。
動的にしか型が決まらないのに、デバッガで追えないって最悪な組み合わせだな。
>>531
欲しいに決まってるだろJK。特にデバッガ。
スクリプト言語処理系を組み込むよりも、
まともな開発環境を提供するほうが余程大変だし、
しかも、開発効率は、言語仕様よりも開発環境によるところが
大きいわけだから、その辺よく考えないと。
0533デフォルトの名無しさん
2012/07/21(土) 18:14:29.45あくまでライトユーザー向けの機能でプラグインの代用品じゃないんだぞ。
0534デフォルトの名無しさん
2012/07/21(土) 18:19:36.77そもそもバグで困るような数十行も書く用途じゃねぇんだよ
0535デフォルトの名無しさん
2012/07/21(土) 18:22:35.650536デフォルトの名無しさん
2012/07/21(土) 18:39:44.48「複雑な言語はやだね」 → 「まともなデバッガがない方が地獄」 んんん?
ステップ実行と変数内容の表示とかって実装しちゃいけないの?
あれ?存在しないプログラミングコンポーネントに対して存在しないデバッグコンポーネントを引き合いに出すのはOKなんだよね?
0537デフォルトの名無しさん
2012/07/21(土) 18:40:34.59そもそもユーザーは、できるだけ書かかないで済む方法さがすし、スクリプト機能の存在自体に
不満を言ってきたやつなんて見たことないわ。多少複雑な機能なら要望に応じてこっちが対応する。
0538デフォルトの名無しさん
2012/07/21(土) 18:43:16.89「コピペ改変がしやすいスクリプト言語」
という電波を受信した
0539デフォルトの名無しさん
2012/07/21(土) 18:51:22.45保守するわけでもないに何か悪いのか?
0540デフォルトの名無しさん
2012/07/21(土) 18:59:55.42>大抵が動的型言語だったりする
別に型推論ベースの静的型付けでいいんだが何かこだわる必要あんのか?
0541デフォルトの名無しさん
2012/07/21(土) 19:08:16.93関数定義するだけでもよっぽど
引数に渡す型は、ほぼ文字か数値
そんな状態で型がどうのこうのとか・・・
0542デフォルトの名無しさん
2012/07/21(土) 20:15:28.13ではやはり組み込み向けのスクリプト言語が汎用系に向かうのは間違いですよね。
0543デフォルトの名無しさん
2012/07/21(土) 20:18:32.27スクリプト言語と何が違うんだ
0544デフォルトの名無しさん
2012/07/21(土) 20:25:02.18スクリプト用言語を用意できるならそれに越したことはない。
既存の汎用言語エンジンをスクリプト用に使ったほうが現実的だから
大体の人はそうしてるだけ。
0545デフォルトの名無しさん
2012/07/21(土) 20:38:15.56Javascriptの様にモジュールリンケージがなく
拡張しなきゃ単体で使えないスクリプト用言語を使う
ケースも増えてきてる
0546デフォルトの名無しさん
2012/07/21(土) 20:40:32.41それがどんどん複雑化してきてるけど、その方向性どうなのって話なのだが。
0547デフォルトの名無しさん
2012/07/21(土) 20:43:17.35自分のソフトは汎用言語エンジン使わず気に入るように作ればええがな
好きにしろよ
0548デフォルトの名無しさん
2012/07/21(土) 20:48:15.21他人に押し付けんなよ馬鹿馬鹿しい。
0549デフォルトの名無しさん
2012/07/21(土) 20:48:56.90シンプルって言う、スクリプト言語のメリットがなくなってきてるし、
かといって汎用ではC++やJavaに勝てるわけも無く。
どこへ向かっているんだろうね。
0550デフォルトの名無しさん
2012/07/21(土) 20:54:52.45C++やJavaを使えばよいよ。
今時のスクリプト言語は機能豊富で煩雑さはC++やJavaと大差ないし、
そのくせ開発環境は貧弱だから、これなら、
VSやEclipseが使えるC++やJavaのほうがマシだよ。
0551デフォルトの名無しさん
2012/07/21(土) 20:54:53.870552デフォルトの名無しさん
2012/07/21(土) 20:57:16.50だから他人に自分の希望を押し付けんな。
0553デフォルトの名無しさん
2012/07/21(土) 20:57:33.19使う側はVSやEclipseが使えるし、
実装する側はヘッダファイル用意するだけ。
0554デフォルトの名無しさん
2012/07/21(土) 20:58:32.72何でそんなに怒ってるの?当たり前のことを言っているだけなのに。
0555デフォルトの名無しさん
2012/07/21(土) 21:00:26.76あれか名前がDQNネームだったりするのか
0556デフォルトの名無しさん
2012/07/21(土) 21:03:16.40それとも既に後ろめたい気持ちにあって、事実を言われると気づかずにはおれないから困る人?
0557デフォルトの名無しさん
2012/07/21(土) 21:06:18.170558デフォルトの名無しさん
2012/07/21(土) 21:26:08.220559デフォルトの名無しさん
2012/07/21(土) 21:32:46.32ミドルウェアは相変わらずC++, Javaが多いとはいえ。
0560デフォルトの名無しさん
2012/07/21(土) 21:47:58.680561デフォルトの名無しさん
2012/07/21(土) 23:10:22.62各人がそれぞれの前提や想定に基づいて相手をやり込めようとしてる感じ。
そろそろ勝ち負け言い出すんじゃないの?
0562デフォルトの名無しさん
2012/07/21(土) 23:44:04.350563デフォルトの名無しさん
2012/07/22(日) 00:32:43.14自前の処理系使った時のメリットってどんなのがあった?
出来れば動機も教えてください。やっぱ組み込み機器向け?
0564デフォルトの名無しさん
2012/07/23(月) 00:37:22.26わかりやすい例として
・ブラウザをActiveX通してC++で拡張
・ブラウザをJavaScriptで拡張
前者は淘汰されつつある方式です。
0565デフォルトの名無しさん
2012/07/23(月) 02:25:18.48AutoCADとかあの辺もプラグインじゃなくてlispやvbaのスクリプト拡張だ
Photoshopも昔からプラグインが使えたが要望が多くて結局javascriptをスクリプトとして導入したし
0566デフォルトの名無しさん
2012/07/23(月) 02:33:13.28スクリプトはプラグインにならんし
プラグインはスクリプトにゃならん。
0567デフォルトの名無しさん
2012/07/23(月) 07:44:29.00セキュリティー気にしないのなら、開発自体はActiveXの方が楽だ。
0568デフォルトの名無しさん
2012/07/23(月) 17:54:38.04SRAのパワーグレスの関数がVCで書けるようになっていたが、
コンパイルオプションが/MTじゃダメだったなあ。
本体をバージョンアップしていなかったら
古いコンパイラを今でも用意しておかないとメンテできない。
0569デフォルトの名無しさん
2012/07/23(月) 20:29:58.63NaCLやJavaAppletはまだしもActiveXは無いだろ。
本質的にどうでもいいことに掛ける作業量が多すぎる。
特にCOM周辺が糞めんどい。
0570デフォルトの名無しさん
2012/07/26(木) 21:09:39.02私はポストPHPを目指してます。
0571デフォルトの名無しさん
2012/07/27(金) 20:40:26.01俺も時代に取り残されてるなぁ
0572デフォルトの名無しさん
2012/07/29(日) 16:09:13.14言語仕様とフレームワークが一体なら特化した強みもでるかもな
0573デフォルトの名無しさん
2012/07/31(火) 00:17:05.190574デフォルトの名無しさん
2012/07/31(火) 00:18:45.180575デフォルトの名無しさん
2012/07/31(火) 01:00:57.60仕様と環境の一体化は無理だろ。
0576デフォルトの名無しさん
2012/08/01(水) 15:40:37.56つsmalltal...
0577デフォルトの名無しさん
2012/08/01(水) 17:49:53.48付属のフレームワーク上で作業しているからであって、
そこから外れたら重いだけの糞環境って事になる。
VisualC++だってサードパーティーの
ライブラリで使うときはメリットを感じない。
というかviで作業したほうがラクw
0578デフォルトの名無しさん
2012/08/01(水) 19:50:34.840579デフォルトの名無しさん
2012/08/01(水) 20:14:57.840580デフォルトの名無しさん
2012/08/01(水) 22:13:16.90Visual C++にフレームワークなんて付いてないだろATL/WTL/MFCってな
ファンデーションライブラリと、.Net Frameworkのクラスライブラリを間借りできるだけ。
必要な分だけ自分で書くようなのを目指すならQtとかまともなサードのツールキットが必要だ。
0581デフォルトの名無しさん
2012/08/01(水) 22:15:19.44だれか本格的にV8でスクリプト実装してる人いる?
0582デフォルトの名無しさん
2012/08/11(土) 17:50:18.39沢山の人に使われているプログラム以外、やる必要ないと思うけど
0583デフォルトの名無しさん
2012/08/11(土) 19:48:39.960584デフォルトの名無しさん
2012/08/11(土) 20:37:53.54スクリプト自体をアプリに組み込む理由を聞いてるんだろ
0585デフォルトの名無しさん
2012/08/11(土) 21:18:50.950586デフォルトの名無しさん
2012/09/05(水) 03:03:33.110587デフォルトの名無しさん
2012/10/11(木) 08:17:22.190588デフォルトの名無しさん
2012/10/29(月) 01:56:01.81function parse(id1,id2) {
var textarea1 = document.getElementById(id1);
var textarea2 = document.getElementById(id2);
var v = textarea1.value.match(/(\/\*|\*\/|\/\/.+|"[^"]*"|'[^']*'|((\+\+|\-\-|)[_a-zA-Z][_a-zA-Z0-9]*(\+\+|\-\-|))|[\+\-\*\/\=\|\>\<\!&%]\=|\<\<\<?|\>\>\>?|\|\||&&|[\+\*\/\=\-\.\[\]\(\)\|\?!\>\<\^\$~#&%{},;:'"]| +)/g);
var t = '', i;
for(i=0;i<v.length;i++) {
t += i + ' = "' + v[i] + '"\n';
}
textarea2.value = t;
}
0589デフォルトの名無しさん
2012/10/29(月) 02:03:15.85match(/(\/\*|\*\/|\/\/.+|"[^"]*"|'[^']*'|((\+\+|\-\-|)[_a-zA-Z][_a-zA-Z0-9]*(\+\+|\-\-|))|[\+\-\*\/\=\|\>\<\!&%]\=|([0-9]+(\.[0-9]+|))|\<\<\<?|\>\>\>?|\|\||&&|[\+\*\/\=\-\.\[\]\(\)\|\?!\>\<\^\$~#&%{},;:'"]| +)/g);
0590デフォルトの名無しさん
2012/10/29(月) 08:18:19.490591デフォルトの名無しさん
2012/11/05(月) 19:57:39.480592デフォルトの名無しさん
2012/11/05(月) 20:03:22.03最初見たとき、構文解析してるのかと思って
「だからオートマトンで構文解析はできないとあれ程」とだけ書き込もうと思った。
どちらにしろ汚い。
0593デフォルトの名無しさん
2012/11/05(月) 20:36:29.570594デフォルトの名無しさん
2012/11/05(月) 21:52:30.44エスケープ一つとっても多すぎる
0595デフォルトの名無しさん
2012/11/07(水) 02:43:30.020596デフォルトの名無しさん
2012/11/14(水) 23:19:57.050597デフォルトの名無しさん
2013/01/19(土) 22:11:16.25コンパイルした後にeva相当のことを行うことはしたくない。
マクロってどういう場合にコンパイル時に解決できない場合があるか、
調べたいんだけど、その辺の議論ってどうやって調べればいいんだろう、
ゴーグルのでキーワードだけでもおしえてちょんまげ。
0598デフォルトの名無しさん
2013/01/19(土) 22:43:11.340600デフォルトの名無しさん
2013/01/21(月) 11:35:26.450601デフォルトの名無しさん
2013/03/05(火) 23:32:24.88車輪の再発明か、それとも、ハードの理解を深めるメリットがあると
見るべきか。
0602デフォルトの名無しさん
2013/03/05(火) 23:34:46.480603デフォルトの名無しさん
2013/03/05(火) 23:39:55.030604デフォルトの名無しさん
2013/03/05(火) 23:55:26.370605デフォルトの名無しさん
2013/03/05(火) 23:58:20.950606デフォルトの名無しさん
2013/03/06(水) 00:02:41.23コンパイラは今でも当然VCだろうね
0607デフォルトの名無しさん
2013/03/06(水) 01:54:55.78目的次第
0608デフォルトの名無しさん
2013/03/06(水) 02:05:06.850609デフォルトの名無しさん
2013/03/06(水) 02:22:10.54既存のバックエンドに投げるだけじゃないか
0610デフォルトの名無しさん
2013/03/06(水) 12:50:03.790611デフォルトの名無しさん
2013/03/06(水) 17:30:38.45雲海戦術なら昨今のcloud事情的にありそう
0612デフォルトの名無しさん
2013/03/08(金) 20:25:20.05C++の「仕様通りに動かない」とか...。
0613デフォルトの名無しさん
2013/03/08(金) 21:04:30.62具体的に書かないとただの悪口だぞ。すべて伝聞体だしどの仕様だかわからない
0614デフォルトの名無しさん
2013/03/08(金) 21:42:16.68WinsockでOSのバージョンごとに仕様が違う標準的な関数があるとか。
0615デフォルトの名無しさん
2013/03/09(土) 14:36:18.350616デフォルトの名無しさん
2013/03/10(日) 23:47:37.76と述べたら、
「おまいは、高級レストランで、カップめんを注文するような奴かw」
と笑われてしまった(泣)...。
0617デフォルトの名無しさん
2013/03/11(月) 00:01:19.69笑うような事ではない
0618デフォルトの名無しさん
2013/03/11(月) 00:25:46.35HDの8mmビデオ機を作りたいと言ってるような話。
しかもBASICは8mmビデオよりずっと古い。
0619デフォルトの名無しさん
2013/03/11(月) 00:28:51.32いずれにせよ現時点でBASICは仕様上すごいアイデアでもない限りありえない。
0620デフォルトの名無しさん
2013/03/11(月) 01:28:54.640621デフォルトの名無しさん
2013/03/11(月) 01:51:41.45http://www.theregister.co.uk/2013/03/09/iwd_grace_hopper/
0622片山博文MZパンク ◆0lBZNi.Q7evd
2013/03/11(月) 02:07:57.120623片山博文MZパンク ◆0lBZNi.Q7evd
2013/03/11(月) 02:47:16.140624デフォルトの名無しさん
2013/03/11(月) 03:37:23.22高速なコードは吐けるだろうけど
0625デフォルトの名無しさん
2013/03/12(火) 03:37:33.50実際上、微妙なところがあるよね
0626デフォルトの名無しさん
2013/03/12(火) 03:40:22.130627デフォルトの名無しさん
2013/03/12(火) 08:45:13.74というと?
0628デフォルトの名無しさん
2013/03/12(火) 15:09:26.52http://ja.wikipedia.org/wiki/Low_Level_Virtual_Machine
これは面白いな
0629デフォルトの名無しさん
2013/03/13(水) 05:49:26.36Linux 用に書こうかと思うんですが
どの言語で書けば協力者があらわれやすいと思いますか?
今頭にある候補はJava, C# , Python, C, C++ です
0630デフォルトの名無しさん
2013/03/13(水) 08:13:26.80iccくらいにしか負けてないでしょ?
0631デフォルトの名無しさん
2013/03/13(水) 10:00:16.01専用スレあるよ
0632デフォルトの名無しさん
2013/03/13(水) 15:13:23.37http://toro.2ch.net/test/read.cgi/tech/1211547655/
0633デフォルトの名無しさん
2013/03/15(金) 06:56:14.730634デフォルトの名無しさん
2013/03/16(土) 09:53:11.480635デフォルトの名無しさん
2013/04/10(水) 17:58:03.33クラスをバイナリ・XML・RDBに変換する言語つくりたいけど
考えただけで気が遠くなった。
0636片山博文MZパンク ◆0lBZNi.Q7evd
2013/04/18(木) 01:14:25.600637デフォルトの名無しさん
2013/04/23(火) 23:54:07.090638デフォルトの名無しさん
2013/04/24(水) 00:33:55.260639デフォルトの名無しさん
2013/04/29(月) 09:37:01.43(自作構文を含んだコード) → [自作変換ソフト] →(変換済みコード) → [既成コンパイラ]
という構造にしたいんですが
この自作変換ソフトを書くためにはML系と Haskellってどっちが簡単でしょうか?
MLはわかります。 パターンマッチの関係で他の言語は考えてませんが問題はないでしょうか?
0640デフォルトの名無しさん
2013/05/03(金) 02:17:59.52できればC、C++、Javaあたりで
0641デフォルトの名無しさん
2013/05/03(金) 05:54:18.13DFAエンジンで良ければ↓の19章はどう?
ttp://www.context.co.jp/~cond/books/algo/
0642デフォルトの名無しさん
2013/05/03(金) 06:15:15.53802行、短い! 見てみます。ありがとうございます。
0643片山博文MZパンク ◆0lBZNi.Q7evd
2013/06/04(火) 23:16:44.030644デフォルトの名無しさん
2013/06/04(火) 23:19:01.130645片山博文MZパンク ◆0lBZNi.Q7evd
2013/06/09(日) 03:15:28.90逆汗を逆コンパにするのに必要な知識を教えて下さい。
0646デフォルトの名無しさん
2013/06/09(日) 12:53:11.610647デフォルトの名無しさん
2013/06/09(日) 13:36:39.72・アドレスにラベルを割り付ける
・関数を切り分ける
・スタックフレームから関数引数・ローカル変数・戻り値を切り出す
・if/for/switchを抽出して構文化する
・DLLからロードされるシンボルを置き換える
解説しているサイトとかあるかは調べてないので知らん
どうせ defineされた定数をマクロ名に戻せないとか
構造体復元が難しいとかあるから大したことはできん
0648デフォルトの名無しさん
2013/06/23(日) 20:48:35.47陽にGC入ってるって書いてないだけでGCのコード入ってる?
0649デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANScala.js
なんかJavascriptが中間言語として凄いことになってきた。
0650デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANfdpe05.pptの18ページに実装してないリストがある。
GCも実装してないリストに含まれてる。
0651デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN最近のはやりはJSをネイティブとして扱ってJSコードをはき出す処理系ってのがあるのでその一環じゃないかと思う。
これとgoogle closureの組み合わせで効率的なJavascriptを生成する感じ
0652デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN> 最近のはやりはJSをネイティブとして扱って
いやいやw
0653デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN割とマジなんだけどなー
JSをプラットフォームとして扱う傾向にあるの
0654デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0655デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANそれでも違わないけど、Webブラウザ上のネイティブ言語としてのJSっていう扱いなんだよね。
様々なパーティがいろんな言語->JSへのコンパイルみたいな事してる。
0656デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0657デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0658デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0659デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0660デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANこのスレ的に正しい用語は
「Webブラウザ上の中間言語としての」
「いろんな言語->jsへのトランスレートみたいな事してる」
かな
0661デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN0662デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANまあ気持ちは分からなくもないが……
0663デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0664デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0665デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANその通りなんじゃないの?
ブラウザ上で動かすプログラムだとJS以外ないし。(他にあったっけ?)
ClojureScriptのサイトとか読んでもそんな感じだし、Google closureとか通す処理系みてもなんかそんなニュアンスだし。
0666デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANNode.jsやWindows Script Hostだってあるし
そもそもネイティブって何だ?って話に
0667デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANブラウザ限定でも分かりにくい用法。
0668デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANいまどきだとx86プロセッサでもx86コードを直接実行してるわけじゃなかったりするしな
0669デフォルトの名無しさん
2013/07/10(水) NY:AN:NY.ANいい加減捨てようぜアレ
0670デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN言語自体はそれほど悪くない設計だから流行るのは当然。
人が集中して処理系実装も非常に優れたものが多い。
0671デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN今更別の言語に変えるとかもう無理だからな…
別言語からの変換をするか、asm.jsみたいなアプローチをするか
0672デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN別言語からの変換だけでも結構数でてるからもうしばらくは消えないんじゃないの?
というか2.0仕様だっけ?型導入されたやつとかすら出てきそうにないのが嫌な感じ。
0673デフォルトの名無しさん
2013/08/14(水) NY:AN:NY.AN思いのほかうまく動いてしまったのだけど
これって論文にしたら怒られます?
どんな雑誌に投稿すればいいのかもわからないけど
0674デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN字句解析器作ってる間に人生終わりそうなんですけど。
lexつかったほうが良いですか?
0675デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN力技でも1週間もあれば作れると思うけど
0676デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN0677デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN字句なんて1〜2日でできるだろう。
できないとしたら、プログラミングの技能か字句解析アルゴの知識か他の何か、進め方のどこかに問題があるのだろう。そっちを明らかにした方がいい
0678デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN言って貰いたいんだろ・・・・
0679デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN正規表現の構文解析木の段階で状態数を最小にする方法
知ってるか?
0680デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.ANお前みたいな発想だから日本はダメなんだよ
0681デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN0682デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.ANlexくらい、フリーで転がっているのがあるんじゃないの。
それとも、何か、特別なこだわりがあるとか。
自作できないなら、フリーで転がっているのを使うか、
周りの経験者に聞いた方が、早いと思うよ。
字句解析の次は、構文解析が待っている。
さらに、もっと面倒なファイル作りとか、最適化も必要なのだし。
「最適化のために、頭を使う」というレベルでないと、先は長いよ。
ファイルサイズを、極限まで小さくすることにこだわるか、あるいは、
ともかく、完成させることを目指して、最適化は、後の研究課題にするとか、
コンパイラ作りをする連中は、主に、その辺で頭をひねったり、悩んだり
しているのではないかと推測されるから。
0683デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN自作言語なの?
・識別子・キーワード
・数値
・文字列
・コメント
・その他記号・演算子
※必要に応じて改行処理
こんだけじゃないの?
0684デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.ANパーサで解析させちゃおうyo
0685デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.AN0686デフォルトの名無しさん
2013/08/22(木) NY:AN:NY.ANどんな文法なのかでまるで苦労が違うぞ
字句解析と構文解析とが綺麗に切り分けできない言語だったりしてないか?
IF IF=THEN THEN THEN=IF ELSE ELSE=THEN END IF
だっけ?PL/Iで悪名高い文は
0687デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.AN文脈によってキーワードが変わったりするのか
0688デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.AN作っているのは字句解析器じゃなくて
字句解析器生成系っすよ
0689デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.AN>>674 には字句解析器作ってるって書いてあるから
言葉通りに字句解析器作ってるんだと思った
0690デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.ANスクリプトコンパイラーを作る位なんだけど
本格的な言語コンパイラー作ろうと思ったら
lexみたいな解析器生成プログラムとか自作するのが普通?
いまは言語仕様が小さいこともあって、オートマトンみたいなの
力業で手書き
言語仕様はJavaScriptもどきなんだけど、生成プログラムの作り方が
良く分かってないのと、ECMAScriptの仕様の範囲くらいなら
いまのまま力業で実装ってのもありかもって思ってるんだけど
0691デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.AN一度書けば終わりでもう二度と変更しないってんなら、どれだけ大きくてどれだけメンテしづらくても、まぁ、どうってことない
仕様変更がよくあるなら、なるべく変更しやすい形、そうするとlexみたいなのが一番手軽に変えられるから、そうなるんじゃない
0692デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.ANエディタの構文?ハイライトに対応できる範囲で小さく作ればいい
0693690
2013/08/23(金) NY:AN:NY.AN一応使わないかもだけどlex系の作り方みたいなのは
少し勉強しておきたいな
コンパイラー系は中田育男氏の本斜め読みしただけなんだけど
lex系の処理とかはやっぱりソース読むしか無いのかな?
細かい解説なしに理解出来る気がしない
0694デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.ANそれがわかれば後は混ぜて炒めて塩ふるだけってぐらいに思えるだろう。
0695デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.AN言語は素のJavaScriptにしておいて
どうしてもやりたいことだけJSとのインターフェースクラス作るのが
それを扱う第三者にとっては一番便利だよ
「スクリプトエンジン」って言葉の意味、よく噛み締めてみると
そういう結論になると思う
0696デフォルトの名無しさん
2013/08/23(金) NY:AN:NY.AN0697デフォルトの名無しさん
2013/08/24(土) NY:AN:NY.AN意外とできあがりに差がつきそうな工程だなw
0698デフォルトの名無しさん
2013/08/24(土) NY:AN:NY.AN0699デフォルトの名無しさん
2013/08/24(土) NY:AN:NY.ANドラゴンのままじゃ遅くて使い物にならないから
改良してるけど。
0700デフォルトの名無しさん
2013/08/24(土) NY:AN:NY.AN0701デフォルトの名無しさん
2013/08/24(土) NY:AN:NY.AN言語実装パターンは目次読んだらなんだかよさそうでした
電子版もあるし、翻訳技術書としてはかなり安めだし
これ読んでみようかな
ドラゴンは定番みたいだけど難しそうな印象、出版も少し古め?
0702デフォルトの名無しさん
2013/08/25(日) NY:AN:NY.ANろくにコメントの入ってない「ソース丸ごと掲載」ってのが
苦手な俺には特にありがたい
0703デフォルトの名無しさん
2013/09/01(日) 23:05:37.42このpeg/legっての触ったことある人いますか?
ちょっとだけ遊んでみたんだけど、トークンの位置を扱う方法が分からないんで教えて欲しいです
とりあえずアクションの中でyytextと一緒に行番号と列番号を表示したい
0704デフォルトの名無しさん
2013/09/04(水) 16:30:46.02そっちの説明を探せばたくさん出てくるはず
flex+bisonでもいい
0705デフォルトの名無しさん
2013/09/04(水) 19:00:06.77しぶとく続いてたんだな
0706デフォルトの名無しさん
2013/09/12(木) 19:48:08.44なりすぎる傾向があるので、手書きしたほうがいいような気がした。
もちろんいろいろ工夫する余地はあるんだけど、手書きする手間をかけても良い部分と感じる。
逆に構文解析器は自動生成でもいいかなと思う。
0707デフォルトの名無しさん
2013/09/25(水) 16:18:58.07例えば、
var s = "";
for(var i=0; i<1000; i++) {
s = "s" + s + i + "e";
}
のようなコードをCやほかの言語で実行しても
V8エンジンほど速くはならないのですが、
V8エンジンは内部でどういう最適化をしているのでしょうか?
0708デフォルトの名無しさん
2013/09/25(水) 16:39:07.74配列処理の最適化した方が良い
0709デフォルトの名無しさん
2013/09/25(水) 17:40:52.820710デフォルトの名無しさん
2013/09/25(水) 21:02:34.660711デフォルトの名無しさん
2013/10/12(土) 02:00:43.76関係無けど、こういう原理的にはコンパイル時に決定できる最適化関係はV8エンジンは異様に強いよね
0712デフォルトの名無しさん
2013/10/12(土) 19:19:47.74Cでどんなコード書いたのか気になるところ
0713707
2013/10/12(土) 23:34:43.11#include <stdio.h>
char buf1[1000000];
char buf2[1000000];
char *bench(int n)
{
int flag = 0;
int i;
char *p1, *p2;
buf1[0] = '\0';
buf2[0] = '\0';
for(i=0; i<n; i++) {
if(flag) {
flag = 0;
p1 = buf2;
p2 = buf1;
} else {
flag = 1;
p1 = buf1;
p2 = buf2;
}
sprintf(p1, "s%s%de", p2, i);
}
return flag ? p2:p1;
}
続く
0714デフォルトの名無しさん
2013/10/12(土) 23:35:36.22int main()
{
int i;
for(i=0; i<2000; i++) {
printf("%s\n", bench(i));
}
return 0;
}
0715デフォルトの名無しさん
2013/10/12(土) 23:36:21.05function bench(n) {
var s = "";
for(var i=0; i<n; i++) {
s = "s" + s + i + "e";
}
return s;
}
for(var i=0; i<2000; i++) {
print(bench(10));
}
0716デフォルトの名無しさん
2013/10/12(土) 23:40:38.09OS: Fedara 19
CPU: Core2 Duo T7500 (2.20 GHz)
gcc 4.8.1
glibc 2.17
v8 3.14.5.10
コンパイルオプション
gcc -O2 -march=native bench.c
結果
time ./a.out > /dev/null
real 0m12.917s
user 0m12.900s
sys 0m0.010s
V8結果
time d8 bench.js > /dev/null
real 0m0.063s
user 0m0.044s
sys 0m0.012s
こんなに違うのですがどういう最適化をしているのでしょうか
0717デフォルトの名無しさん
2013/10/13(日) 01:07:39.01V8処理系が自動的にメモ化しているのではないかと思われ
def bench(n)
s = ""
for i in 0..(n - 1)
s = "s" + s + i.to_s + "e"
end
s
end
MEMO_BENCH = Hash.new { |hash, key| hash[key] = bench(key) } # メモ化
def memo_bench(n)
MEMO_BENCH[n]
end
def run(n)
t0 = Time.new
for i in 1..n
yield
end
t1 = Time.new
p (t1 - t0)
end
N = 2000
run(N) { bench(10) }
# => 0.358945
run(N) { memo_bench(10) }
# => 0.016584
0718デフォルトの名無しさん
2013/10/13(日) 08:14:54.39JSがbench(10)なのはここに書き込む際のミス?
bench()内のループの実効回数が100倍くらい違ってくるんだけど。
0719デフォルトの名無しさん
2013/10/13(日) 12:45:35.760720デフォルトの名無しさん
2013/10/13(日) 14:54:29.45インライン展開が効かない
2000回のループをひとまとめにすることは出来ないしdenchの
呼び出しのsprintfの引数に与える変数をコンパイル時に決定することも出来ない
対して、JavaScpiptのコードは組み込み関数なので
実質的に全てを展開可能で、最大限に最適化した場合に
print("s0e\ns1e\n......
のような一行だけ実行するかも知れない
Cで最適化が効くように書く事は可能かもしれない
ただ、言語に組み込まれた組み込み関数がある事は
最適化にとって有利なのは間違いないだろう
少なくとも例示された書き方は、Cの速度を評価するには
余りに不適切な書き方ではあるし、Cで意図した処理を
JavaScriptより高速に書くことは常に可能ではある
(手動最適化を含める必要がある場合はあるかも知れない)
0721デフォルトの名無しさん
2013/10/13(日) 15:29:41.09>Cで意図した処理をJavaScriptより高速に書くことは常に可能ではある
Rubyにはクロージャとしてのブロックがあるので、
>>717で示したようにメモ化を用いた高速化は容易に実装できる
Cの場合にはクロージャが無いからRuby同様なメモ化は実装できないが、
代わりに「遅延データ構造」という手法を用いれば実装できる
ただし、遅延データ構造による実装が「常に可能である」か否かは知らない
おそらく対象が何らかの代数構造を満たす必要があるだろう
少なくとも今回のお題の(対象としての)文字列はモノイドなので、これを満たす
0722デフォルトの名無しさん
2013/10/13(日) 20:14:13.25ではbench(10)をbench(i)になおした以下のコードもV8 Engineではメモ化されるのでしょうか。
これでも先ほどのC言語のコードより速くなった(0.462s)のですがどのような最適化によると思われますか?
function bench(n) {
var s = "";
for(var i=0; i<n; i++) {
s = "s" + s + i + "e";
}
return s;
}
for(var i=0; i<2000; i++) {
print(bench(i));
}
0723デフォルトの名無しさん
2013/10/14(月) 06:59:38.53for(var i = 2000; i-- < 2000; ) { print(bench(i)); }
これで実行時間が変わらないなら事前計算された文字列をハッシュテーブルから
引いてるんじゃない?
大幅に遅くなるなら、実行結果をキャッシュして次の計算に使用してるんでしょ。
bench(10)の結果はbench(9)の結果を使って計算できるんだしさ。
そういう風にCで作ったら、bench()呼ぶ毎にmallocでメモリ確保しても
ゴミCPU(C-50)で853msだったし。
0724デフォルトの名無しさん
2013/10/14(月) 08:13:36.020725デフォルトの名無しさん
2013/10/14(月) 08:53:14.950.168sでした
事前計算というのはどういう手法なんでしょうか?
0726デフォルトの名無しさん
2013/10/14(月) 09:06:49.52http://codepad.org/CZldxktk
$ gcc -O2 -march=native main.c -o main
$ time ./main >/dev/null
real 0m0.001s
user 0m0.000s
sys 0m0.000s
こうだった
0727デフォルトの名無しさん
2013/10/14(月) 09:23:47.57http://codepad.org/hiJz0zt5
こうだな
real 0m0.063s
user 0m0.061s
sys 0m0.001s
printf呼び出しが冗長だから、それを少なくするように書けば
いくらでも速くなると思う。(メモリーとの兼ね合い)
多分処理時間の大部分はIOで食ってると思う
これを取り除くとCPU時間はほとんど0に近くなるんじゃ無いかな
0728デフォルトの名無しさん
2013/10/14(月) 09:26:01.91それ実行結果違わね?
>>725
むしろ速くなってるね。
コンパイル時に引数に対応した文字列のテーブルを作っておいて
bench内ではテーブル引いて返すだけって意味で事前計算って言った。
たぶん717のやってることだと思うんだけど、こういう言語
触ったことないからわからん。
0729デフォルトの名無しさん
2013/10/14(月) 09:38:24.69[30, 40]行目をこれと交換して
char* p2;
p = buf;
p2 = buf + n;
for(i = 0; i < n; ++i) {
*p++ = 's';
_itoa(i , &p2);
*p2++ = 'e';
}
*p2++ = '\0';
puts(buf);
0730デフォルトの名無しさん
2013/10/14(月) 09:39:37.870731デフォルトの名無しさん
2013/10/14(月) 09:40:37.010732727
2013/10/14(月) 09:59:49.35thx
40行目のnullターミネィトだけ必要ですね
putsの方が速いか
0733デフォルトの名無しさん
2013/10/14(月) 10:04:40.09人間が処理を理解して工夫すれば、
このようにとても早いアルゴリズムに直せると思うのですが、
V8のスクリプトエンジンなどは's'の並びがbufからbuf+nまで連続することに
あらかじめ気づくのでしょうか?
0734デフォルトの名無しさん
2013/10/14(月) 10:21:59.47std::string s;
for(int i = 0; i < n; ++i) {
s = 's' + s;
std::ostringstream os;
os << i;
s += os.str();
s += 'e';
}
とかやってみたけどさ、全然遅いのよね。
速いアルゴリズムに代えられることに気付いているとしか思えない速さだと思うよ。
この分野さっぱりだからさ、アドバイスはできないんだけどね。ごめんね。
0735727
2013/10/14(月) 11:04:15.70http://codepad.org/rSzsp8sE
これで良いんだよね?
0736デフォルトの名無しさん
2013/10/14(月) 11:17:50.14for(...) {
s = S + s + E;
}
という文字列処理の最適化を行っているんでしょうか
0737デフォルトの名無しさん
2013/10/14(月) 11:46:20.22ちょっと聞いたことが無いんだけど
この程度の最適化を自慢してるくらい何だから
作ってる奴らは
どうせ口ばっかりでたいしたことない奴なんだよ
おれなら10倍高速に書けるのに
0738デフォルトの名無しさん
2013/10/14(月) 19:57:51.28針デカ過ぎです
0739デフォルトの名無しさん
2013/10/14(月) 20:38:14.110740デフォルトの名無しさん
2013/10/14(月) 22:41:11.40ワナビーはそろそろ場違いなんでお引き取り願った方が良いのでは
0741デフォルトの名無しさん
2013/10/14(月) 23:07:41.870742デフォルトの名無しさん
2013/10/17(木) 19:41:19.45>>734とか速いわけがないコード出して遅いっていう意味がわからないもの
0743sage
2013/12/16(月) 21:40:57.870744片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/02(日) 14:49:49.00これをC++のプログラムにしたいんだけど、どうすればいいかな?
0745デフォルトの名無しさん
2014/02/03(月) 02:10:20.39そういう意味じゃないってんならlexはともかくyaccの方はコンパイラコンパイラでC++に落ちる奴使えばええんでないの?
あるいは文法規則をc++のtemplateで生成する奴使うとか
0746デフォルトの名無しさん
2014/02/03(月) 10:33:27.760747デフォルトの名無しさん
2014/02/03(月) 15:37:14.13前スレだか前々スレにcaparってのが紹介されてた
このスレでも>>462でちょろっと名前が出る
ただ文法規則は違うんだよね、移植は必須
0748片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/08(土) 16:18:00.61結論:Bison++は使えない
0749デフォルトの名無しさん
2014/02/08(土) 16:47:27.06C++のライブラリに拘る意味がわからない
0750片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/08(土) 16:59:45.470751デフォルトの名無しさん
2014/02/08(土) 17:06:44.50YYPARSE_PARAMなんて基本中の基本だぞ
その用途で解決策が乏しくて不満が出るのは普通はFlexの方だ
0752デフォルトの名無しさん
2014/02/08(土) 17:17:51.98お題程度ならC++でゴリゴリ書いても良いじゃんよ
元の目的がはっきりしてないから質問の答えだって迷走すらぁね
0753デフォルトの名無しさん
2014/02/08(土) 20:57:24.99そのまんまC++に持ってって動くコードなら適当な名前空間などで括るとかどうにでもすればいい
0754デフォルトの名無しさん
2014/02/09(日) 00:45:47.83必要な場合、何かお薦めの方法ある?
yacc とかが生成したパーザだと、先読みの可能性を考えながら文法書くのが辛すぎる。
0755デフォルトの名無しさん
2014/02/09(日) 02:10:59.56それをyacc系でやるのは茨の道かな…切替タイミングをreduce時に絞れるなら何とでもなるけど
それ以外はケースバイケースでアクロバティックになる事も割と多かった気がする
0756デフォルトの名無しさん
2014/02/09(日) 03:49:23.310757デフォルトの名無しさん
2014/02/09(日) 10:09:24.90汚くなるけど一貫した方法で処理できるからスキャナの状態触るよりはマシ
0758デフォルトの名無しさん
2014/02/09(日) 15:09:09.34LR パーザの動作をちゃんと理解している自信がないのだけど、
LR(0) でない限り、 reduce のタイミングでも次のトークンが
食われてる可能性はあるような。
先読みせずに reduce できることが一意に決まれば先読みされないはずだけど、
綱渡り感がすごい。
>>756
LL 系パーザでも、パーザジェネレータを使うと先読みのコントロールが
利用者から奪われるのは変わらない気がする。
>>757
過去、二回くらい試して挫折した。たぶん一番正しい方法なんだけど、
スキャナが余分なトークンを生成する(空白文字の取り扱いが変わるため)ことで、
文法が LR(1) に収まらなくなるという…。
0759デフォルトの名無しさん
2014/02/09(日) 15:23:34.69ごめん。これ嘘。
もちろん実装依存ではあるのだけど、現実的には常に先読みされていると
思っていいのかもしれない。
0760片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/09(日) 16:12:54.17Boost.Spiritを使ってみた。変数への代入ができないよお。
助けてよお。
0761デフォルトの名無しさん
2014/02/09(日) 16:32:52.05Bisonなら吐かれた制御ロジックや表を理解しなくても詳細ファイルを出力させるだけで大体そこは読み取れる
ただし先読みを行う行儀の悪い実装が無いとは言えないし、
parser上の先読みは無くともlexer上の先読みの話は残るので文法によってはyyunput()等での調整は必須になる
終端記号にトークンを必要とする文法ではlexerへの干渉内容次第でyacc系での実装が無理筋なのはその通り
一応色々対策はあるけどそこまで来たら文法と手段の見直しが先決
0762片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/09(日) 17:02:38.950763デフォルトの名無しさん
2014/02/10(月) 20:25:51.230764デフォルトの名無しさん
2014/02/10(月) 20:53:09.41%glr-parser(LALRじゃなくGLRによる衝突遅延)と
%x (スキャナの状態)
Flex+Bison で何が不足か
0765片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/10(月) 21:24:12.35BisonはGPLに汚染されていてC++への対応が悪い。
消去法でANTLRが良さそうなので使ってみるか
0766デフォルトの名無しさん
2014/02/10(月) 22:47:16.40前使った時に泥臭いなと思ったのは入力ストリームを一度割り当てて読み切った後に
他の入力ストリームに交換してクリーンリセットする正規の手段がない事と翻訳単位変数依存がある事
あの時は.l側にyy_init=1やyy_start=0等を実行する小さな関数を作って%initial-action他から
実行させて凌いだけど、最近のバージョンは正規の手段準備されたんかね
0767デフォルトの名無しさん
2014/02/10(月) 23:08:31.46Caper使えよもう
0768デフォルトの名無しさん
2014/02/11(火) 03:22:57.50C++はわからんな・・・結局Bisonが吐いたコードをC++のコンパイラが処理できれば足りるはず
アクションにどこまでC++を書けるかはやってみたこと無いからわからん
まあANTLRなら戦えるだろう
0769デフォルトの名無しさん
2014/02/11(火) 09:05:54.480770デフォルトの名無しさん
2014/02/11(火) 10:23:11.800771片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/11(火) 17:34:29.830772デフォルトの名無しさん
2014/02/12(水) 00:37:42.11re2c 使うべし。
0773デフォルトの名無しさん
2014/02/12(水) 23:43:50.58個人的には近年のツールなのにきちんとCをサポートしてる所がいいな
Flex同様ドライバの一部にも多種の組み込みにも使える余地を残してると
Flexの長所と短所を踏まえて作られた流れみたいだしその内試してみる
0774デフォルトの名無しさん
2014/02/22(土) 20:36:37.25v4でどう書けばいいのかわからん
0775片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/22(土) 23:32:18.23発生して死ぬ可能性あり。詳しくはFOLLOW_set_in_でググれ。
0776片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/25(火) 14:05:33.88識別子の解析でreduce/reduce conflictが起こってしまうよ。助けて偉い人
0777デフォルトの名無しさん
2014/02/25(火) 14:25:55.18関数の中はむずかしいw
0778デフォルトの名無しさん
2014/02/25(火) 14:27:58.330779片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/25(火) 15:19:58.040780デフォルトの名無しさん
2014/02/25(火) 16:36:10.08Cだと確かアドホックにやるしかないんじゃなかった?
Javaの場合確か文脈によって区別できたと思うけど。
0781デフォルトの名無しさん
2014/02/25(火) 17:49:26.540782デフォルトの名無しさん
2014/02/25(火) 18:14:37.180783デフォルトの名無しさん
2014/02/26(水) 09:02:57.86何でポインタが出てくるのかわかんねーといいたいのか
コンフリクトが解消できません
0784デフォルトの名無しさん
2014/02/26(水) 11:06:38.22厳密には収まっていない、ということと、Javaにはポインタがない、ということに
関連はありますか、ということ。
0785デフォルトの名無しさん
2014/02/26(水) 16:40:29.35javaアプリに組み込むインタプリタを作りたいのだが、
それは諦めて、スクリプトを自作パーサでjavaソースに変換し、
javassistで実行中のjavaアプリに動的ロード&実行しようと
計画を立てたものの、一向に進まないやw
0786片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/26(水) 16:59:45.90LuaJava
luaj
0787デフォルトの名無しさん
2014/02/26(水) 17:27:01.59思い切って機能を端折って、とにかく動くものをエイヤで作らないと、いつまでも進まないと思う。
ひとつめは捨てることになろうとも、とにかく作れ。
0788デフォルトの名無しさん
2014/02/26(水) 20:04:22.24javascriptとかPHPみたいにcharも触れない言語は糞なの。
>>787
まずはクラスとか捨てて関数とプリミティブ型と文字列でコンソールにhello worldやな。
0789デフォルトの名無しさん
2014/02/27(木) 19:33:32.450790デフォルトの名無しさん
2014/02/27(木) 21:18:27.770791デフォルトの名無しさん
2014/02/27(木) 21:41:54.51必ず必要になる(寿命管理のおまけつき)から目的を問わず最低開発コストは高いよ
原始的なC構文だけでもエラーや回復、構造体や共用体、ポインタの咀嚼までgdgdにならず完走するのは一仕事
でもこの辺一通り実装出来なきゃCパーサとしては使い物にならない
0792デフォルトの名無しさん
2014/02/28(金) 00:10:08.130793デフォルトの名無しさん
2014/02/28(金) 01:44:45.36C90ぐらいだとけっこう手ごろな規模だし
0794デフォルトの名無しさん
2014/02/28(金) 12:48:03.64まずは関数単位でブロックに分けてみる。
0795デフォルトの名無しさん
2014/02/28(金) 14:57:32.100796デフォルトの名無しさん
2014/02/28(金) 15:14:24.990797片山博文MZ無能 ◆T6xkBnTXz7B0
2014/02/28(金) 16:56:06.21http://katahiromz.web.fc2.com/mathai/cparser2.zip
暇だったら見てやって下さい
0798デフォルトの名無しさん
2014/02/28(金) 20:56:29.92うん。関数の中以外を分けてブロック化した。
do main : int {
return 0;
}
class A
{
do hello(){}
var i : int;
class B { enum C { a, b, c} }
}
こんな感じのものから、ソースファイル内にある
クラス名・メンバ関数名・メンバ変数名を全部抽出する。
冗長になるけど、関数宣言はdo, 変数宣言はvarを付けて分割しやすくした。
0799デフォルトの名無しさん
2014/03/01(土) 03:19:13.07なんとかなりそうだけど、他の関数を呼んだりクラスを後に追加するに
あたってはまるで見当がつかないや
java (スクリプトロード前)
class ScriptRunner {
..void load(String script_file, String script_main){}
..void go(){
....// nothing
..}
..void unload(){}
}
script側
do main(){
..log <= "hello"+" & "+"world";
}
java(スクリプトロード後)
class ScriptRunner {
..void go(){
....Log.log("hello"+" & "+"world"); // changed
..}
..void load(){} void unload{}
}
0800片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/06(木) 13:56:35.010801片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/06(木) 17:27:27.330802デフォルトの名無しさん
2014/03/10(月) 21:18:01.350803デフォルトの名無しさん
2014/03/10(月) 21:38:02.51SLRと状態数がほぼ同じで、より広い範囲の文法を扱えるLALRがあるのに
0804デフォルトの名無しさん
2014/03/10(月) 21:54:58.290805デフォルトの名無しさん
2014/03/10(月) 21:56:16.290806デフォルトの名無しさん
2014/03/10(月) 22:01:27.170807デフォルトの名無しさん
2014/03/10(月) 22:03:37.88現在お取り扱いできません
こんなのしかない・・・
0808デフォルトの名無しさん
2014/03/10(月) 22:08:46.570809デフォルトの名無しさん
2014/03/10(月) 22:15:16.29"parboiled for Scala"を紹介しよう。Scalaのパーサコンビネータに似た内部DSLで
PEGパーサを作ることができ、以下の優位点を持つ。
・パーサ規則作成と、入力の解析とがきれいに分かれているので、速度が速い
・親切なエラー報告機能がある
・シンタックスエラーがあってもエラーリカバリして、最後までパースできる
0810デフォルトの名無しさん
2014/03/10(月) 22:25:38.04なんで日本語の本が無いの?
0811デフォルトの名無しさん
2014/03/10(月) 22:49:40.310812デフォルトの名無しさん
2014/03/11(火) 00:10:35.61許されないのが弱点だって。
左再帰は自動除去も考えられるけど、メモリーはどうなんだろな。
0813デフォルトの名無しさん
2014/03/11(火) 10:55:35.080814片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/11(火) 11:32:31.67github.com/jonigata/caper
0815デフォルトの名無しさん
2014/03/11(火) 11:37:22.160816デフォルトの名無しさん
2014/03/11(火) 12:08:58.00右再帰だと関数とかの単位でけつまで抱え込むみたいだが
0817デフォルトの名無しさん
2014/03/11(火) 22:47:14.530818デフォルトの名無しさん
2014/03/11(火) 23:09:48.37物事の感覚がおかしい。
0819デフォルトの名無しさん
2014/03/11(火) 23:40:28.59ID:k/rF32la文法によっては入力テキストの100倍とかメモリを消費するので……
たかが比例する程度だから問題ないと言えるほどでもないと思う
0820デフォルトの名無しさん
2014/03/12(水) 22:24:28.72ID:MqlPltvCてことは、仮にUTF-8だった場合、300KB位じゃないの?
sjisだよとかそういう話じゃなくて。
PEGで書かれたHTMLパーサがCGIで使われていて、同時に100人がアクセスしてきたら
とか考え始めると、やっぱりメモリーも大事なんじゃないのかな。
あと、PEGの本紹介してください。
ドラゴンブックは読んで、自分でLALRパーサジェネレータまでは書いた。
100年かかった。
10年で出来るPEGの本があったら教えて!
メモリーを心配してるのは、字句解析器が吐くコードがやたら大きくなるので、
こりゃまずいと思ったから。
0821デフォルトの名無しさん
2014/03/12(水) 22:52:28.64ID:MqlPltvC地球には自分一人しかいないような気がしてきた。
みんなどこ行ったんだ。
0822デフォルトの名無しさん
2014/03/12(水) 23:15:34.15ID:9eCKiTHh0823デフォルトの名無しさん
2014/03/13(木) 00:08:05.31ID:nrkT8+wK0824デフォルトの名無しさん
2014/03/13(木) 19:02:35.71ID:q1sfF2Hsブログとgoogle codeしか見てなかったthx
0825デフォルトの名無しさん
2014/03/13(木) 19:26:13.01ID:hR60BOrRwatch入れてない自分が言うのもなんだけど。(だって入れなくてもcloneできるしー)
0826片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/13(木) 20:18:49.02ID:AgM9wxep0827デフォルトの名無しさん
2014/03/14(金) 18:00:27.58ID:I0jjMatvPull request出してるのみたお
応援するお
0828デフォルトの名無しさん
2014/03/14(金) 19:54:21.98ID:aEjAmidr何かお前は板の住人じゃないって言われてるみたいでちょっともやっとするなー
全スレに貼る労力を考えたら仕方ないのかも知れんが
0829デフォルトの名無しさん
2014/03/15(土) 09:28:42.87ID:nEK2Wa8Jちょっとソースコードいじってみようかな。
いまどきLALRにこだわる理由もないし。
0830jonigata
2014/03/16(日) 19:19:16.97ID:TnbKjXG7ごめん、そのアルゴリズム考えた人に「うまく動かないんだけど」って
連絡したら、「そのアルゴリズムバグってる」って言われたんで
潰した。手元のバージョンでは消してあります。
0831デフォルトの名無しさん
2014/03/16(日) 21:16:59.72ID:lTEgNzO7あのときから時々ではありますが、パーサが必要なときにいつも使っているので感謝してます。
0832デフォルトの名無しさん
2014/03/16(日) 21:54:41.12ID:iSg2y7I00833デフォルトの名無しさん
2014/03/18(火) 03:58:52.77ID:uwWTDmYYBASICのようなインタプリタは速度面で勝てないのだろうか。
0834デフォルトの名無しさん
2014/03/18(火) 04:17:09.74ID:AJd0B3pW構文解析なんか最初の一回きりだろう?
構文解析が原因で実行速度で追いつけてないのはインタプリタの設計で毎回パースするようなアホな事してるかじゃないの?
0835デフォルトの名無しさん
2014/03/18(火) 07:51:12.40ID:6VY9d7pb0836jonigata
2014/03/18(火) 09:23:22.69ID:7A7zada1ありがとう、使いづらいところがあったら教えて下さい!
今なら対応できるかもしれません。
(最近片山さんに煽られてエラーリカバリ実装するために
ソースほとんど全部読みなおしたところなので、把握出来てる)
>>832
david.tribble.com/text/honalee.html
これです! うまく動かなかった!
0837デフォルトの名無しさん
2014/03/18(火) 14:35:25.99ID:5bt/pR7P返信と現状の情報ありがとうございます。
ドラゴンブック読んだら自分でもLRくらいなら実装できそうなのでがんばってみます。
0838デフォルトの名無しさん
2014/03/19(水) 17:26:05.81ID:OMDJGFgMkp19pp では (group) / ? / * / + による修飾に伴って型とセマンティックアクションを指定し、
内部処理ではそれらを一種の Lambda 的な扱いで解決しています。
これらを参考として Caper 組み込んで下さるといろんな方達が助かります。
0839片山博文MZジェバンニ ◆T6xkBnTXz7B0
2014/03/19(水) 18:11:31.69ID:aM34prOCじゃあ何でkp19ppを使わないの?
0840デフォルトの名無しさん
2014/03/19(水) 18:34:07.04ID:OMDJGFgM0841デフォルトの名無しさん
2014/03/19(水) 19:04:08.24ID:aM34prOC死んでても使えませんか?
0842jonigata
2014/03/19(水) 21:37:10.09ID:tn/LoswdEBNFに対応するにはstd::vectorとか特定のデータ構造が必要になるなと思って、
セマンティックアクション側に特定の構造を期待しないcaperとしては
実現不可能だなと思ってやめた気がします。
今だったら、variadic template使えばいいかな?
0843jonigata
2014/03/19(水) 21:39:03.68ID:tn/LoswdSemanticAction側の条件を厳しくする以外に
いい仕様が思いつかない
0844jonigata
2014/03/19(水) 21:55:41.81ID:tn/Loswdセマンティックアクション側はテンプレートで受け取ればいいのか。
struct SemanticAction {
template <class F>
void SumList(F f) {
std::vector<Value*> a;
Value* v
while(f(v)) {
a.push_back(v);
}
}
};
こんな感じ
0845デフォルトの名無しさん
2014/03/20(木) 03:19:30.93ID:2RkNjYZfインタプリタのVMについてです。
明快入門 コンパイラ・インタプリタ開発を読み終えましたが、
バイトコード生成から命令実行のスイッチまでのあたりで、
あれよりいい方法はありませんか
また典型的にはどの様に実装されますか
0846デフォルトの名無しさん
2014/03/20(木) 04:38:07.63ID:QFA+fydK0847デフォルトの名無しさん
2014/03/20(木) 04:46:25.82ID:2RkNjYZfプラットフォームは当分x86ですが、
場合によっては移植できるよう機種依存コードはできるだけ書きたくありません。
目的は、インタプリタの実装の学習とテストです。
「いい方法」とは具体的には、速度と拡張性のことです。
まだ、有名どころのコードを読むまでのスキルがなく、参考にすることができません。
参考書籍の紹介だけども助かるのでお願いします。
0848デフォルトの名無しさん
2014/03/20(木) 04:47:26.65ID:2RkNjYZfです。
0849デフォルトの名無しさん
2014/03/20(木) 23:35:41.25ID:5JoitLb00850デフォルトの名無しさん
2014/03/20(木) 23:59:31.80ID:QFA+fydKVMの高速化技法っつってもJITもあれば言語が動的オブジェクトへのメッセージ送りもってれば辞書キャッシュとかVM命令の粒度変更とかいろいろある
学習が主題かつ他人のコードを読みこなせないのであれば数こなすとか、出てる本片っ端から(外れもあるんだけど)読むとかから手つけておくのが一番の近道だと思うぞ
0851jonigata
2014/03/25(火) 00:03:25.96ID:GAMZ9k7gEBNFを実装してみた(C++ジェネレータのみ)ので暇な人いたら人柱募集。
使い方はsamples/cppのlist0, list1, list2, optionalを参考のこと。
list2のスラッシュオペレータは独特のやつで、
X/Yと書くと X Y X Y XにマッチしてYを捨ててXのリストを返す。
引数リストなどに使う目的で作った。
カッコは役に立つところが思いつかないので実装してない
(今のところ実装する気もない)。
というか実用的な言語ではスラッシュ以外ほとんど使うところないと思ってる。
出力されるパーサ・ジェネレータのソースはより読みやすくなったはず。
0852デフォルトの名無しさん
2014/03/25(火) 00:08:50.24ID:dHbpAKvO0853jonigata
2014/03/25(火) 22:09:52.29ID:GAMZ9k7gそれをどう使うかはセマンティックアクション側で勝手にしてね、的な。
template <class S>
int Document(const S& x) {
for(typename S::const_iterator i = x.begin();i!=x.end();++i) {
}
return 42;
}
こんな感じで受ける。
なぜかrange-based forは使えなかった。
返すイテレータの実装が悪いのかな?
誰かに添削して欲しい。
0854jonigata
2014/03/25(火) 22:12:36.54ID:GAMZ9k7gtemplate <class S>
int Document(const S& x) {
for (const auto& y: x) {
}
return 42;
}
これで受けれる。
0855デフォルトの名無しさん
2014/03/26(水) 17:47:48.07ID:pT8ZOuEmサイズはなんと、300kb未満。(2014年3月26日)
「MS-DOS ソース公開」で検索。これは参考になるかな?
0856デフォルトの名無しさん
2014/03/26(水) 21:14:23.26ID:Q9zmlY8C0857デフォルトの名無しさん
2014/03/26(水) 22:51:21.32ID:gTzKvy2/0858デフォルトの名無しさん
2014/03/26(水) 23:00:27.71ID:FbuvqMDP0859デフォルトの名無しさん
2014/03/26(水) 23:43:33.35ID:14kSAhy10860デフォルトの名無しさん
2014/03/27(木) 13:32:33.06ID:rBkYuYzY解読する暇はないな。意外な盲点だった。
0861デフォルトの名無しさん
2014/03/27(木) 21:04:41.95ID:I9aZwzrL前身のMSX-DOSの頃ですらM80/L80/Cと一連の移植ツールセットを売ってたし、
いかにもCP/Mベタ移植っぽい効率の悪い動きしてたからな
0862デフォルトの名無しさん
2014/03/27(木) 21:19:26.84ID:8HxvNny/単に事実誤認。
MS-DOS 2.0 のリリースと MSX の誕生が 1983 年。
0863デフォルトの名無しさん
2014/03/27(木) 21:26:21.36ID:d2Tv2Evk0864デフォルトの名無しさん
2014/03/27(木) 21:39:43.18ID:zmWcMUxsMSX-DOS出たときにMSDOSはとっくに存在しとるじゃないか。
PC98でMSDOS上のCross AssemblerとかカノープスのZ80ボード経由でMSXのソフトとか開発するの普通じゃん。
>>859
むせる方か、東芝の12ビットチップの方かどっちだ?
0865デフォルトの名無しさん
2014/03/28(金) 03:58:36.84ID:NMpBVu7eI/O直叩きや高速性が求められるゲームなんかは当時はほぼ機械語でゴリゴリ書くしかなかったが
DOS系コード(チップ制御以外)は違いますがな、性能より開発コスト重視で割と酷い動きしてたじゃん
システムコールのレコード長周りとか
0866デフォルトの名無しさん
2014/03/28(金) 07:38:02.50ID:PUotWYu6MS-DOSもそうなってるかまでは知らんけど。
0867デフォルトの名無しさん
2014/03/28(金) 13:09:02.05ID:konPatBXCOMMAND.COMは所詮オプションだからCで書けるかも知れんな
0868デフォルトの名無しさん
2014/03/28(金) 13:17:21.59ID:beMC8OFd最小限にするとか、COMMAND.COM だってけっこうエグいトリック使ってるよ。
0869デフォルトの名無しさん
2014/03/28(金) 14:34:01.65ID:AwRMv83+そうなのか?,あの頃ってMSX単体開発するのにMSXDOS出るまでって相当厳しかったんじゃ?
ASCII編のアセンブラとかもMSXDOS前提な書籍とかあったし。
おいらは若松のCP/Mマシンに9918AとPSGつないでMSXのソフト作ってた
タイトル言うと即バレするので書かないけど2つ程ROMカセットで売って貰った、98でクロスアセムでもROMエミュ持ってたらそっちの方が楽かもしれないと思った。
っていうかこれスレ違いだなぁ orz
0870デフォルトの名無しさん
2014/03/28(金) 14:52:40.42ID:lxVw5nnh0871デフォルトの名無しさん
2014/03/28(金) 18:56:26.40ID:s2VWqUv5その手のCで書き辛い部分はDOSに関しちゃごく一部だから、そこだけ別ルーチンで書いてリンクすれば終わるよ
容量制限の厳しいROMBIOSなんかはMSも涙ぐましい努力してたけど、DOSにそこまでの対効果を見込んだかどうか…
まあここでゴチャゴチャ言うより誰かDLして確認すれば正確に分かると思う
0872デフォルトの名無しさん
2014/03/28(金) 23:34:37.88ID:NMpBVu7eここで言ってるDOS系コードはDOSの構成要素である各種コード群や
その上で動くソフトの事で、それらはCを排除する絶対的な要件って無かったよなって話
単体開発とかMSX限定とかそういう話じゃないよ、それらで大半を機械語で書く必然性の話
0873デフォルトの名無しさん
2014/03/28(金) 23:49:20.80ID:beMC8OFdmsdos\v11source\ の中は *.ASM が7個と Tim_Paterson_16Dec2013_email.txt というテキストファイルが 1個。
msdos\v20source\ の中はファイル118個中 *.ASM が丁度100個、Cで書かれたソースコードは無し。
以上
0874デフォルトの名無しさん
2014/03/29(土) 00:11:29.61ID:G9+QHheZ今の時代でも、参考になりそうなテクニックは網羅されていたかな?
0875デフォルトの名無しさん
2014/03/29(土) 00:16:37.14ID:dWnwe2uv御冗談を
MSXでMSX-DOSのシステムコールが必要なソフトなんて
グラフサウルスくらいしかしらないんだが
MSX-DOSのシステムコールどころかBIOSすらほとんど使ってないはず
市販ソフトはほぼ自前で実装でしょ
MSX-DOSが無いと厳しいという話は聞いたことが無いなあ
0876デフォルトの名無しさん
2014/03/29(土) 00:35:43.67ID:M4O/iXzMDOSが必要だったというかメモリが64KB使える環境でないとメガROM以前の
16KB/32KBROMの開発すら無理だったと言いたいんじゃないかな
http://ascat.jp/tg/tgd3.htm
ただMSX-DOSには多分一般リリースされた日と一通り仕上がった日に結構な開きがある気はする
MSXはシステムコールの実体を全てFDC-ROMが供給という特殊な構成を取ってるから(なのでDOSが
無くとも全てのシステムコールが可能)、初期にFDD付きMSXを売ってたナショナルやヤマハ等の
ベンダー向けに出回った内製のMSX-DOSがあって、FDC-ROMの雛形と一緒に本体開発前に配られてたのでは
でないとROMのデバッグが相当面倒臭い事になる
0877デフォルトの名無しさん
2014/03/29(土) 00:40:35.10ID:7AalbuHZ0878デフォルトの名無しさん
2014/03/29(土) 00:45:02.67ID:EN1l+2Rh0879デフォルトの名無しさん
2014/03/29(土) 01:34:52.89ID:GY0iNuGM0880デフォルトの名無しさん
2014/03/29(土) 09:45:57.62ID:E1gpfH0G0881デフォルトの名無しさん
2014/03/30(日) 00:07:47.84ID:fOfAZgZI居る訳ないよね? とっくにカメラメーカーの研究所とかに就職してるよね?
0882デフォルトの名無しさん
2014/03/30(日) 00:16:03.66ID:9JDD36520883デフォルトの名無しさん
2014/03/30(日) 00:20:42.16ID:ftWH2ajMオライリーの言語実装パターンっておすすめですか?
記述が少しあるようなのですが。
0884デフォルトの名無しさん
2014/03/30(日) 00:22:50.64ID:fOfAZgZIならば全人類のためにLLVMのシリコンコンパイラを作ろうではないか
0885デフォルトの名無しさん
2014/03/30(日) 00:26:39.08ID:tuvM7udc0886デフォルトの名無しさん
2014/03/30(日) 02:02:51.37ID:fKxQVEZv0887デフォルトの名無しさん
2014/03/30(日) 20:42:52.71ID:szVVotNMそれとはまた違うものを最近はそう呼んでるの?
0888デフォルトの名無しさん
2014/04/01(火) 22:32:32.41ID:28c8XDsv0889デフォルトの名無しさん
2014/04/01(火) 22:43:42.45ID:yGT6IIrw0890デフォルトの名無しさん
2014/04/04(金) 13:43:25.03ID:FR4h37Hvオープンソースで公開。独自言語など開発可能に。Build 2014
ttp://www.publickey1.jp/blog/14/cvisual_basicroslynbuild_2014.html
0891デフォルトの名無しさん
2014/04/05(土) 22:42:43.55ID:YvEBV2Nhmergeしてるjonigataさんも大変かも
0892デフォルトの名無しさん
2014/04/06(日) 09:14:01.07ID:6fUxN2Jx0893デフォルトの名無しさん
2014/04/07(月) 00:43:08.70ID:JdSV9wAR開発部隊がバラバラだから、JavascriptもC++(/CLI)も含まれてないw
だせえ
0894デフォルトの名無しさん
2014/04/07(月) 07:14:43.95ID:aChPVlpJRoslynは現在C++で書かれているC#とVBのコンパイラをブートストラップで書き直すことで
メタプログラミングに使いやすくするプロジェクトだ
0895デフォルトの名無しさん
2014/04/07(月) 10:37:36.86ID:H5+AU72d0896デフォルトの名無しさん
2014/04/07(月) 14:10:26.78ID:phll1q+xC#とVBとその二つへの埋め込みDSL以外はドキュメントでも触れてないから。
0897デフォルトの名無しさん
2014/04/07(月) 14:17:28.62ID:ajgX5Rf9perl6とかmozilla tamarinとかdehydra gccとか
ウヤムヤプロジェクトになってもおかしくないレベル。
0898デフォルトの名無しさん
2014/04/07(月) 14:27:51.32ID:2P7F2w5nとりあえず完結した入力文法持ってる言語ってFORTHとLISP以外ないんじゃないの?
0899デフォルトの名無しさん
2014/04/07(月) 14:47:17.73ID:ajgX5Rf9間違えた。
javascript→VB
0900デフォルトの名無しさん
2014/04/07(月) 18:01:09.29ID:H5+AU72d実装が不十分ってことかい
0901デフォルトの名無しさん
2014/04/07(月) 19:10:55.36ID:GBBuIuYe実装=仕様の状態だから。
AST, APIが不完全。
0902デフォルトの名無しさん
2014/04/07(月) 20:30:45.87ID:2P7F2w5n0903デフォルトの名無しさん
2014/04/08(火) 12:29:52.55ID:8RVw5/DjC#とVBのbindingがあってそれぞれの言語が対象になってる。
0904デフォルトの名無しさん
2014/05/14(水) 15:19:04.24ID:dMA9XG5e0905デフォルトの名無しさん
2014/05/14(水) 20:41:05.24ID:z3LIcL30アセンブリ命令
http://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/64-ia-32-architectures-software-developer-manual-325462.html?wapkw=x86+manual
Intrinsic
https://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/index.htm#GUID-28F49E4A-615D-4373-A36E-C8A92E913325.htm
0906片山博文MZバグロボ ◆T6xkBnTXz7B0
2014/05/15(木) 14:20:11.58ID:/BROOYqIありがとう。助かった。
0907片山博文MZバグロボ ◆T6xkBnTXz7B0
2014/05/17(土) 22:18:34.48ID:MhKuGNEw興味があったらご覧下さい。
https://github.com/jonigata/caper
0908デフォルトの名無しさん
2014/05/18(日) 01:05:27.51ID:8NF5w4j9ANTLRみたいなタイプならともかく、flexみたいなのって
よほど単純な言語でない限りは余計に複雑になるしデバッグもしづらくなる気がする
0909デフォルトの名無しさん
2014/05/18(日) 01:14:44.51ID:VbYhl7s+parser generatorも同様。
0910デフォルトの名無しさん
2014/05/18(日) 04:01:55.25ID:EpNTbyyn0911デフォルトの名無しさん
2014/05/18(日) 05:18:01.09ID:km1NGPSj0912片山博文MZバグロボ ◆T6xkBnTXz7B0
2014/05/18(日) 13:38:13.73ID:wTsBQBni0913デフォルトの名無しさん
2014/05/18(日) 19:32:32.83ID:3lmx3bd8処理系のVMについてですが
オペコードはスイッチ文(switch, if)で一つずつ分岐するのと
命令一つ一つを関数でつくりそれを実行するのではどちらが早いですか?
ちなみに処理系はCでできています
おながいします!
0914デフォルトの名無しさん
2014/05/18(日) 19:43:06.46ID:wTsBQBni実測値を信じろ
0915デフォルトの名無しさん
2014/05/18(日) 19:45:19.17ID:VLKMweCv0916デフォルトの名無しさん
2014/05/18(日) 20:07:20.77ID:3lmx3bd8大手スクリプト言語どっちなんじゃ?
0917デフォルトの名無しさん
2014/05/19(月) 01:58:06.48ID:Si0coWpvタイトなとこだけ展開。
昔のJITじゃないVMの読むと結構出てくる。
https://sites.google.com/site/io/dalvik-vm-internals
ちょこまかとした書き換えがすごく効く。
gotoとかloadとか小さい命令で。
0918デフォルトの名無しさん
2014/05/19(月) 13:46:34.97ID:Bh2YKOjVLALR(1) も変形すれば LL(2) くらいにはなるので
あとは再起下降でもなんでも好きなようにすればいい
0919デフォルトの名無しさん
2014/05/19(月) 16:15:14.07ID:rN3m2Poq変形すればLL(2)ってことはない。
0920デフォルトの名無しさん
2014/05/19(月) 20:46:03.83ID:utepvwi40921デフォルトの名無しさん
2014/05/20(火) 00:22:32.49ID:WYH9CLBB<X> = a (b c)* d
みたいな拡張BNFをそのままプログラムにすると思えばいい。
0922デフォルトの名無しさん
2014/05/20(火) 01:02:13.67ID:ezmBCAPL0923デフォルトの名無しさん
2014/05/20(火) 07:35:25.85ID:wdE7nCB80924デフォルトの名無しさん
2014/05/20(火) 10:40:44.97ID:fbMM1sIr0925デフォルトの名無しさん
2014/05/20(火) 11:38:51.42ID:3nq9aFUp0926デフォルトの名無しさん
2014/05/20(火) 13:53:02.72ID:WYH9CLBB部分的にちょっと (2) になってる、とかなら今時のマシンと言語とライブラリならたいして問題ない。
本質的に再帰になってるものとしては、式の構文とかがあるけど、普通にループで書ける。
<EXPR> : <TERM> (('+'|'-') <TERM>)*
<TERM> : <FACTOR> (('*'|'/') <FACTOR>)*
<FACTOR> : num | '(' <EXPR> ')'
<FACTOR> のルールにある、「カッコ内の<EXPR>」みたいなのを「本質的に再帰」と言う、
と言えば、まぁそうなんだけど。
0927デフォルトの名無しさん
2014/05/20(火) 14:07:45.06ID:PibgqYJG文字を2こ戻す必要ありますよね。
abdとかabeを弾いてaにしなければならなのですから。
0928デフォルトの名無しさん
2014/05/20(火) 14:13:37.37ID:mjphnHY10929デフォルトの名無しさん
2014/05/20(火) 20:27:27.59ID:3YV0fEWD0930デフォルトの名無しさん
2014/05/21(水) 01:50:35.06ID:aDDYIuqoなんかPLDIの論文で見たような記憶が
0931デフォルトの名無しさん
2014/05/21(水) 09:18:01.98ID:Fj6ednoX0932デフォルトの名無しさん
2014/05/24(土) 01:20:56.66ID:qfxUsSTH0933片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/05/29(木) 17:26:52.76ID:XnoInNKgひらがな電卓CalcH
http://katahiromz.web.fc2.com/calch/
0934デフォルトの名無しさん
2014/05/29(木) 18:52:19.98ID:LQk3BeN60935片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/05/30(金) 12:21:16.56ID:SSvUP3u/0936片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/01(日) 06:52:57.24ID:CnlwSSTKそこでこれまで使われてきたのが形態素解析だが、
多態性が解消できれば人工言語の構文解析の手法がそのまま使える可能性が高い。
そのことをひらがな電卓で示そうと思う。
0937デフォルトの名無しさん
2014/06/01(日) 08:52:19.11ID:4IM3O9wEそんなもんBrainfuckのオペを日本語に置き換えたネタと変わらんわ
0938デフォルトの名無しさん
2014/06/01(日) 13:03:56.67ID:iF6nhgL2lojban で示してくれ
生来 esiperantisto の俺も lojban に傾倒しつつある
0939デフォルトの名無しさん
2014/06/01(日) 19:01:15.96ID:r6R+kq87自然言語から多態性を排除したモノをプログラム言語として使うというのはアリだけど
0940デフォルトの名無しさん
2014/06/04(水) 11:36:58.64ID:JjkiX3zX0941デフォルトの名無しさん
2014/06/04(水) 14:22:25.33ID:H9m/5fkb0942デフォルトの名無しさん
2014/06/05(木) 10:04:10.48ID:1JqbWMwZA:=B|(B)
こんな感じ?
0943デフォルトの名無しさん
2014/06/05(木) 10:10:07.49ID:1JqbWMwZB:=D|(D)
C:=E|(E)
こっちの方が分かりやすいな。
0944デフォルトの名無しさん
2014/06/05(木) 10:13:32.16ID:1JqbWMwZB:=D|(D)
C:=E|(E)
違った。
0945デフォルトの名無しさん
2014/06/05(木) 17:19:48.25ID:bOGqmnDAA := BC
BC := '(' DE ')' | DE
DE := D | E
と、くくり出せる。
0946デフォルトの名無しさん
2014/06/06(金) 11:15:49.36ID:y0bQ4ynG0947片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/06(金) 16:52:16.19ID:dyn5MnFBjonigataさんのパーサジェネレータCaperは充分に実用的になった。
Caper
https://github.com/jonigata/caper
0948デフォルトの名無しさん
2014/06/06(金) 20:49:34.19ID:iMYjirOzアレは良い物ですな、つかなかなかここまで細かい事できるのに使い方が簡単なのってなかなか無いんだよね。
自分使うだけでアレだけど、MZはpullrequest結構出しててそれもとっても有り難かったです。
0949デフォルトの名無しさん
2014/06/06(金) 20:57:54.81ID:Y8WrhCVMいいよね、Caper。
0950片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/07(土) 19:30:42.70ID:3R8CEA880951デフォルトの名無しさん
2014/06/07(土) 20:14:40.23ID:RFWgpx3m0952片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/07(土) 20:32:42.40ID:3R8CEA880953デフォルトの名無しさん
2014/06/07(土) 20:37:06.36ID:SxbAzKvi0954デフォルトの名無しさん
2014/06/07(土) 20:44:08.32ID:ZfdboDuTたとえばオブジェクト指向言語であれば
Gof本のInterpreterパターンで実装することによって
「実行時に解析する文法」を動的に構成できます
関数型言語だとコンビネータやモナドを使った
構文解析器(パーザ)の動的な構成技法があります
0955デフォルトの名無しさん
2014/06/07(土) 22:43:46.58ID:3R8CEA88わかった
ちょっとjonigataさんに相談してみる
0956デフォルトの名無しさん
2014/06/08(日) 16:02:17.85ID:3LWaPBPWBoost::Spiritでruleインスタンスを差し替えるのを先に思いついた
0957jonigata
2014/06/08(日) 21:20:13.94ID:/sgfaDLOcaperの文法ファイルは動的エンジンで起動時に文法作って読んでる。
0958デフォルトの名無しさん
2014/07/12(土) 10:00:10.48ID:RjnQ2yc8B:=B|(B)
C:=C|(C)
これだとくくり出せないし、LL文法じゃないですよね。
カッコが2つ以上あると特殊な場合を除いてLLぶんぽうじゃないですよね
0959片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/07/13(日) 02:56:51.90ID:rSyi36+2こんな機能があってもいいと思う。
0960デフォルトの名無しさん
2014/07/13(日) 03:18:39.87ID:EUkLrXER0961デフォルトの名無しさん
2014/07/13(日) 03:19:59.56ID:hh7t9GxICPP だけの問題なのでは?どうしてリンカが関係するの?論理的に説明してね
0963デフォルトの名無しさん
2014/07/13(日) 10:10:10.25ID:p5bwqgUP0964デフォルトの名無しさん
2014/07/13(日) 10:11:05.79ID:fq5Ei1vd958についてどう思う?
0965デフォルトの名無しさん
2014/07/13(日) 10:35:33.89ID:YSmlh2ivlibだけダウンロードしてヘッダーはダウンロードしないのは変だから
2.libファイルをネット越しに参照するなら、リンカもネット越しに対応する必要がある
3.よって、リンカもネット越しに対応しないとだめ
0966デフォルトの名無しさん
2014/07/13(日) 11:03:49.99ID:p5bwqgUPこの時点で話が逆になってるし
0967デフォルトの名無しさん
2014/07/13(日) 12:32:33.10ID:fq5Ei1vdB:=B|(B)
C:=C|(C)
これはLL文法に出来ないということでよいですか[y/n]
0968デフォルトの名無しさん
2014/07/13(日) 12:38:12.73ID:hh7t9GxI0969デフォルトの名無しさん
2014/07/13(日) 12:45:23.98ID:+97kXbwc0970デフォルトの名無しさん
2014/07/13(日) 16:30:35.77ID:4JQGeYPE0971デフォルトの名無しさん
2014/07/13(日) 18:44:05.22ID:p5bwqgUP0972デフォルトの名無しさん
2014/07/13(日) 18:57:17.40ID:4JQGeYPE初心者を脱して覚えたてのエイリアス使ってやろうと、
「aとbがエイリアスだったら…」とやっちゃったんだろうな。W
0973デフォルトの名無しさん
2014/07/13(日) 20:21:17.96ID:p5bwqgUP0974デフォルトの名無しさん
2014/07/13(日) 21:08:09.17ID:c9esStKn0975デフォルトの名無しさん
2014/07/14(月) 00:06:14.02ID:IJfuG6DxこれのJavaを生成してくれるものってないのでしょうか
0976デフォルトの名無しさん
2014/07/14(月) 09:01:52.27ID:0ty9SLgyやっと7月12日に書き込んだと思ったら
それを急にスレ違いな書き込みで
スルーするっておかしくない?
0977デフォルトの名無しさん
2014/07/14(月) 16:07:02.50ID:85+K9ELL答えられる人がいないだけだろ
0978デフォルトの名無しさん
2014/07/14(月) 20:53:05.31ID:hsWcAmzQしょうがないから説明するが、>>958の文法は無限ループだから何法だろうがパースできないわけで、
答えなんかないわけよ。そういう頭の悪そうな発言をする人がこのスレに来るミステリー。
あなたがおかしなことを書いてしまったのだから、バカにされたり無視されたりするのは当然の
結果なんだが、俺様が一ヶ月ぶりに質問してやったのにスルーするなという、勘違い甚だしい
態度に二度びっくりだよ。
0979デフォルトの名無しさん
2014/07/14(月) 22:34:06.61ID:+HCYiRGv一切対応せず延々とスレチの話をしてやがって
何が「しょうがないから」だよ
0980デフォルトの名無しさん
2014/07/14(月) 23:47:27.27ID:4Au1+Pyc0981デフォルトの名無しさん
2014/07/15(火) 14:59:02.41ID:JZ9KbigV意味不明。
LL文法ではないかあるかを聞いているのに
「何法でもパースできないから答えが無い」とか的外れな回答をするアホ。
一言LL文法で済む話なのに。
ちなみにプッシュダウンオートマトンでパースできますが、これは
秘密にしておこう。
0982デフォルトの名無しさん
2014/07/15(火) 15:11:44.46ID:JZ9KbigV解析法を質問しているんじゃないんだよな。
本当に的外れワロスwww
少なくとも文脈自由文法に含まれることは確かだな。
0983デフォルトの名無しさん
2014/07/15(火) 22:11:20.95ID:mz5l6m+l>>958は、解析器の作成に失敗するか、常にパースに失敗する解析器しか生み出さない。
パースが成功することは決してない。パース*できない*。
だから、>>967の「LL文法にできるか」という問いには、
「>>958は意味不明であり、あなたが何をしたいのかわからない」
「あなたがやりたいことがLL文法にできるかは『答えようがない』」
っていうのが正解でしょ。
ちなみに>>958の「カッコが2つ以上あると特殊な場合を除いてLLぶんぽうじゃない」については
「LLで、先読みの上限を超えたら上手く扱えないだろうけれど、カッコのせいじゃないだろ。」
って答えができるが態度悪いやつに説明するのが面倒だから無視しているだけね。
0984デフォルトの名無しさん
2014/07/16(水) 09:34:22.88ID:iVIaM1wP985を変形してLL文法解析器で構文解析できるかをきいているんでしょ。
0985デフォルトの名無しさん
2014/07/16(水) 09:39:32.16ID:iVIaM1wPLL(∞)だから扱えないとうのは理由にならない、無限の代わりに十分に大きいN
を使えばいいんだから。
0986デフォルトの名無しさん
2014/07/16(水) 09:52:56.89ID:Dccn/eWm劣勢ですなあ
0987デフォルトの名無しさん
2014/07/16(水) 10:06:34.41ID:iVIaM1wP勇気のある一人誰かが書き込むとハイエナのように
群がってそいつの引きづりおろして人の手柄を横取りする
ハイエナばっかだな。
とくに>>947と片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0(>>959)
どうせこのドチラかの自演だろうけど。
ちなみにおれは通りがかってこのスレを見ただけだがなw
0988デフォルトの名無しさん
2014/07/16(水) 10:12:05.76ID:iVIaM1wP0989デフォルトの名無しさん
2014/07/17(木) 03:01:43.62ID:syfeQpO8開始記号を有限回書き換えて得られる終端記号の並びだと定義されている
>>958は何回書き換えても非終端記号が残るのに何をどうしろと
どこかにεあたりが抜けているような気はする
レス数が950を超えています。1000を超えると書き込みができなくなります。