「コンパイラ・スクリプトエンジン」相談室 3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG前スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)
関連リンクは多分 >>2-8 あたり
0002デフォルトの名無しさん
NGNG色々なツールの紹介
http://catalog.compilertools.net/
コンパイラおよびコンパイラコンパイラに関する本
http://www.ulis.ac.jp/library/Kanpo/Vol14No3/nakai.html
コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
スクリプティング言語資料室(仮) (リンク)
http://www.kt.rim.or.jp/~kbk/
Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html
Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html
再帰下降構文解析の手法
http://member.nifty.ne.jp/nakamula/recurs.htm
情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html
正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm
コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
0003デフォルトの名無しさん
NGNGLinks and Selected Readings
http://www.gnu.org/software/gcc/readings.html
NASM Manual (翻訳は途中まで)
http://guriponn.at.infoseek.co.jp/nasmdoc0.htm
Intel(R) Literature Center (Intelのドキュメントはこちらから)
http://www.intel.co.jp/jp/developer/design/litcentr/index.htm
インテル(R) Itanium(TM) プロセッサ
http://www.intel.co.jp/jp/developer/design/itanium/family/index.htm
Streaming SIMD Extensions 2 (SSE2)
http://developer.intel.com/software/products/college/ia32/sse2/index.htm
0004デフォルトの名無しさん
NGNGUNIX板
yacc & lex
http://pc.2ch.net/test/read.cgi/unix/1031801314/
Lex and YACC primer/HOWTO (邦訳)
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html
Jim Roskind's LALR(1) C++ Grammar
http://www.empathy.com/pccts/roskind.html
Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/
Cygwin
http://www.cygwin.com/
GNU utilities for Win32
http://unxutils.sourceforge.net/
0005デフォルトの名無しさん
NGNGANTLR(非yaccのパーサジェネレータ)
http://www.antlr.org/
JavaCC(Java Compiler Compiler)
https://javacc.dev.java.net/
http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
¬<><∪∪ (notavacc)
http://ne.cs.uec.ac.jp/~koto/notavacc/
boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
http://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0006デフォルトの名無しさん
NGNGGC 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/
0007デフォルトの名無しさん
NGNGkikyou.info (吉里吉里というゲームのスクリプト)
http://kikyou.info/
tiny C コンパイラ (C)
http://www.watalab.cs.uec.ac.jp/tinyCabs.html
Portable Object Compiler (Obj-C >> C のトランスレータ?)
http://users.pandora.be/stes/compiler.html
自作コンパイラの部屋(PL/1, Pascal等)
http://www.tokumaru.org/
0008デフォルトの名無しさん
NGNG●コンパイラ 原理・技法・ツール 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)を読みたい人に。
0009デフォルトの名無しさん
NGNGshuJIT (JITについて)
http://www.shudo.net/jit/index-j.html
ギコBASIC
C言語版
http://page.freett.com/gikob/gikobw00047.zip
C++版
http://page.freett.com/gikob/gbtl-beta3.zip
計算機能論ホームページ
(消えているので、どうしても見たければarchive.org等を利用する事)
http://buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/index.html
YACC link
http://www2.dewa.or.jp/rock/camp/yacc/whatyacc.htm
0010デフォルトの名無しさん
NGNGソース読んで学習する用途に、って事でkmyaccなんかも入れて良かったかも。
Compilers and Compiler Generators も迷い迷って結局入れてません。
(http://www.scifac.ru.ac.za/compilers/)
spiritの位置も少し迷ったのですが、一応パーサジェネレータ「等」って事で。
リンクは一応チェックしたつもりですが、間違ってても勘弁して下さい。
以上。
0011デフォルトの名無しさん
NGNG>(dat落ち)
この部分はいらなかったな。失敗。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG( _(
(.___.)
|| l
|| l、-‐ー、ー‐- 、
,.|| l ヽ ,、-‐ー、
iヽ ./ , i `、
l::::::i .,' / _,、-‐つ l l ',._,、i
l::::::l i ,' / ,、-'"ノ ,'i l ! l ヽ::l
l:::r.'lr/ /ノリ リノi l l iノヽ
レゝ/ / ニ・ニ=lノノリ、
i / ,、-' . . ll|l i ll,、-'´
/ /、 ヽフ ノ lノ | ま、また 立てやがった・・・
,-' ./l lノ. `‐、.___ ,、-'´l |l
,、-'´ /_rl .lヽ``‐、 ,-'"i、l l l
,、-'i / ̄ l lヽ\ i l ノ l l l
i l / i .l lヽ r-、 ノ l lヽ、
l .l / i 丶 |l `‐/ ゝソ\/ ノ 7、
!、 ヽ / ヽ ヽ / / ヽ_ ノ i / i
ヽ ``/ ヽ, / / \ l l
 ̄l !/ ヽ l
0015デフォルトの名無しさん
NGNGサンクス、自分も立てようかと思ってたんだけど、リンクが揃えられなくて・・・
しかし、いきなりの素敵な洗礼ですな。
>>13-14
殆どこの板を使った事のないド素人はすっこんでろっつーの
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG,、‐'''r." `゙ー、
,:'.:::::,イ". .: ...:.::i_;、、、;;_;|; ゙L
_,,.-‐''ノ ヽ;、‐"´,,,.........,,__`ヽ:i `,
,、‐'''""´,,、-‐f .:.::/,:-'"..:..::::::::::::::.゛:‐、',i.,'
く-‐''''ゞ"´, .:;;;;゙.、..:.:::/´".,.::./.:;ィ:::;;,イ:;':::::;::...'、ヽ.
. `'ヽ、 . :ー-ァ;;;;;;;ト'":;;|::;/:;.'::::;;;'.';;ィ;':;/i::::;;i;:::;;:,';.`;"''ァ
゙''‐-、 z-;::l:.:::::;;!、:';;'_;;.'__;;:'゙/"' .l:::;;ハ.;;':l;::l,、‐'"
|..::`'''‐i..::::;;;|/ィ ' =-、.,''. l'/、_r';'゙l;r'
l::::|:::i:;;| .::::;;l: ,''';:/ ゙ r=''';-!.i/'
. !:::l!::ll:;;i .::;;;;l::..'‐-' ,';/゙/;:l:|
',:i.!::!l::;'; :|:;;i:: ..:: :. ..''::,'|;;:|:l
'!.';l. ';.l゙、l::;;!、 ,. ,,イi;;,';;'
. ゙ '! '!';;l:..゙''‐; 、_,,,、.,;i'.i':/ l:/リ
厂 ';! ̄!トト,ィ_'リ、''_.'' '
,r.:'´`゙'= 、r'";;';ヘ_〉'';:ヽ':,
/.:::.;;.;.;;;;;`、ヽ.:.:::;;ri'ヽ_;,'., 'Y':,
/..:.;.;.;.;;;;.:.;;;;`、.'l''"´!';__;!/ .人 ',
,'...:.:;..;;;;_;;;-‐‐;,' '-‐' ..:r' ゙ヽ', ',
'.;-‐‐'".:;;.;.;.;;;;ヽ. ‐‐-'',':.. .::.:ノ:..ノ
`"'''‐、.:;.;...;;;:.;;',::. ./`、;,_;;r'"''゙゙i
ヽ.:;;.;.;;;;;;l/;:.:.:;.;;;;、'l;;:;;.;.;:.',
0019デフォルトの名無しさん
NGNG洋書だけど重要そうなのでこれも貼っとく。
21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam)
ペーパーバック版: http://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
ハードカバー版: http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
0020デフォルトの名無しさん
NGNGやべ、前スレ最後に出た一番重要な奴を忘れてた。
しかし高いなあ……。
あと書き忘れましたが、
beroさんとこの機械翻訳ベースの資料は軒並み消えてしまったので
NASM Manualのリンク先をFreeDOSのぐりぽんさんの所へ変えています。
まあ気合い入れて英語読めば問題無いんですが。
0021デフォルトの名無しさん
NGNGすなわち、通称「赤ドラゴンブック」でコンパイラのこと一般を勉強しているものです。
最近、「ドラゴンブックも内容が古くなってきた」という意見を耳にしたのですが、
どこらへんが古くなってきているのか教えて下さい。
0022デフォルトの名無しさん
NGNG1985年の本ですから古くなるのも無理はないでしょう。
あの本以降に発展した技術には、思いつくものだけでも
SSA
CDG/PDG
JIT
関数型言語の実現法
などがあります。しかし入門用としては今でも十分な内容だと思います。
dragon bookが終ったら、次は最適化に的を絞った本を読めばいいでしょう。
日本語なら>>8の中田先生の本あたりでしょうか。
0024デフォルトの名無しさん
NGNG21世紀ドラゴンブックまだコネー。
0025デフォルトの名無しさん
NGNGというのはおいといてw
bisonとも限らないのですが、単項の負を処理するときに、
%left NEG
...
| '-' exp %prec NEG {...}
とよく書きますけど、厳密には %left でなくて %right じゃないでしょうか?
たとえば、---5というのは、普通-(-(-5))だと思うんですが...
どこかおかしいですか???
0026デフォルトの名無しさん
NGNG単項演算子に優先順位指定は必要ないのでは?
文法の書き方にもよるけど、普通は
unary_expr:
postfix_expr
| '*' unary_expr
| '&' unary_expr
| '-' unary_expr
| '~' unary_expr
| '!' unary_expr
...
てな感じでうまく行きますよ。
002725
NGNG情報ありがとうございます。
でも、そうなんですか、知りませんでした。
いま、アスキーのbison入門という本を見ているですが、
どこにもそんな記述がありませんでした。
ふう〜、奥が深いですね。
ちなみに、
%right '='
%left '+' '-'
%left '*' '/'
%left NEG → 単項-用です。
%right '^'
みたいに、指定しています。
0028デフォルトの名無しさん
NGNG%left で ---5 の場合だと、(--) を処理せんあかんから、
0029デフォルトの名無しさん
NGNG…知らない人がこのレスを見たら意味不明だろうな
0030デフォルトの名無しさん
NGNGどちらも、正しく ---5 を処理できる。
で、生成されたcソースを見てみたが、なんと(ry
0031デフォルトの名無しさん
NGNGそれってなんデすか?
0032デフォルトの名無しさん
NGNG21st Century Compilers
http://www.amazon.co.jp/exec/obidos/ASIN/0321131436
Amazon.co.jpによれば
> 発売予定日は 2003/12/15 です。
> ただいま予約受付中です。
0033デフォルトの名無しさん
NGNG%left/%rightは同じ順位の演算子がならんでいるときに生じるshift/reduce
conflictを解決するためのもの。単項演算子が前置のみなら、そもそも
conflict はおきないので、どちらでもかまわないです。
前置と後置の両方があるときは、%left/%rightが効いてきます。
たとえば、~という演算子が前置にも後置にも使えるような構文を考えます。
expr : '~' expr | expr '~'
このとき、%left '~' なら、~x~は(~x)~と解釈され、%rightなら~(x~)と解釈
されます。
003427
NGNGなるほど!明解な回答をありがとうございました。
ちなみに、それぞれに指定したbisonソースの変換出力(C出力)
を比べてみましたが、両者は実質的に同じものでした。
重ねてお礼を申し上げます。
ありがとうございました。
***
ところで、rubyのソースコードについての書籍があると聞きましたが、
これはインタプリター等の理解&構築にはよい本でしょうか?
ちょっと高めですが、参考になるのなら、と思っています。
0035デフォルトの名無しさん
NGNG確か初めの章だけは既に公開されてるよね。
0036デフォルトの名無しさん
NGNGあんなのに金払う意味無いって。
どうしても読みたいなら図書館行ってこい。
0037デフォルトの名無しさん
NGNG煽りじゃなく、できれば理由を教えてくれ。
おれの場合、あの本読んでいて苛々するんだが、理由を明確に
説明できるほどのスキルがないんで、他の人の意見も聞きたい。
0038デフォルトの名無しさん
NGNGなるほど、HPみたら、そんな感じに宣言されてますね。
しかも、この12月でほぼ1年たつ模様。
ちょっと期待。
0039デフォルトの名無しさん
NGNG>>8 にある本ではダメなの?
0040デフォルトの名無しさん
NGNGlex & yacc に変わるような本を書いてほしい。
0041デフォルトの名無しさん
NGNG佐々 政孝さんの本は出版が少し古いんですね。
0042デフォルトの名無しさん
NGNG全部コンパイラ系の本、
rubyはインタプリター
0043デフォルトの名無しさん
NGNGコンパイラはネイティブコードを生成することが多くて、
インタプリタはしないことが多いくらいで
やることは大体一緒だと思うけど。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG違うのは最適化くらいか?
0047デフォルトの名無しさん
NGNG同じように使えるのは、字句解析器ぐらいか?
0048デフォルトの名無しさん
NGNGなんで字句解析だけ?
0049デフォルトの名無しさん
NGNGC言語にはコンパイラとインタプリタが存在します。
本当に、同じように使えるのは字句解析だけだと思いますか?
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGコンパイラとインタプリタを備えた C の処理系なんてあったっけ?
大抵どっちかだから、共通している部分が多い事の事例にならないような。
こんな事が出来たら嬉しい人も多いだろうに。
#! /bin/env gcc <-- shbang で呼び出せる
//load Xlib <-- ライブラリのロードはコメント文で ==> コンパイラに通す時も透過的
#include <X11/Xlib.h>
int main() {
// 以下略
// 以上妄想
0054デフォルトの名無しさん
NGNG作らない(作っても意味無い)だけだろ
0055デフォルトの名無しさん
NGNGだから、共通している部分が多い事の事例にならないだろ。
0056デフォルトの名無しさん
NGNG同様な構文を持つ言語のインタプリタとコンパイラで
構文解析が共通化できない理由は何ですか?
0057デフォルトの名無しさん
NGNGそこには異論は無いです。細かい突っ込みスマソ。
0058デフォルトの名無しさん
NGNGCommon Lisp もだけど。
0059デフォルトの名無しさん
NGNG源流がLISPだからね。
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNGSchemeがAlgolから受け継いでるのって何?
0064デフォルトの名無しさん
NGNGlexical scopeじゃないかな?
0065デフォルトの名無しさん
NGNG整理可能であるが、現実問題としては、そうはならないということだろう。
0066デフォルトの名無しさん
NGNG高いなぁ〜と感じた。
(2000円までだったら、速攻でかったんだけど)
とりあえず、公開待ちます。
貧乏人で、スマソ
0067デフォルトの名無しさん
NGNG2000 円で買えるコンピューター書籍はそれほどないと思うが?
なにが売ってても買わないの?
0068デフォルトの名無しさん
NGNGみんな安いよw
0069デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4844317210/
良さそうな本じゃん。Perlでこういう本ってあったっけ?
0070デフォルトの名無しさん
NGNGPerlはソースコードが多すぎる。
0071デフォルトの名無しさん
NGNGそれってinfoで全文ローカルで読めるやつのこと?
007268
NGNGinfoは使ってないのでよくわからんが、そうかもしれない。
実はもれも、本文はどこかで(英語???)読んだ記憶があった。
でも、手元に書籍であると、またちがうんだな、これが!
0073デフォルトの名無しさん
NGNGたしか、利益の一部は FSF に寄付されるんじゃなかったかな。
ところで、参考文献としてこの本は既出?
Icon 自体が面白い言語なので読んで損はないと思う。無料だし。
The Implemetation of the Icon Programming Language
http://www.cs.arizona.edu/icon/ibsale.htm
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGそうそうあったあった。どこかにサンプルコード落ちてたよ。
英語版だけど
0077デフォルトの名無しさん
NGNGコードが英語なのは普通じゃ…。
0078デフォルトの名無しさん
NGNGflexは読みやすかったけど、bisonは読みにくかった。
やはり、難しいからですかね???
0079デフォルトの名無しさん
NGNGすいません、ふと疑問に思ったんですけど、
正直、このスレってとっても
(良く言えば)→高度&専門的
(悪く言えば)→難しいばっかりで、地味&マイナー
な領域ですよね?
みなさん、本職は何をされているんでしょうか?
やはり、プロのコンパイラorスクリプト屋さんなんでしょうか?
0080デフォルトの名無しさん
NGNGプロのコンパイラ屋(コンパイラだけ作っててメシが喰える人)ってかなり少な
いと思う。(OS屋はもっと少ないけど。)
他の仕事でミニ言語が必要になったので書いてるとか、大学で論文書くために
作ったとか、あるいは趣味でやってる人がほとんどじゃないでしょうか。
僕はたまたま今仕事でコンパイラを書いていますが、100%のコンパイラ屋では
ありません。
0081デフォルトの名無しさん
NGNGゲーム屋も多いと思う。
0082デフォルトの名無しさん
NGNGどうにもならんからね。
0083デフォルトの名無しさん
NGNGネタw
008474
NGNGもし知っていたら教えてください。
0085デフォルトの名無しさん
NGNG008674
NGNG008774
NGNGPostgreSQLとかのソースを見ればいいのかしらん。
008885
NGNGだからオライリーのサイトにあるよ。
http://examples.oreilly.com/lex/
008974
NGNGきゃーありがとうございます。
0090デフォルトの名無しさん
NGNGおお〜、すごい!
本職&プロですか!
ちなみに、どんなコンパイラ書いてるんですか?
差し支えない程度で結構ですので、
0091デフォルトの名無しさん
NGNG独自のインストラクションセットを吐き出すCコンパイラだけど、
80氏と同じく本職じゃないために、とりあえず動くコンパイラを作っただけ。
最適化とかは必要最低限くらいにしか要求されていなかったし。
俺はフリーのプログラマだけど、
お金をもらえてこういう楽しい仕事が出来るときが一番嬉しいね。
0092デフォルトの名無しさん
NGNGおお〜、「フリーのプログラマ」で、しかもコンパイラまで
書けるのですか!
なんか括弧イイ!ですねぇ〜!
わたしも、フリーではあるのですが、フリーはフリーでも(ry
0093デフォルトの名無しさん
NGNG0094デフォルトの名無しさん
NGNGコンパイラ書くのはそんなに難しくないよ。
漏れも大学や専門学校でプログラム勉強したことなんか一度もないけど、
コンパイラを一回書いたことがある。
そのときのネタは、スクリプトを解釈して整数、浮動小数、文字列の計算をしながら、
その結果を GP-IB (RS232 の遠い親戚みたいなもの) に送り込むヤツね。
キーワードは Bison/Flex (またはYacc/Lex)。
これらのツールが食べられるような特殊な書式さえ覚えれば、
サルでも※簡※単※な※コンパイラなら書ける。
# ただし、サルにはGCCは書けない。
0095デフォルトの名無しさん
NGNGまだ ※簡※単※?
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGUNIX USERのGCCプログラミング工房とか読んでると
すんげーキツそうなんですが。
0100デフォルトの名無しさん
NGNGこんなんとか。
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG年 * 寄 * り * は * カ * エ * レ * !
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG俺がさんざん書こうと思って我慢してたのに(w
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGうまくいきません。みなさんはどうやってやっていますか?
0107デフォルトの名無しさん
NGNGyaccとlexの出力ファイルをコンパイルして使ってる。
0108デフォルトの名無しさん
NGNGwin系で?
0109デフォルトの名無しさん
NGNGちなみに自分は何を使ってるんだ?
0110デフォルトの名無しさん
NGNGそれはあんたしか知らない。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGその突っ込みは板違い
0113デフォルトの名無しさん
NGNGそれはお前が使えてないだk(ry
0114デフォルトの名無しさん
NGNG質の低い書き込みするなよ
0115デフォルトの名無しさん
NGNGマジできくが、それじゃどんなスクリプトが欲しい?
0116デフォルトの名無しさん
NGNGでは、使えないと思ったスクリプト言語を理由と共に列挙してみよ
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGああいう方向もありだと思うよ。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG洋書・和書は問いません。
上の方のレスを見るとコンパイラとインタプリタは少し違うようなので、、、
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG特集1 スクリプト言語を作ろう インタプリタの構造と設計
0123デフォルトの名無しさん
NGNGbison, flex のドキュメント。
gcc の *.y ファイル。
0124デフォルトの名無しさん
NGNGハッシュにして48個(64個)を作ってそれぞれをチャインで
繋いで予約語と関数名と変数等を検索して方が早くないですか・・・
0125デフォルトの名無しさん
NGNGそう思うならそうすればいい。
っていうかそれでいい。
なにか問題でも?
0126111
NGNGオーク:使用目的が限定的すぎ
るび〜:モデル化が変態的すぎ
>>122
もう手にはいらんのとちゃう?
0127デフォルトの名無しさん
NGNGバックナンバー情報をチェックしたら
2000年のは無いみたいだね。
だが、大学の図書館とかなら多分ある。
漏れの母校の資料室にもあった。
っていうか俺んちの図書室にもある。
公的な図書館なら申請すれば
他の図書館から取り寄せてくれたりもする。
絶望的なほどではない。
でも、そこまでするなら本屋で他の本見繕った方がいい罠。
0128デフォルトの名無しさん
NGNG自分もハッシュです。
256でチェインしてます。
記号の"{"ごとにハッシュ表を新たに作り、
新しいハッシュ表から古い方に向かって調べます。
グローバル用は別に1個作り、
関数を呼ぶ場合にも、全く別のセットを作ります。
(じゃないと、下部の関数から上位の変数がみえたりしちゃいますからね)
ちなみに、ハッシュを使わずに作った物は、
6万語ぐらいの定義、10万回くらいの参照、マクロ展開があるファイルのコンパイルに10分、
ハッシュを使った物は30秒ぐらいでした。
0129デフォルトの名無しさん
NGNG今まではハッシュだったけど、
最近、キーワードだけswitch文の羅列で分別するようにしてみた。
もちろん手書きでは大変なので、perlで簡単なプリプロセッサを書いて
そいつに展開させてる。
0130デフォルトの名無しさん
NGNG> 公的な図書館なら申請すれば
> 他の図書館から取り寄せてくれたりもする。
こんど近所の図書館でも聞いてみよ。
千葉県だけど取り寄せてもらえるかな、、、
0131>>124
NGNG0132デフォルトの名無しさん
NGNG013346
NGNGKさん 好循環 Aさん 悪循環
(健康体) (喘息)
1.(神が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある 体力がなくなる
3.K A 行動力、
五感(嗅覚)が鈍り感性が変化する
4.K&P 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。
5.K 変化なし A アトピーになる
6.K 正常な感性 A 外に出なくなりさらに異常な感性になる
7.K 正常な人間 A 異常な人間(レッテル)
013446
NGNG9.K&A 来世
10.K&A 神は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。
11.K&A 神が喘息であるかないかを決める
12.K 喘息でない A 喘息である
13.K&A 1.に戻る
これは事実。広めようぜ
解決法:体力をつけると感覚が正常に戻り、
アトピーも快癒に向かう。
目安としてグランドを10週くらい。
あとはウォーキング、なるべく長い間歩く
(ウインドーショッピングや散歩、五時間ぐらいを目安)。
無論最初は、無理なので徐々に体を慣らしていくといい
鼻に変な違和感があったり、頭がぼおっとする時の解決法。
口をつぐんだまま、口の中で空間を作る、すると口の中に空気がたまるのでそれを吐き出す。無論息が苦しくなったら、呼吸をして良い。
これを、100回くらい。
0135デフォルトの名無しさん
NGNGgcc
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNGBruce evans C Compiler (BCC) がおすすめ
16bitコード生成の最適化無しだけど、ソース分量も多くないし
再帰下降なんでyaccとかも使ってない
作者のBruce EvansはMinix386パッチ開発などで知られる
一応ELKSのコンパイルにも使用されている
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGYACC使ってるほうが、圧倒的にソース簡単なんじゃない?
なんで、勉強には不向きと思われ。
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGそりゃperlでは…
0142デフォルトの名無しさん
NGNG☆チン マチクタヒ゛レタ〜
マチクタヒ゛レタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < ルビ〜ソ〜ス本はマダ〜〜〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄/|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
0143デフォルトの名無しさん
NGNG変数に$つけんとあかんのとちゃう?
0144デフォルトの名無しさん
NGNGそれが?
0145デフォルトの名無しさん
NGNG読んだ方の意見を聞いてみたのですが。
0146デフォルトの名無しさん
NGNGアクセスする部分ってどうなってるのかしらん。インタープリタだと外のライブラリ使えば
良さそうなんだけど。
0147デフォルトの名無しさん
NGNG出力したオブジェクトにAPI呼ぶライブラリをリンクする。
あるいはAPIを呼ぶコードを吐く。
別に疑問なところはないとおもいますが。
0148デフォルトの名無しさん
NGNGレスどうもありがとうございます。
冬休みになったらコンパイラの勉強をしたいなと思ってるのですが、イマイチ基本的な
事から分かっていないのでダメですね。リンカーの本を読めばこの辺も理解出来るの
かなぁ。
0149デフォルトの名無しさん
NGNGC/C++インタプリター cii
ttp://village.infoweb.ne.jp/~fwgi5816/CI/
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGC は Java のひどい移植で、、、と書評で書いてあったのだけど、 ML を Java に移した時点で
すでに糞コードなんですか?
ML で勉強するのはちょっときついなぁ、、、
0152デフォルトの名無しさん
NGNG個人的には、読みやすい疑似コードならあっても損ではないが。
0153デフォルトの名無しさん
NGNGつまり、c&awkとは、ぜんぜん違うということ。
0154デフォルトの名無しさん
NGNGきみは walk でも使ってなさい。
http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/impl/awk/
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGそれって、AWKと同じ?
0158デフォルトの名無しさん
NGNGcygwinのyacc/lexが吐き出すCをVC++が食べてくれないことを>>155は恐れている。
0159デフォルトの名無しさん
NGNGgnuwin32
0160デフォルトの名無しさん
NGNG上で>>156や>>159が言ってる他にも、yacc互換ツールにkmyaccってのがある。
Rubyのコンパイルにkmyaccを使うと実行ファイルが少し小さくなっていい感じ。
>>156
Texも余裕でいろんなバージョンがごろごろしてるよ。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG大きくなるよりいい。
0163デフォルトの名無しさん
NGNG処理系開発に携わった者としては、見ていて恥ずかしいよ
0164デフォルトの名無しさん
NGNG素人をバカにすることはない。
素人をバカにするのは、プロ気取りの汚らしいチンピラである。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGflex入門(ASCII)には、
”スキャナがあるテキストにマッチするために「逆行」しなければならない
ことを、バックトラッキングといいます。”
とあるのですが、ここでいう「逆行」とは具体的にはどういった状態を指す
のでしょうか?
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGディスプレイに映るコードを眺めながら、博士はコーヒーを飲んでいた。
彼のお気に入りの陶器から口を離して、>>170の質問に答える。
「もし君が全てのトークンの機能と連鎖可能性を記述するのなら、もちろん可能だろう。」
博士は私のほうを向いて続けた。
「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」
0172デフォルトの名無しさん
NGNGもちろんソース公開されてる奴で。
たとえば、文字コード変換機とか、音声ファイルのコンバータなど
入力と出力パターンがそれぞれ複数あるとき、
すべてのパターンのコードを記述するのはむだなので
中間形式にいったん変換してから再変換をかけることになると思うのですが
関数合成で一度にできるようにならないかと。
0173170
NGNG妙に納得させられてしまいました。
不完全な記述でもある程度の結果が得られて
(現存する記述と意味の関係から自動推測して処理系を構築するとか?)、
さらに進展性が望めるシステムもあったらどうなるのかちょっと興味があったのです...
>「しかし、それはlexとyaccを使い実装と正規表現を記述するのと、どう違うのかね?」
自分はlex(flex),yacc(bison)を全然使いこなせてないんで
そんなのがあったら楽ができそうだなと思った次第です。(スイマセン)
0174デフォルトの名無しさん
NGNG例えば、
main {
print "Hello World!"
}
ってのから言語処理系を作れないかということですよね?
でも、それって、XMLのデータだけ見て意味づけしろ、というのと同じで、
意味情報が含まれていないから出来ないのでは?
0175デフォルトの名無しさん
NGNG私はそのまま awk を使ってます.
仕事柄 C/C++ とその他のスクリプト言語の使用比率が 9:1 くらいなので,
他の言語がなかなか覚えられなくて. C に似てて仕様的にも単純なものってことで
awk 使ってますが, awk 使うくらいならそのまま C でいいんじゃないかと最近思いました ...
関係ない独り言ですみません.
0176デフォルトの名無しさん
NGNGinlining?
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNGいや、静的ではなく動的に。
0179デフォルトの名無しさん
NGNGAWKってフィルタ指向が強すぎますよねぇ?
それさえなければ、最強なんだけど...
0180デフォルトの名無しさん
NGNG洋書を知りませんか?
Game Scripting 何とか
という名前だったような・・・
0181デフォルトの名無しさん
NGNGttp://www.amazon.com/exec/obidos/ASIN/1931841578/
漏れも前にちょっと買ってみようかと思った。
amazon.co.jpだと在庫切れ。
0182デフォルトの名無しさん
NGNGこんなのあったんだ。
GameProgrammingWith PYTHON, LUA, AND RUBYより、
そっちにスベキダッタ・・・
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNGというか、ほとんど無理?
0185デフォルトの名無しさん
NGNG把握する必要無いし。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGもしかして、シフト/還元のこと?
0188デフォルトの名無しさん
NGNG把握しても動作つかめんから心配するな。
再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが
ままある。手っ取り早くすませたいなら yacc を使って、そうではなくエラー処理
などキッチリやりたければ、手で再帰下降型のパーサ書いた方が良いよ。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGパースしてみる
0191デフォルトの名無しさん
NGNG(再帰上昇型/再帰下降型って何ですか?)
bison は再帰上昇型でいいのですか?
0192デフォルトの名無しさん
NGNG(再帰上昇型/再帰下降型って何ですか?)
bison は再帰上昇型でいいのですか?
0193デフォルトの名無しさん
NGNGぐぐれ。キーワードはこんな感じで。
構文解析 上昇 下降
0194デフォルトの名無しさん
NGNGkeywordありがとう!
0195デフォルトの名無しさん
NGNG> 再帰上昇型のパーサーは、慣れた人間にとっても予期せぬ動作をすることが
> ままある。
これって、本当ですか?
0196デフォルトの名無しさん
NGNG実装がへぼいか、定義がへぼいときは、本当です。
0197デフォルトの名無しさん
NGNG本当。
正常なトークン列を与えたときの動作は予期どおりになるが、異常なトークン列を
与えたときの振る舞いは直感に反することがままある。頑強なエラー・回復処理を
実装したい場合、たとえば
HTML パーサのように、厳密に規格に従ってなくとも受け付けたい
エラー時にそれなりに適切なエラーメッセージを出したい
なんつーばあいには、再帰上昇型は人間の手に余る。
0198デフォルトの名無しさん
NGNGミジカな例まで出してくれてありがとう!
上昇型は、厳密な言語むきってことですかね?
メリットは、記述が少ないことぐらいですか?
0199デフォルトの名無しさん
NGNG(陽にスタックを持ち、表を引いてgotoしまくるだけで、再帰呼びだしはしない)
最近のbisonは再帰上昇型のコードも生成できるの?
0200デフォルトの名無しさん
NGNGfutamura projection の二村さんのサイト見つけた。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG再帰呼び出しと再帰的文法解析を混同してないか?
再帰するためにスタック用意してるんでは?
0203デフォルトの名無しさん
NGNG英語でrecursive descent parserといえば、LL文法に基いて、いくつかの相互
に呼出しあう関数群で記述された構文解析器のことを指す。
これと同様、recursive ascent parserというのは、LR文法に基いて、明示的
な状態スタックを持たず、相互に呼出しあう関数群で構成されている構文解析
器のこと。yaccやbisonが作るパーサーは、明示的なスタックを持つ表駆動オー
トマトンなので、recursive ascent parserではない。(両者は言語を認識する
能力は同じだが、細かい記述能力の点で違いがある)
recursive ascent parser については僕も勉強中なのであまり突っ込まれると
困るが、comp.compilersの過去ログ↓に良いreferenceがあるのでそちらを参
照してください。
http://compilers.iecc.com/comparch/article/93-05-016
http://compilers.iecc.com/comparch/article/93-05-045
0204デフォルトの名無しさん
NGNGそう呼ぶ「流儀もある」というだけの話。
コンパイラ理論に限らず、専門用語は人によって解釈に幅があるのが普通だから、
適当に補って読み書きしとくのが吉だ。
0205デフォルトの名無しさん
NGNGそういえば思い当たる用語がいくつかある。
素数に1を含めている場合があって、教授の中の人に
「素数の定義のなかに『1以外の』ってあるんですけど」
って聞いたら
「小中高ではそのように教えているようだが学会によって違うし、
必要なら論文の冒頭で定義する。」って言ってた。
それと、以前知り合いに聞いたんだが、
そいつの学科では「逆ポーランド記法」
を「ポーランド記法」って呼んでて、
どうしても明確に区別する必要があるときだけ
前置・後置で分けてるんだそうな。
と、言うわけで構文解析に関する学会もいろいろあるだろうし
それぞれで違う定義だったり定義されてなかったりするの
かも知れない。
0206デフォルトの名無しさん
NGNGそれは案外あるね。
ここのコンパイラ&スクリプトだけでなく、全ての千問分野で
そういった傾向があるみたい。
なので、書籍とかでは著者がどういう定義でその用語を使っているかを
把握したうえで理解しないと混乱する時がたまにある。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1072883528/
海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。
必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGすいません、ちょっとお尋ねしたいんですが、
UNIX Programing Environment に出てくる「電卓hoc(最終形態)」が
行っている処理アプローチは、今のスクリプト言語にも十分通用するも
のでしょうか?
それとも、今となっては時代遅れのものでしょうか?
ここにおられる皆さんは、どう感じられますか?
0215デフォルトの名無しさん
NGNGここにあるやつ?
0216デフォルトの名無しさん
NGNG時代遅れだと考えるくらい知識や経験があるならやらなくていい。
そうじゃなければ、やっても無駄にはならない。
0217214
NGNGそうです。(こんなページも有ったんですね。知りませんでした。)
0218デフォルトの名無しさん
NGNGttp://www.okisoft.co.jp/esc/go2.html
ttp://www.okisoft.co.jp/esc/go3.html
ttp://www.okisoft.co.jp/esc/go4.html
『やさしい Lisp の作り方』と『やさしい Java インタプリタ の作り方』見つけた。
Java と C# で実装。
0219デフォルトの名無しさん
NGNGGOD
0220デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=タグ付きポインタ
http://www.google.co.jp/search?q=%22tagged+pointer%22
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG妥協すること。
汎用的だが回りくどい書き方と、特定用途専門で簡単な書き方。
実行時の速度効率と、柔軟性。
メモリ使用効率とスピード。
いろいろいろいろ相反する要素が出てくるので、目標を明確にしておかないと
あれもこれも盛り込んだ挙句に、中途半端で使いにくいスクリプトになりがち。
0223デフォルトの名無しさん
NGNG思いもよらない視点にビクリ!
あんた、プロ?
0224デフォルトの名無しさん
NGNGLISP処理系作るのは簡単だけど、
Schemeの末尾再帰や継続呼び出しを載せようとすると、
とたんに難しくなるよね。
末尾再帰だけならまだ楽か。
0225デフォルトの名無しさん
NGNG大変なのはクロージャや継続の実装に必要な
環境の複製の効率化。
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG>環境の複製の効率化。
これって Scheme に限らない問題だと思うんだけど(lexical closure を持っている
言語は沢山あるよね)、これに関して日本語のまとまったドキュメントってあまり
無いね(知らないだけ?)。
知ってるのはこことか。
ttp://www.shiro.dreamhost.com/scheme/gauche/memo-stack-j.html
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGLisp そのものじゃないが、Lisp に極めて近い文法のファイルでデータを保存する
CAD ソフトは見た事あるな。確かに、書くの楽そうだ。
0231デフォルトの名無しさん
NGNGJava みたいにプリミティブを用意した方が効率良さそう。Hybrid 言語マンセー!
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGhttp://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=%a5%b9%a5%af%a5%ea%a5%d7
%a5%c8%b8%c0%b8%ec%a4%ce%c8%e6%b3%d3
色んな言語の構文の比較。
考えやすく、書きやすく、なおかつ読みやすいシンタックスって何だろう。
Haskell はちょっと良い感じ。
0235デフォルトの名無しさん
NGNGよろしく
0236デフォルトの名無しさん
NGNG以上
0237235
NGNG調べたけど見つからなかった。
よろしく、
0238デフォルトの名無しさん
NGNG0239235
NGNGありがとう
お礼にパトレイバーのプロトタイプをのせとく
http://www.enryu.jp/
0240デフォルトの名無しさん
NGNGhttp://www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0071&rm=50
0241デフォルトの名無しさん
NGNGプログラミング言語は満載した機能を特色の第一とするものではない。
あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。
0242デフォルトの名無しさん
NGNG頭の程度が知れたな
0243デフォルトの名無しさん
NGNG電卓hocですが。
ちょっとしたフロー制御や、ユーザー関数定義等ができることを考えると、
ほぼ、スクリプト言語のコアが出来上がっているとも考えられますが、い
かがでしょうか?
0244デフォルトの名無しさん
NGNG激しく同意。どうもC++系に知識が偏ってるぞ>>240のリンク先の>>1は。
とりあえず本当にSchemeぐらい齧って欲しいな。
0245デフォルトの名無しさん
NGNGlisp知りたてのおばかさんですか?
継続とかコードとデータの同一視とか、その辺の動的な事情が適合しない分野もあるだろうに。
lisp的な考え方は切り捨てるべきときがあることも勉強しときなさいな。
0246デフォルトの名無しさん
NGNGそれとも継続って言ってみたかっただけか?
気持ちは分かるけど、スレの流れからしてそのレスは不自然。
0247デフォルトの名無しさん
NGNGそこの>>1にとっての「夢のプログラミング言語」でしょ、ほっといてやれ。
まあ、C#++くらいの雰囲気になっているのは確かだけど。
0248デフォルトの名無しさん
NGNGただlispといわずにあえてschemeというからには、継続しか要因がないだろうからな。
まあ、実るとは思ってないけど何かやろうとしている人を
頭ごなしに否定するレスってのはどうよって思うわけだ
0249!244
NGNG出典出さなくて申し訳ない。まずは下の「はじめに」を読んで欲しい。
そしたら何で >>244 が Scheme って書いたのかが分かると思う。
ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html
あと、何にせよコンパイラ作るのに Lisp は知っていた方が良いでしょ。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG継続と末尾再起の展開の規定くらいなものだろ
0252デフォルトの名無しさん
NGNG調べるともっと増えるんだろうな
0253デフォルトの名無しさん
NGNGこんなもん実装詳細に分類されるものであって、
言語仕様の議論でいちいち取り上げるほどのものでもないだろ。
gccですら実現できてることだしな。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG> schemeにはあってcommon lispには無いものって細かいことを除けば
> 継続と末尾再起の展開の規定くらいなものだろ
おいおい、>>244たんの言いたいことが全然わかってないね。
言語設計の肝は機能の数ではなく、組み合わせによって
いかにシンプルかつ豊かな表現力をつけるか、ってことなんだよ。
0256デフォルトの名無しさん
NGNG一番大きいのは言語のポリシーの違い。
0257デフォルトの名無しさん
NGNGhttp://www.cminusminus.org/
MLRISC とか C-- とかって誰か使っているのかな。
0258デフォルトの名無しさん
NGNGともに知っているとは考えられない。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG> 増えてるって末尾再起の展開か?
> こんなもん実装詳細に分類されるものであって、
苦笑・・・
0261デフォルトの名無しさん
NGNG> >>241 の出典も知らないで「同意」とかほざいてる >>244 が
どうやって241の脳内を覗いたんだ?
0262デフォルトの名無しさん
NGNGSableCC
http://www.sablecc.org/home/
CUP & JLEX or CUP & JFlex
CUP http://www.cs.princeton.edu/~appel/modern/java/CUP/why.html
JLEX http://www.cs.princeton.edu/~appel/modern/java/JLex/
JFlex http://www.jflex.de/
ANTLR
http://www.antlr.org/
JavaCC以外にもいろいろあるんすね
JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1)
でもANTLRはC++なんかにも対応。
どれがつかいやすいのか。
Sableちょとみたところよさげだなと。
0263262
NGNG上のSableCC URLつながってにゃい。
こっちからいけやす。
http://www.sablecc.org/
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG>もし取り込むとしたら表記法は
>Pointer<PointeeType>
>Reference<ReferredType>
禿しく胴衣!
だれか>>240言語実装してくれ俺には力不足だ。
0266デフォルトの名無しさん
NGNG¬<><∪∪ ttp://ne.cs.uec.ac.jp/~koto/notavacc/
LALR(1)
も追加しておいて。
0267244
NGNGん? 流れの読めん不思議な断定はよしてくれ。
>>241の元ネタを知らずにどうやってSchemeを挙げられるっていうんだ。
偶然にしちゃできすぎだっつの。
……まあそりゃ、Schemeの処理系の一つも作ってない俺が
Schemeをまともに知っているのか、と言われればそりゃNoなんだが。
0268王
NGNG今まで留守にしてすまなかったな。
0269デフォルトの名無しさん
NGNG今から作ろうぜ!
ヲチは俺に任せろ!
0270デフォルトの名無しさん
NGNG真っ当な意見と見せかけ、実は詭弁で論点をはぐらかす輩が多々おります。
皆様も以下の「詭弁の特徴」を覚え、そういう輩を排除しましょう。。
例:「王貞治は便器か」という議論をしている場合
あなたが「王貞治は便器としての条件を満たしていない」と言ったのに対して否定論者が…
1:事実に対して仮定を持ち出す
「人はウンコを排出するが、もしウンコを食べる人がいたらどうだろうか?」
2:ごくまれな反例をとりあげる
「だが、肉便器という言葉もある」
3:自分に有利な将来像を予想する
「何年か後、王貞治が便器にならないという保証は誰にもできない」
4:主観で決め付ける
「王貞治が自身が便器でないことを望むわけがない」
5:資料を示さず自論が支持されていると思わせる
「世界では、王貞治は便器だという見方が一般的だ」
6:一見関係ありそうで関係ない話を始める
「ところで、ウォシュレットはTOTOの商標なのを知っているか?」
7:陰謀であると力説する
「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」
8:知能障害を起こす
「何、王貞治ごときにマジになってやんの、バーカバーカ」
9:自分の見解を述べずに人格批判をする
「王貞治が便器じゃないなんて言う奴は、社会に出てない証拠。現実をみてみろよ」
10:ありえない解決策を図る
「王貞治が便器になれば良いって事でしょ」
0271デフォルトの名無しさん
NGNG> 「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」
フジって何だ?
これが全然関係ない話を進める詭弁か?
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG++x
と
x++
を実現するのって結構むつかしいですね。
前者は簡単だけど、後者はどうしてます?
0276デフォルトの名無しさん
NGNG> x++
「x」 の値と、「x++」の評価結果を分離すれば良いだけの話では?
0277デフォルトの名無しさん
NGNG・xの変数を増加する。
これだけでは?
0278デフォルトの名無しさん
NGNG効率考えないなら((x=x+1)-1)と変換してもいい。
実際、pccは内部でそう表現していたように思う。
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG前置++がunary
後置++がsuffix
xがprimary
0281デフォルトの名無しさん
NGNG字句解析はなんとか解りました
問題は構文解析と意味解析
構文解析の構文解析表(動作表)でつまづいてます。
簡単に書いてるHPはないでしょうか?
0282デフォルトの名無しさん
NGNG構文解析の手法はひとつじゃないからもっと詳しい状況を書かないと話にならない
0283デフォルトの名無しさん
NGNGLLで手書きでやってるの?
0284デフォルトの名無しさん
NGNG実装するのが案外難しいというのは本当だろう。
タイミングずらして再評価する必要があるからね。
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGLLでFirstとFollowの作り方なら
「コンパイラの仕組み(朝倉書店)」が分かりやすいよ。
0287デフォルトの名無しさん
NGNGコンパイラってオブジェクト指向言語で書いちゃだめなの?
0288デフォルトの名無しさん
NGNG全く問題ない.
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGどこかでグラフが会ったと思う。ステップ数を調べたもの。
いまなら Lua も結構いい戦をいっていると思う。
0292デフォルトの名無しさん
NGNGシンプルなlispは1kステップも消費しないよ
Lisp=Common Lispってわけじゃない
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG実際7行に収まったのはBASICだったかと。
0295デフォルトの名無しさん
NGNG処理系の実装とはいえない気がしなくもない
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4785620501/qid=1074435361/sr=1-7/ref=sr_1_10_7/249-4431792-9641118
借りてきた
意味わkらnしn
0301デフォルトの名無しさん
NGNG真面目に読めばわからんこともないな
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG対応ってどこまで言えるかな。
Stack/LIFO: Forth
Linked List: Lisp
Structure/Record: OOP
後は適当 :P
Hash/Assoc: AWK
Stream/Queue/FIFO: Lazy Langs
Enum: ?
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG自分が参考にしている処理系はこんな感じ。全然読めてないけど。
LittleSmalltalk. Smalltalk のサブセット。
ftp://ftp.cs.orst.edu/pub/budd/little/index.html
minischeme. こっちは Scheme.
http://tinyscheme.sourceforge.net/minischeme.tar.gz
SECDR-Scheme. これも Scheme
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNGなんで? node=cons, leaf=atomの二分木でいいじゃん。
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG決める必要あるの?
node1かnode2かが判れば充分で、node1が右か左かなんてどうでもいいじゃん。
0310デフォルトの名無しさん
NGNG二分木なんでしょう? 二分木のようなかたちをした役立たずな何かではないんでしょう?
0311デフォルトの名無しさん
NGNG親切な奴だな。
右か左かどうでもいいなどと言う>>309が二分木をわかってないのは明らかなのだし、
わざわざヒントやらなくともよかろうに。
0312デフォルトの名無しさん
NGNG>>310
node1かnode2もしくは右か左かはそのままcar、cdrじゃねえか
0313デフォルトの名無しさん
NGNG二分木と名乗るためには、datumがnodeの右にあるのか
左にあるのかを判定するための何かが必要だということだ。
0314デフォルトの名無しさん
NGNGこういうことかな?
0315デフォルトの名無しさん
NGNGどうでもいい話のことか?
0316デフォルトの名無しさん
NGNGそれは二分検索木とかそう言った物では無くて?
二分木ってただノードを二つ持てる木のことを言うんじゃねーの?
オスエテー。
0317デフォルトの名無しさん
NGNG検索以外の例では逆ポーランド電卓の構文木とか意思決定木などが挙げられる。
そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。
>>316
> 二分木ってただノードを二つ持てる木のことを言うんじゃねーの?
ツリーとしての見方やオペレーションがなければ木とは言わない。
また、特定の文脈なく二分木と言えば通常は>>316が二分検索木と呼ぶそれを指す。
0319デフォルトの名無しさん
NGNGlinked listじゃないよね。
0320デフォルトの名無しさん
NGNGもちろん、二分木は単に「根や節からの枝が2本以下である木構造」。
ちなみにLISPのリストは二分木だし、もっと言えば完全二分木。
これは「根や節からの枝が2本である木構造」。
0321デフォルトの名無しさん
NGNG> そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
> データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。
リーフを並べたリストで((1 . 2) 3 4)と(1 2 3 4)の区別をつけられるのか?
どっちもリーフのリストは[1, 2, 3, 4, nil]だと思うが。
0322デフォルトの名無しさん
NGNG((1 . 2) 3 4) をツリーとして扱うのか?
[(1 . 2) 3 4] として捉える場合がほとんどではないか?
>>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
構成されたものをデータ構造的に二分木とは扱わないのではないか?
0323321
NGNG> ((1 . 2) 3 4) をツリーとして扱うのか?
> [(1 . 2) 3 4] として捉える場合がほとんどではないか?
いや、nil終末がなければ別のデータになる。何のためのドットだ?
> >>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
> 構成されたものをデータ構造的に二分木とは扱わないのではないか?
じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね?
実は意思決定木は二分木ではない。一般にはn分木。
例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。
で、意思決定木のdatumは述語が入るというつもりだろうが、それは間違い。
(たぶん意思決定リストと混ざってないか?)
述語はむしろ枝のほうに定義されていると考えるのが自然。
つーか、普通はそう定義されている。
もちろん、述語が枝に入る以上、節にdatumは無し。
な、節にdatumが無くても木構造にする意味があるだろ?
節に述語が入るのはむしろ意思決定リストのほう。
0324デフォルトの名無しさん
NGNG> > 構成されたものをデータ構造的に二分木とは扱わないのではないか?
>
> じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね?
>
> 実は意思決定木は二分木ではない。一般にはn分木。
> 例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。
同意。
先のポストは二分木に限定した文脈だったので、yes/no意思決定木の積もりだった。
この場で訂正させて頂く。
一般のn分木での場合に
> 述語はむしろ枝のほうに定義されていると考えるのが自然。
> つーか、普通はそう定義されている。
なのは同意する。
ただし述語はルート以外の節にも入るので、
> な、節にdatumが無くても木構造にする意味があるだろ?
は先の文脈においては同意しない。木構造一般については同意する。
二分木においてリーフにのみdatumがある有効な例を示して頂けると有難い。
前半については (1 . 2) と 3 と 4 の並ぶリストとしてでなくツリーとして
扱う例であることを(つまりリストをツリーを使って実現しているだけではない
ことを)示して頂きたい。
0325321
NGNG> > 述語はむしろ枝のほうに定義されていると考えるのが自然。
> > つーか、普通はそう定義されている。
> なのは同意する。
> ただし述語はルート以外の節にも入るので、
ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。
述語が節ではなく各枝に定義されている以上、
> ただし述語はルート以外の節にも入るので、
の意味が全然わからない。節に入るのではなく、枝(arc)に入るんだから。
まあいいや、もっと簡単な例を出してみようか。二分決定木の特殊例。
ある固定長の入力ビット列X={x0, x1, x2, ..., xn}について、
根および各節において、Xから先頭要素を破壊的に取り出して、
そのビットを判定する操作をしたとする。
この二分決定木は、根と節がn段で、その先にTrue/Falseの枝がある。
これで全ての入力に対してTrue/Falseを返すことができる。
普通はここで二分決定木を簡約しにかかるわけだが、ここではそのまま使う。
さあ、この二分決定木、実はLISPのリストで構成することができる。
例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、
nilならばcdrに降りていって、n段終わったら、そこにあるatomがnilならばFalse、
それ以外ならばTrue、といった具合。
ね、LISPのリストは木構造でしょ?
ドットを使ってnil無しのcons作るのにも意味あるでしょ?
0326321
NGNG> 例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、
> nilならばcdrに降りていって、
ビット列だから、not nilやnilではなく、1か0だった。そう読み替えてくれ。
0327デフォルトの名無しさん
NGNGよく理解できてないが、
その入力ビット列とやらは節のdataに相当するんじゃないの?
LISPのリストが木構造ってのはわかるけど、
consでニ分木というのはどうか。
というか、簡単な例としていきなり特殊な例もってくるってのが・・・。
普通に考えてconsで2分木を作るとすると、セルを2つ使って
car => data
cadr => left
cddr => right
じゃない?
単に木として扱うならconsよりはvectorの方が使い勝手は良い気がするけど。
0328デフォルトの名無しさん
NGNG> ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。
> 述語が節ではなく各枝に定義されている以上、
リーフ以外のツリー内部に述語が保持されているかどうかが問題じゃないの?
節の一部と見るか枝と呼ぶかはささいな見方の相違だと思うけど。
0329デフォルトの名無しさん
NGNGスクリプトエンジンを経験された方はいますか?
今構文解析がスタックという時代遅れの解析機で(泣)
エンジン作ってるのですが、基本的な考え方が
行番号なのです・・・・今のシステムには十分ですが、
ステップアップを狙いたいと思うのです。
こちらで紹介されているのはコンパイラが多いですが、
デバッグの関係上インタプリタを希望します。
一応「インタプリタ進化論」なるものに目をつけてはいるのですが、
こちらの本はオススメなのでしょうか?
私程度のスキルならrubyソースコード徹底解剖も参考になると思っているので、
併せて購入するつもりです。
0330321
NGNG> その入力ビット列とやらは節のdataに相当するんじゃないの?
全然違います。
それぞれの節は子へのリンクしか持っていません。
詳しくは二分決定グラフを参照してください。
0331デフォルトの名無しさん
NGNG失礼だけど、あなたの用途や文章から分かるスキルの場合、
もっと簡単な物を作った方がイイよ。
エンジンじゃ無くてコンパイラだよね?
ここが優しいよ
ttp://member.nifty.ne.jp/KENJI/scr0/
0332デフォルトの名無しさん
NGNG2Dフィールド型のRPGってアクション?
それと、大体のゲームが中間言語インタプリタ型のコンパイラなので問題ない。
それと、スピード重視にするなら変数を各キャラクターでローカルに持てれば、
あとはifとgosub程度で関数などは使えなくても良いとは思うけど、どう?
0333デフォルトの名無しさん
NGNGあう、一応DOS時代のQBASIC程度のことはできてるんです・・・多分。
でも知ってると思ってて知らないなんてイヤなんで、
yaccとかbisonについて最初から勉強してみます。
>>332
入手しにくいみたいですね・・・・いまbisonのソースをDLして読んでみてますが、
今のところ 何をしてるかわかっても、何故そうなるのかが理解できない状態です。
本はいったん諦めて、自分で独学していこうと思います。
幸運なことにインターネットリソースもあるようで、先人たちに多謝。
>>2Dフィールド型のRPGってアクション?
はい。昔QCで作ったのをリファインするつもりなんです。
#やっぱり俺、かなりのヘタレだ・・・もっと勉強します。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNGさて何か作ってみよう
0336デフォルトの名無しさん
NGNG字句解析 → 行頭の1文字でコンパイル内容を変える
構文解析 → 行頭に { と } を置いたとき、その間の行はコンパイル内容を変える
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG中田氏のものは内容が濃いから、わからないことがあったらぐぐるベシ
0339デフォルトの名無しさん
NGNGhttp://www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html
ついに8月1日まで延期みたいです。気長に待ちましょう
0340デフォルトの名無しさん
NGNGなんか最初の読点までがエロい
0341デフォルトの名無しさん
NGNGそう思ったのは俺だけじゃなかったか
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG0345337
NGNG中卒登校拒否マンの僕には激しく難しい。
0346デフォルトの名無しさん
NGNGプログラミング以前に必要とするものがあるんじゃないのか
0347337
NGNG0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNGかなりの大物だな。やるじゃねぇか( *´д`)ハァハァ
0350デフォルトの名無しさん
NGNGガンガレ
0351デフォルトの名無しさん
NGNGなんか見つけた。プログラム言語の作成とか最適化とかの講義資料らしい(注:もち英語)。
これにかぎらず、MITのOPEN COURSEWAREは宝の山だ。
ttp://ocw.mit.edu
この板としては、特にコンピュータサイエンス関係が。
ttp://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/
・・・やっぱ英語、読めた方がいいなぁ、と、今更ながらに思う。
0352デフォルトの名無しさん
NGNG産休。
ちょっと文章がおかしいけど、サンプルが簡単でいいね!
はやく第二部の方も作ってほしい!
0353338
NGNG0354デフォルトの名無しさん
NGNGこれをチャットに発動させるようにするにはどうすればいい?
スクリプトってよくわからんのよ…
0355デフォルトの名無しさん
NGNG板違い。
この辺で訊いてみ。
JavaScript:document.body.innerHTMLのガイドライン
http://that.2ch.net/test/read.cgi/gline/1070715430/
0356デフォルトの名無しさん
NGNGスレタイトルが誤解を招きやすいんじゃないかな。
そもそも「スクリプトエンジン」というのはあまり一般的じゃないし。
『言語処理系(コンパイラ・インタプリタ等)作成者の集い』
とでも変えた方がいいと思う。単に「相談室」だと、処理系を作る人向けとい
うことが伝わらないから「作成」という言葉はあった方がいい。
0357デフォルトの名無しさん
NGNGすんまそん、あっちで聞いてきました
0358デフォルトの名無しさん
NGNGどうやるの? 宜しかったらポインタを教えて下さい。
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG今日読んだソースがそんな感じでした。何やってるか全く分かりませんでしたが・・・。
アセンブラ勉強するしか無いのか。
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGアセンブラの初歩の初歩くらいは知ってても良いと思う
x86がアセンブラ初歩学習に向いてるかはワカンネ
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365amazonよりお知らせ
NGNGAlfred V. Aho (著), その他 "21st Century Compilers"
現在、この商品は発売準備が進められている状況でございます。お客様のご
注文は、商品の発売までこのまま継続させていただきます。この商品が入荷
された時点で、Amazon.co.jpサイトの「アカウントサービス」に表示された
商品の注文内容が「近日発売」から最新の在庫情報へと更新されますので、
ご参照ください。
03661
NGNG俺がスレ建てた数日後に別の所でテンプレ纏めてた人いたんだ。
プログラミングの言語ってどうやって作るの
http://pc2.2ch.net/test/read.cgi/tech/1033623291/138-151
詳しくは見てないけど、個人的に追加したのもあるって事なので
次スレ建てる人は見ときましょ。
0367名無し@沢村
NGNGhttp://hp.vector.co.jp/authors/VA015412/
↑だんだん充実してきたぞ。世界一くらいにな〜♪見ちみれ。
0368デフォルトの名無しさん
NGNGという質問をされたら何と答えたらいいと思いますか?
0369デフォルトの名無しさん
NGNGまあ、どんなプログラムもオートマトンの一種ですからね。
0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGそれで相手がどう思おうと、人生には大した影響ないだろうし。
0372名無し@沢村
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNG初めて聴いたときには「こんな単語、一般人はわからねえだろ」と
突っ込んだ記憶がある
0377デフォルトの名無しさん
NGNGトマト(トマト見つけた
ン!(まい(美味しい
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNGどっかの(嘘)用語解説かなんかで
勝手に鍋へ飛びこむ羊のこと
って書いてあったよねぇ。
0383名無し@沢村
NGNGhttp://hp.vector.co.jp/authors/VA015412/
0384デフォルトの名無しさん
NGNGURLはるなバカ
おこるぞバカ
0385名無し@沢村
NGNGきんたまのぉ〜おっちゃんがぁ〜くそ屁をこいた〜糞こいたぁ〜
http://hp.vector.co.jp/authors/VA015412/
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNGWindowsの実行ファイルのフォーマットって解りますか・・・?
バイナリ見る限りMZっという文字が入ってるのは解るのですが・・
0388デフォルトの名無しさん
NGNGヘッダの構成はわかったとしても、そこにどういう値を入れるのか
はっきりしないことが多いし。
つーか、PEフォーマットとかCOFF obj形式とかの解析スレ立てない?
外部アセンブラやリンカに頼らずに自分でexeファイルを作れる様に
なる目的で。アセンブラスレとは内容的にかち合わないし。
スレタイは
「.EXEや.OBJを手作りするスレ」
とか。
0389デフォルトの名無しさん
NGNG「機械語プログラミング」にオブジェクトファイル形式も
入るんじゃないの?
0390名無し@沢村
NGNG「MZ」という文字はDOSの受け皿のことだよ。
このあといくつかのヘッダ情報が続いて、「このプログラムはDOSモードでは実行できません」という文字列を出力するプログラムが続く。
そしてその少し下の見ると多分「PE」という文字があるだろ?「PE」でない場合もあるがね。
そこからやっとPEファイル(GUIの実行ファイル)のヘッダが始まるのだよ。
つまりういんの実行ファイルはPE形式なんだ。
PE形式については、2、3日以内に、おれのサイトで全仕様を公開するから、楽しみにねぇ〜♪
http://hp.vector.co.jp/authors/VA015412/
0391デフォルトの名無しさん
NGNG「機械語プロ〜」だと範囲広すぎです・・
ちなみにインストラクションコード手書するとかが目的なわけじゃなく、
(コードの手書きは資料も揃ってるしそんなに難解でもない、)
純粋にそういうコードを単体で動かすために必要な、
MZ〜から始まる実行ファイルやリンカに食わせるCOFFデータ
の方の話がしたいので。
0392デフォルトの名無しさん
NGNGここでは駄目。
0393デフォルトの名無しさん
NGNGただの単発質問スレだろう、それじゃ。
0394デフォルトの名無しさん
NGNGGNUのクソコードを読む暇はさすがにないと思うぜ(w
0395デフォルトの名無しさん
NGNG殆どこの板を使った事のないド素人はすっこんでろ
0396デフォルトの名無しさん
NGNG----------------------
DOS 2.0 Section
----------------------
PE Header
----------------------
Section Headers
----------------------
Image Pages
----------------------
0397デフォルトの名無しさん
NGNG----------------------
MS COFF Header
----------------------
Section Headers
----------------------
Image Pages
----------------------
0398デフォルトの名無しさん
NGNGここは見ての通り厨の溜まり場なので、
とりあえず↓に移動して聞いたほうがよいかと
機械語なら俺に質問しろ!
http://pc2.2ch.net/test/read.cgi/tech/1035288252/
0399デフォルトの名無しさん
NGNGでもあれは広く浅くだから大して参考にならないか。
日本語で読めるものとしてはただ一つと言っていいソッチ方面への入門書だけど。
PEの資料へのリンク↓
http://wiki.osdev.info/index.php?%5B%5BPE%5D%5D
ってか、沢村がマトモな事言ってるのにスルーされてて笑ったw
>>390
がんがれー。
英文丸写しでなく日本語のを頼むぞ!
0400デフォルトの名無しさん
NGNGLinker && Loader
http://pc2.2ch.net/test/read.cgi/tech/1033403294/
0401デフォルトの名無しさん
NGNGhttp://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0402デフォルトの名無しさん
NGNGげ、こんなページがあったとは・・・
0403デフォルトの名無しさん
NGNG>>401すげー。
以前はMSDN Onlineで公開されてたのか?
0404デフォルトの名無しさん
NGNG初めてみたぞ。 GJ!
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGそこは知ってますが、
どうやっても>>401の様な情報には辿りつかなかったです・・
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG差別されてるんじゃないか?(w
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNGアメ公ならやりそうな事だな。
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG文字をハッシュで調べる
・変数、関数名、キーワードを判別
ハッシュのない場合
・数値
・変数名
・関数名
をSwitch分で単語に区切る
・
構文解析
区切った単語を木で別ける
キーワード文(IF文等が正しいか評価する)
意味解析
木で別けた文を
計算式、評価式が正しいか・・・
目的語の変換
・Data
・PRORAM
・RPOC
引数
StackPointを設定する
戻り値(相対的
返り値(相対的)
・相対的なラベルを設定する
リンカ
・関数
・グローバル変数
・相対的なラベルを絶対値にする
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG0420名無し@沢村
NGNG恐ろしすぎるぞ!!おまーら↓
http://hp.vector.co.jp/authors/VA015412/
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGLLとLRの解析処理の違いは何となく理解できたのですが、
記述能力という面でどういった違いがあるのでしょうか?
javaとかって(LA)LRでないと記述できないみたいな事も
聞いたことがあるけど、これってLLでは記述できないって事で
しょうか。
0423デフォルトの名無しさん
NGNGLL(1)で書けるかどうかはわかりませんが、
ANTLRというパーサー生成系で書かれたJavaの文法がありますから
LL(k)で記述可能なのは確かです。
0424デフォルトの名無しさん
NGNG無駄ではなーい。
乙。
各ページにTOPへのリンク付けて、ロボット検索でどっかのページへ直接着いた時にも
他のページへ辿れるようにしとけー。
0425デフォルトの名無しさん
NGNGANT"LR"ってLR系かと思い込んでました。
LL(k)だったんですね。ありがとうございました。
0426デフォルトの名無しさん
NGNGyacc&lexのソースコードは何行ぐらいになりますか?
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG以下のコードを最適化(局所的に?)するとどーなるんですか?
低レベルかもしれませんが私にはさっぱりです。
for(i = 0; i < 100; i++)
a[i] = b[i] * c[k]−b[i];
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGc[k]がループ不変なので外に出す。
もっと気合いがはいってるコンパイラなら、
a[i]=b[i]*(c[k]-1)
に変換したあと (c[k]-1)をループ外にくくり出すくらいはやるかな?
そしてinduction variableを消す。
ck_1 = c[k] - 1;
ap = a; bp = b;
for (i = 0; i < 100; i++) {
*ap = *bp * ck_1;
ap++; bp++;
}
あとはループunrollingとかforをdo-whileにおきかえるとか。
0431デフォルトの名無しさん
NGNG手元にあるANSI Cのyaccによる定義。ソースが766行(宣言部と文法定義のみ)。
終端記号、還元規則の数などは:
83 terminal symbols
80 nonterminal symbols
224 productions
364 states
フリーな言語処理系はたくさんあるから、入手して眺めてみては?
0432デフォルトの名無しさん
NGNGc[k] が定数となるのは a と c が重なっていない場合のみ
なので、無条件にループ外に追い出すことはできない。
仮に c[k] がループ不変であるとすると、教科書的には
これが最適ではないかな。ただし、ターゲット CPU に
とって、最速かどうかは別の話だが。
ck_1 = c[k] - 1;
for (ap = a, bp = b, ae = a + 100; ap < ae; ap++, bp++)
*ap = *bp * ck_1;
0433428
NGNGありがとうございます。
たぶん気合はいってないコンパイラなんでc[k]がループ不変だから外に出すってことは
t=c[k];
for(i = 0; i < 100; i++){
a[i] = b[i] * t−b[i];
}
これでOKですか?
0434デフォルトの名無しさん
NGNGt=c[k]; → t=c[k] - 1;
a[i] = b[i] * t−b[i]; → a[i] = b[i] * t;
0435デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGタイミング的にD言語スレの人だよな?
どっちでもスレ違いになっちゃうけど、
とりあえず向こうにレスしておいたYO。
0438Amazon.co.jp よりお知らせ
NGNG以下の商品については入手できないことが判明いたしました。
Alfred V. Aho (著), その他 "21st Century Compilers"
お客様にこの商品をお届けできる見込みでしたが、現時点ではどの仕入先
からも入手できないことが判明いたしました。お客様のご期待に背くお知らせ
となりますと共に、お客様にご迷惑をおかけしたことをお詫びいたします。
ガ━━(゚Д゚;)━━ソ!
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG注文しなおせw
今はちゃんと「予約する」になってるから。
0441デフォルトの名無しさん
NGNG絶版モノでも結構しつこく在庫捜してくれたよ>猫
0442デフォルトの名無しさん
NGNGいや、絶版じゃなくて「まだ出版されてない」本なんです。
>>440
2004年8月1日に伸びてますね。気長に待つしかないか。
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNGhttp://www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html
ISBN: 0-321-13143-6
Publisher: Addison-Wesley
Copyright: 2006
となっているのは2006年まで延期するという布石かな
0445デフォルトの名無しさん
NGNGホントに出版されるんだろうなあ・・・
0446デフォルトの名無しさん
NGNGわかるんだけどクラスがさっぱりわからん
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGガ━━━━ΣΣ(゚Д゚;)━━━━ン
0449デフォルトの名無しさん
NGNGjava.io.StreamTokenizerは便利だと思った。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/StreamTokenizer.html
0450デフォルトの名無しさん
NGNG自作する人もそれなりに居るだろう
で、それに満足できなくなったらlexに進むってわけだ
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGvptrで検索。
0453デフォルトの名無しさん
NGNGhttp://spirit.sourceforge.net/repository/applications/show_contents.php
いい時代だ
0454デフォルトの名無しさん
NGNGfull ANSI C とはとても呼べたもんではないよなあ
Cはプリプロセッサがないと魅力半減だし
0455デフォルトの名無しさん
NGNGラッパーのスクリプトでも書けばいいんじゃないの?
0456デフォルトの名無しさん
NGNGつうか、プリプロセッサは
あるものを使えばいいんじゃないの。
プリプロセッサまで自作する意味ってある?
0457デフォルトの名無しさん
NGNG書き方わかんないから
最後まで責任とってほしいよ
なんなんだよあの中途半端さは
0458デフォルトの名無しさん
NGNG馬鹿かおめえは
んなこといったらc.zipの存在そのものが
まるっきり無意味じゃねえかよ
0459デフォルトの名無しさん
NGNGプ
本気でそう思ってるの?
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGほんとに馬鹿まるだしだな
哀れでしょうがないぞ
頭大丈夫かい?
>>460
何なのか説明しろよ。
0462デフォルトの名無しさん
NGNGSpirit で記述された C/C++ プリプロセッサ。
つーか、ドキュメント嫁
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG漏れの目が腐ってるだけでした
0465デフォルトの名無しさん
NGNGこれほんとに使ってる奴いるの?
0466デフォルトの名無しさん
NGNGboostとかLokiを採用してるプロジェクトなんて見たこと無いんだけどさ。
0467デフォルトの名無しさん
NGNGウィトゲンシュタイン
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGboost知らなくてバカにされたとか?
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGttp://www.kmonos.net/alang/boost/
日本語解説でわかりやすいよ。
ここみて必要性を感じなければ使わなければ良いだけの話。
ましてや他の人がboostを使ったコードを納品する機会が
あるかどうかなんて知らなくていいでしょ。
0472デフォルトの名無しさん
NGNG構文そのものの意味を変えてコーディングするスタイルを
強要するライブラリ(spiritとか)があるから
なんかあんまり好きになれない。
0473デフォルトの名無しさん
NGNG基本的にはやりすぎだと思うけど、boost::filesystem の
パス結合演算子を「/」にした辺りはなかなか面白いと思ったり。
Boost っていろいろごたまぜだから、
俺は気に入ったところだけつまみ食いという感じ。
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGご親切にありがとうござい居ます。
やはり、かなりの数のシンボルが有るんですね。
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG) より end のほうがユーザビリティがイイんだよ。ボケが。
0480デフォルトの名無しさん
NGNGどうしても此処でやりたきゃ、可読性の悪い理由書け >>479
そうすりゃ、言語仕様やらの話題になる。
0481デフォルトの名無しさん
NGNGそれともオブジェクトコード作ってリンクする所まで?
0482デフォルトの名無しさん
NGNGそれとも不可分と考えるべき?
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNGC++とかコンパイラだけしか見ないって条件だと殆ど無理じゃね?
0486デフォルトの名無しさん
NGNGアセンブラを呼出してオブジェクトにすればいい。
ただし権利関係やソースのフォーマット等で既存のが使えない場合は
アセンブラも自前で作らなきゃならない場合も多い。
0487デフォルトの名無しさん
NGNG物凄いメリットが生まれたんだから。
0488デフォルトの名無しさん
NGNG↓
0489488
NGNG0490デフォルトの名無しさん
NGNGワロタ
0491デフォルトの名無しさん
NGNGPaul Grahamの文章を読んで勘違いしたLisp厨が悪い。
つかPaulはさっさとArcを世に問えよ、と。
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNGcurl という(ダウンローダじゃないよ)のがあったな。確か昔スレたったと思う。
Arc は使ってみたいね。[] 萌え。Lisp は適度に [] を入れれば結構読み易くなりそうな
気がするんで期待してます。
いつか Scheme コンパイラ作ってみたいな。
0497デフォルトの名無しさん
NGNG0498名無し@沢村
NGNGほんにおまいら〜♪
http://hp.vector.co.jp/authors/VA015412/
0499デフォルトの名無しさん
NGNGttp://fabrice.bellard.free.fr/tcc/
ttp://2.csx.jp/users/bitwalk/tcc.html
0500デフォルトの名無しさん
NGNGhttp://i.loveruby.net/ja/rhg/
ついに来た。
0501デフォルトの名無しさん
NGNGhttp://www.cobalt.co.jp/writing/index.html
just a memo.
0502デフォルトの名無しさん
NGNGメタメタしなくていいしw
0503デフォルトの名無しさん
NGNGたんなるラッパーでは通用しませんよね?
やはり、これって自前で実装しなければならないんでしょうか?
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG可変長引数の処理ができれば
実装しなくてもvprintfかvsprintfでどうにかなりそうだけど
0507デフォルトの名無しさん
NGNGC言語の仕様だけで任意の可変長引数を作り出すのってできたっけ?
スタック弄らないとだめ?
0508デフォルトの名無しさん
NGNGできる。stdarg.hの説明でも見れ。
0509デフォルトの名無しさん
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c15.html#13
には出来ないって書いてあるみたいだけど?
なんか間違ってる?
0510デフォルトの名無しさん
NGNGあー、そっか。
実行時は確かにできないや。スマソ。
素直にスタック弄ってくらさい。
0511デフォルトの名無しさん
NGNGスタックいじるのって禁じ手かも。
0512デフォルトの名無しさん
NGNG15.13あたりかな?
やはり、printfのwrapperは無理みたい。
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNGスクリプト言語での1回のprintf呼びだしを、
1回のCのprintf関数呼びだしで実現しようとすると大変だが、
引数をひとつずつ処理して、何度もprintf呼べばいいんでない?
0518デフォルトの名無しさん
NGNGフォーマットを解析する必要があるので、
移植性は優れるが手間は余計にかかると思われ。
0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGOK
0521デフォルトの名無しさん
NGNGVBScriptみたいにCOM扱えないと話にならない気がする。
と、VBScript書いてて思った。
でもCOM扱うの面倒なんだよな。
自作の言語をWSHに対応させたって人いる?
たぶんえらい手間掛かってると思うけど。
0522デフォルトの名無しさん
NGNGが、IE中でscriptタグで動かすと凍るのであきらめた。
コンソールからだと、WScript.CreateObjectが上手く行く時と行かない時があったような、記憶はある。
だいぶ前の話です。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNGGood Idea!
ただし、scanfには使えない可能性が...
0525デフォルトの名無しさん
NGNGなんつうか、潔さ?
0526デフォルトの名無しさん
NGNGGCCでもできますか?
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGformat I/Oの処理は、printf(3)に下請させる場合でも、
format指定と引数の方が合ってるかどうかなど、
適切なチェックを行わなければ、処理系の状態がおかしくなってしまうので、(e.g. core dump)
言語の仕様として、C風の書式処理じゃなくて、C++風にした方がいい。
0529デフォルトの名無しさん
NGNG言語側の都合というか。
0530デフォルトの名無しさん
NGNGどのように実現されるのでしょうか?
もしよろしければ、HPアドレス等お教え下さい。
0531sage
NGNGどのあたりがアフォですかね?
0532デフォルトの名無しさん
NGNG一目で書式がわからない時点で相当のアホかと。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGLRの構文解析は、yacc等のツールを使わないと作成できないんですか?
手動で書くと非常にめんどくさいとかいうのをどこかで読んだ気がするんですが、
なぜですか?
0537デフォルトの名無しさん
NGNGアホか?
0539デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGまだいたのか(w
「めんどくさい」ってことは「作成できる」ってことだろ。
聞いた話とか鵜呑みにするんじゃなくて、
こういうのは自主的に確かめるとかしないと身にならないよ。
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG最後まで読んでから聞け
社会に出てから苦労するぞ
0545デフォルトの名無しさん
NGNG引数に渡す値って可変なんでしょ?
後付けでadd esp, nとかわかんの?
ソース嫁とかなしでおながいします。
サムイので
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGスタックポインタ動かす→そのアドレス返す、で終わりだろ
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGallocaはコンパイラの組み込み関数です。
コンパイラの生成するコードが読み切れる―例えばauto変数の参照にはフレー
ムポインタのみを使い、SPは関数出口でsp <- fpのように設定して元に戻すま
で参照しない―なら、後付けで実装もできます。
でも最適化のレベルの高いコンパイラでは危険ですね。
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGahoca?
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGasoccaじゃねーの?
0556デフォルトの名無しさん
NGNGsub esp, n
mov eax, esp
に展開してやればいいの?
最後に
mov esp, ebp
pop ebp
する関数なら大丈夫ってこと?
0557デフォルトの名無しさん
NGNGそれだと危険だね。Win32だと単純にスタックポインタをいじるだけだと、
2ページ以上境界をまたいだ時に例外飛ぶよ。
他のOSは実験してないからしらん。
確か1ページずつ動かしてくコードになってたはず>_alloca()
隣のページを触った時に初めてメモリ確保するんだっけな?
0558デフォルトの名無しさん
NGNGえ、ページなんて概念があったんですか。
ちなみに1ページって何バイトでしょうか?
その辺の情報で何か適当なWebリソースってありますでしょうか。
そういえば、自作の処理系でスタックから配列を確保すると、
16000バイト付近でおかしなことになるんですが、これも
ページと関係ありですか?
コンパイラ側でスタックサイズを確保するだけじゃだめなのか。
0559デフォルトの名無しさん
NGNG今ためしにVC6で大きい配列確保するテストしてみたら、
ある大きさになったら密かに__chkstkっていうのを呼んでる。
ちょうど4kバイトを境に。
まいったなあこれ。
全く知らなかった。
0560デフォルトの名無しさん
NGNGsub esp, 4096
の代わりに、
mov eax, 4096
call __chkstk
に書き換えなくてはいけないわけだ。
やだなあこれ・・
allocaだと+余分を計算しないといけない?
無条件で_chkstk呼べばいいのかな。
0561デフォルトの名無しさん
NGNGありがとうございました。>557
0562558
NGNG最小限のサイズのみを割り当てて、スタックの次のページを
さわった瞬間にメモリ未割り当てのページフォルトが発生して、
そのタイミングで実際の仮想メモリを割り当てる実装になってる。
で、そのページフォルトを判定するのが隣接ページのみってこと。
フレーム割り当てのタイミングでサイズが決まってるのなら、
sub esp, 4096; sub esp, 4096; sub esp, 200
みたいな感じで展開しちゃってもいいと思うよ。
0563デフォルトの名無しさん
NGNGespの値を変えただけでは、ページを触ったことにはならないと思うが。
0564デフォルトの名無しさん
NGNGページ処理をどーすればいいのかとかもわかるし。
0565デフォルトの名無しさん
NGNGところで、自作の処理系ってアクティブ何とか?
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG名前557の間違いですか?
ちなみにCRTの_chkstkを呼ぶ様にして解決しました。
おかげで既知のバグがすべて潰せました。
>>564
557氏みたいなヒントがないとソースみてもわかんなかったよ。
>>565
アクティブ何とかの話はよくわかりませんが、
目標はネイティブ実行できるLISPっぽいCみたいな感です。
0568デフォルトの名無しさん
NGNGスタックとるahhocaって制限多すぎでない?
大きな自動変数は、普通process即氏けどな。
0569557
NGNGIA-32(+Win32?)の場合だとesp、ebpは明示的に参照しなくても
ポインタが指し示すだけでAccess Violation飛んだはず。
かなり前の記憶なんで確証ないけど・・・
>>568
用途が違う。大きなサイズが必要ならHeapを使えばいい。
関数が呼び出されるまで厳密なサイズはわからないが、
スタック食いつぶすほどのサイズにはなりえない場合とか、
シグナルハンドラから突如longjmp()されようが、絶対に
メモリリークしたくない場合などに使える。
0570デフォルトの名無しさん
NGNG> かなり前の記憶なんで確証ないけど・・・
明らかに記憶違い。
$ uname -ms
CYGWIN_NT-5.0 i686
$ cat a.c
#include <stdio.h>
static void *
badstack()
{
__asm__("mov %esp, %edx; sub $0x100000, %esp; mov %esp, %eax; mov %edx, %esp");
}
int main()
{
char *p = badstack();
printf("%p\n", p);
fflush(stdout);
printf("%x\n", *p);
return 0;
}
$ gcc a.c
$ ./a.exe
0x12ef18
Segmentation fault (core dumped)
0571デフォルトの名無しさん
NGNGlinuxでもちょっと大きな奴渡すとすぐにsegfault!です
0572558
NGNG自分も最初そう思ったけど、
10分の1の0x10000にしても落ちたから違うと思う。
ポインタ変えただけじゃ駄目なんじゃないかな。
_chkstkのまわりくどいソースとあわせて考えると。
0573デフォルトの名無しさん
NGNG大小は関係ない。
> esp、ebpは明示的に参照しなくても
> ポインタが指し示すだけでAccess Violation飛んだはず。
というのは誤り。espを変更しただけでは落ちないで、参照したときに落ちる。
>>570のテスト内容ちゃんと見た?
0574デフォルトの名無しさん
NGNGつーかそれ関数すぐ戻ってるから、プログラム的に
スタックが有効かどうかというテストにはならんのでは?
badstack() {
char baduse[0x100000];
return baduse;
}
と同じことだし・・
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577545
NGNG疲れた
0578デフォルトの名無しさん
NGNGCygwin上でうごかすのではなく、純粋にWindows用として。
0579デフォルトの名無しさん
NGNG0580578
NGNGありがとう。
でも俺がいうのもなんだが甘やかしすぎでは。
0581デフォルトの名無しさん
NGNG何だそりゃw
0582デフォルトの名無しさん
NGNGこんなんもあるけどな
http://www.vector.co.jp/soft/dos/prog/se002362.html
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG同じく、見てないし。
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNGちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。
0590名無し@沢村
NGNGプログラム言語の歴史が変わった歴史的瞬間だ。
http://hp.vector.co.jp/authors/VA015412/
0591デフォルトの名無しさん
NGNGWindoze用かよ _| ̄|○
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG(゚Д゚)ハァ?Macに決まってんだろ!
0594デフォルトの名無しさん
NGNGSPARCでSolarisかLinux。PPCでMac OS X用。
これだといじれるんだけどな。Windozeなんざ動く環境がないんで試す事すらできねぇ。
あ、StrongARMなLinuxZAURUSも有るか。
0595デフォルトの名無しさん
NGNGスペルは正しく書きましょう Windows :p
0596デフォルトの名無しさん
NGNGネタだとは思うけど一応...
ttp://d.hatena.ne.jp/keyword/Windoze
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG書籍は相当限られていると思うのですが。
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNGみんな、yacc のソースコードを必死に読んだんだよ。
そのために bison はオープンソースになっているんじゃないか。
お前も頑張れ。
因みに yacc のスキャナ自体も yacc で書かれているが
頑張れば何とかなる。
0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG0604名無し@沢村
NGNG0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG書籍はもってるらしいぞ。
0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNGみんな手書きだろう?
口述パーサなんてあるか?
0609デフォルトの名無しさん
NGNG> みんな手書きだろう?
3.3.3まではyaccに生成させてたんだよ。
これは手書きとは言わんだろう?
0610
NGNG発生するの?
どんな会社がそういった仕事の最先端を行っているの?
なんとなく興味あります
わたしはしがない下請けなので
コンパイラ、と聞くとちょいと憧れますね
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNGなるほど、そういう意味ね!
0613デフォルトの名無しさん
NGNGほほえましいな。レス番違うし。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNGなんとなく、setjump()とlongjump()をつかうんだろうなーとは思うんですが、いまいち自信ないです。
どう実装してるのかを紹介したサイトなりがあれば教えていただけますか。
#「例外 実装」とかでぐぐってもそれらしいのは見つからない。
0618デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=cache:qXwDJ7nZF0EJ:maborosi.kobe-du.ac.jp/sugiura/soft/super/longjmp.htm+exception+setjmp+longjump
0619618
NGNG0620デフォルトの名無しさん
NGNGhttp://www.codeproject.com/cpp/Exceptionhandler.asp
0621デフォルトの名無しさん
NGNGちゃんとしたcontinuationがあれば、それを使って実装すればいい。
0622デフォルトの名無しさん
NGNG0623!621
NGNGexception を実装する為に continuation を実装するというのも本末転倒な感じが
するけど。
ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
0624デフォルトの名無しさん
NGNGスクリプトレベルでうまく動かすためには、相当なサポートコードが必要に
なると思うが…
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNGマッチしなかったときの処理にlongjmpを使ってるよ。
0627デフォルトの名無しさん
NGNGARM,MIPS,SHとかの組み込み用アーキテクチャとかなら新規開発したあとコンパイラもそれにあわせて最適化とかが必要だから仕事があるんじゃない?
0628デフォルトの名無しさん
NGNGsetjmpとlongjmpの他に何が必要ですか?
スタックの内容を退避しなければ駄目ってのはなんとなくわかるのですが。
インアセ使わずにC言語だけでできるものでしょうか?
とりあえずi386以降で動けばいいです。
0629デフォルトの名無しさん
NGNG「スタックなぞ一切使わない」というのが王道です。
すなわち、関数呼出しはCALLでなく、JMPになります。
return addressは、「次の処理の関数」として表現し、引数として渡すのです。
通常スタックフレームに置かれる変数は、ヒープに置くことになります。
関数型言語スレ(総合スレは荒れてるので、HaskellかML)
で質問すると詳しい人が教えてくれるでしょう。
0630デフォルトの名無しさん
NGNGSchemeのCPSてやつですね。
0631デフォルトの名無しさん
NGNGttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000018.html
ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000019.html
0632デフォルトの名無しさん
NGNGやりたいこととは違うと思うけど、Schemeを普通のCにコンパイルする方法。
http://home.pipeline.com/~hbaker1/CheneyMTA.html
- 関数呼出しはCの関数呼出しとしてコンパイルされるが、CPSなのでreturnは決してしない
- スタック領域をヒープとして用いる
- スタックがあふれそうになったら、copying GCで新しいスタック領域に移し計算を続行する
- GCのスタックを走査する部分にはCPUに依存しないので、Cだけで書ける
昔Sigplan Noticesで読んで面白いと思った。
0633デフォルトの名無しさん
NGNGbison とか yacc って、みんな初めは電卓作りますよね。
3 + 5 (Return)
って入力すると「画面上に」8をprintfするやつ。
これ、画面上で8を返すんじゃなくて、
yyparseの返り値とかそういう感じで yyparse の呼び出し元に
8 を何とかして知らせる方法ないですか?
ただし、グローバル変数は使わないものとして。
0634デフォルトの名無しさん
NGNG/usr/lib/yaccpar とか /usr/share/bison/bison.simpleを書き換える。
bisonは
#define YYPARSE_PARAM foo
を定義しておくと、void *fooが引数として渡されるから、アクションでその中に
答を入れて返すようにすればいいのでは。
プログラム中からyyparseを複数回呼出す場合は、先読みバッファの再初期化に注意。
0635名無し@沢村
NGNGいまDLしてるところで、まだ開けて見てないんだが、Webでの説明を見た限りじゃなんか良さげだった。
つーか、GUIに関しては、Visual C++よりもちゃんとしたGUIアプリが簡単につくれるとのことだ。
ただ計算的な処理には不向きということだが、そこは何かC言語で書いて追加できるとのことだ。
おれはちょっとこのtcl/tkを調べてみるが、ホントにGUIに関して良さげだったら、いま開発中の「Vicual E++」は、
このtcl/tkで書き直してもいいな。Visual C++じゃエディタの予約語の色づけとかチョー面倒だしな…
そして内部のメインの処理だけをC言語で書くようにすればいいからな…
それができそうかどうかをまず調べてみようと思う。
次に調べたいことは、おれが次につくりたい高級言語に、tcl/tkはオープンソースらしいから、パクレる部分があるかどうかということだ。
ともあれ、おれのコンパイラの開発は飛躍的に前進しそうだな。
おまいらよ、おれはtcl/tkいま知ったぞ。おまいらは、tcl/tk知らなかっただろう?
0636デフォルトの名無しさん
NGNGtcl/tkって「チックル・チーコ」って読むんだよね?
0637デフォルトの名無しさん
NGNGお前だけ。
0638名無し@沢村
NGNG実行ファイル作成できんのか?HSP以下か?ゴミソフト!!!
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGtclsh, wish という位だから、tcl/tk は一種のシェルだよ。
C から system() でシェルのコマンドを実行するのと似た様な感じで使える。
まぁ、もちっと面倒だけど。
俺も以前 tcl/tk からパクれる所が無いかなとソース眺めてみたけど、
C で実装されている部分は低レベルな所だけだったような。
0641デフォルトの名無しさん
NGNGアホは知らなかったのね。
0642デフォルトの名無しさん
NGNG言語で大事なのは歴史の長さよりも話者人口だよ。
歴史の短い Java をみんなが使うのはなぜだと思う?
Algol や Prolog が滅びたのは?
0643デフォルトの名無しさん
NGNG釣りだよね?親切に説明してる640が気の毒だ。
0644デフォルトの名無しさん
NGNGAlgolはともかく、Prologは滅びてはいないだろ。
Algolにしたって、形を変えてその思想は受け継がれているわけだし。
0645デフォルトの名無しさん
NGNG知名度の話をしてるんだが。なにが言語で大事なのは、だ。
かってに妄想してチンコ膨らましてんじゃねーよキモイ。
0646デフォルトの名無しさん
NGNG妄 想 ま で 制 限 さ れ て た ま る か
妄想でチンコ膨らそうぜ
0647デフォルトの名無しさん
NGNGTclはハード設計ツールの組込みスクリプト言語ではメジャーです。
(Tclはいやだけど、独自言語よりはましだよな)
もともとTclはアプリ組込み用だし。tclshもwishも組込みのサンプル
みたいなもんです。
0648デフォルトの名無しさん
NGNG0649名無し@沢村
NGNGTcl/Tkでつくったスクリプトを実行ファイルに変換するツールだな。
が、わし英文読めんけん、このページのどっからDLしていいかわからんのよ。
このページの何行目の何という文字をクリックするとDLできるか、教えて〜♪
http://www.interq.or.jp/japan/s-imai/tcltk/tclkit.html
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG,...--、 `―‐ァ‐...::', \:::::::::::::::::::: | || |ヽ、___,ヘ、| ┌───┐ i´
,. ' ..::....`'''‐--‐''"~...:::::::::ヽ ` 、::::::::::::::::| || | ┌─┐ i´ | | │ |
-=ニ"_,...、-- ヾヽ、::::::::::::::::::::::::::::::::ヽ `、 `,::::::| || | | │ | | | .| |
`''‐-`ヽ.`''‐-..._:::::::〃:::l:::l`ヽ..ノヽヾ,: | || | | │ | | |____| |
,..-‐''''‐----'":::::::`ヽ、 /l:/|::::/l:::lヾ.‐'""' i| l | || | | │ | |.┌─‐┐┌┐.|
__,. ' ......:::::::::::::::::::::::::::::::::::: `''1 l! l::::i lヾ|,...-==l. l:| || | └─┘ | |ノ ,ヘ、 | | レ'
`ー--‐' ̄`> ....:::::::::::::::::ノ.._,...ヾ!ノ-':::/~ ノ i | || .| | ̄ ̄|ノ / /` .| |
,.. '" ...::::::::::::::::::::::::::ヽ< ̄`>'" `ー‐‐''"ノ..| || |ノ / / | |
-‐'"゛`''‐''" .......::::::::::::::::::::::::::::::::::::::{ `‐',ヘ | ,..、_ .| || / / | | /|
....__...:::::::::::::::::::::::::::::::::::::::::::::::::::::::!、 ! ,..-` ,. | || /./ .| | . / |
-"--- ....___,...--- ._::::::::::::::::::::`、 `‐' _ィ' V| || ._ _/./ . | └──'´ .,)
, '" ̄..::::::::::::::::::::::::::〉__,..w、ァ'"Vハノ | || `ー─‐'´ `ー───'´
,..--- ....__,. ' ....:::::::::::::::::::::::::::::::::::::::::Vi,..ハ---'" | ||
,. ' .....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::'、. ― .| ||
-=-‐-‐'゛`''‐-.._ _,..-----==- .:::::::::::`ー.`--‐'",'| ||
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGコンパイラ側で何かしてあげなくてはいけない事があるのでしょうか。
それともランタイム環境の問題なのかな。
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNG完全にライブラリレベルなのかなと思っていたのですが、そういう訳でもないんですね。
pthread ライブラリを wrap して、他のライブラリも MT-Safe に作れば良いのかと
思ってました。どうもありがとうございます。
0657デフォルトの名無しさん
NGNGあるみたい。コンパイルされる言語でも、スレッド毎にランタイム環境を作ってあげれ
ば良いのかな。
0658デフォルトの名無しさん
NGNGコンパイルされる言語の場合は、ホスト環境のpthreadライブラリを呼び出す様に
すればいいのでは?
今後主流になると思われるSMP環境を考えたら、複数のCPUを有効に使えるかも
0659デフォルトの名無しさん
NGNGpthread_create() が C の関数を引数に取るので、クロージャとかを渡したい場合に
何となく面倒じゃないかなと思ってました。変数部分は引数として渡してあげれば
問題無いような気がしてきました。
0660デフォルトの名無しさん
NGNGflex では yylval をガンガン使っています。
bison で %pure_parser したら flex が吐き出す C コードのコンパイルで氏にました。
どうすれば %pure_parser しても yylval (と同じような機能) を flex で使えるでしょうか。
0661デフォルトの名無しさん
NGNG自己レス
http://www.timeparadocs.net/bab/flex_bison/flex_bison.htm
これで解決しますた。
が、flex のファイルに yylval.hoge と書いていたのを yylval->hoge と書かないと逝けないようです。
0662デフォルトの名無しさん
NGNG実際問題使えるものなのかな?
0663デフォルトの名無しさん
NGNGparse_infoのfullを調べるとエラーが発生したか確認できますが
エラーが発生した行番号を取得するにはどうやったら良いんでしょうか?
0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGしかし、よく意味が分からない罠・・・
0666読まずにレス
NGNG0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGイメージ的にはVMを介さない.NETみたいな。
開発の形態はApacheみたいに元となるものがあって
ユーザーが拡張プラグインを自由に作って公開できるようなのがいいな。
・ネイティブコードを吐く
・OSは問わない
・VMなどを介さない
・メインとなる構文はあるが、ユーザーが自由に構文を追加・変更できる。
0669デフォルトの名無しさん
NGNGD言語でええやん
0670デフォルトの名無しさん
NGNGttp://hp.vector.co.jp/authors/VA015412/
0671デフォルトの名無しさん
NGNGD言語って名前くらいは聞いたことあるんですけど、
>>668で書いたようなことを実現しているんでしょうか?
0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNGこのようなコンパイラ誰か作ってもらえません?
というクレクレな割に
> ・ネイティブコードを吐く
> ・OSは問わない
いきなりハードル高い
0674デフォルトの名無しさん
NGNGAPIの類を使わなければ大丈夫
CPUは限定されるが
0675読まずにレス
NGNG0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG死ねボケ
0678デフォルトの名無しさん
NGNGお前が死ねカス
0679デフォルトの名無しさん
NGNGお前も死ねタコ
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNGhttp://www.csg.is.titech.ac.jp/~chiba/lecture/os/
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG>画面を含む一切の入出力ができなくなりますが
要求事項にないから、いいんじゃない?
0689デフォルトの名無しさん
NGNGGCC があるんだから自分の好きな言語のフロントエンドを書けばいいじゃん。
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGGCCのフロントエンド書いたときあるの?
0692デフォルトの名無しさん
NGNGgcc使っても>>668の用件に合わせるのは難しいままだろ?
無知蒙昧な人?
0693デフォルトの名無しさん
NGNGGNU Common Lispでマクロをいじれば何とかなりそう。
0694デフォルトの名無しさん
NGNGhttp://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/INTRO.html
http://llvm.cs.uiuc.edu/Features.html
http://gcc.gnu.org/onlinedocs/gccint/RTL.html
C--, MLRISC, LLVM, RTL...
色々在るけど、誰か使った事ある?
0695デフォルトの名無しさん
NGNGまあ、ここ見てる奴は「ネイティブコード」と書いてあるからそんな疑問は浮かばんわけだが。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG結構面白いけど、関数型言語とか論理型言語とか、
実装研究がまだまだ行われている言語向けだなあ。
0698デフォルトの名無しさん
NGNGそんなに自由度が高いの?
0699デフォルトの名無しさん
NGNG自由度は高いよ。
マクロ定義とは実質的にLispコードを生成する関数だとか。
まあ、C++のtemplateもだけど自由度が高ければ高いほど解読しにくいわけで、
達人以外が使っても生産性が大して上がらない気もする。
0700デフォルトの名無しさん
NGNG評価時に展開されるから
*プリ*プロセッサとは言わない
0701デフォルトの名無しさん
NGNG評価に先駆けて展開しといたり、
コンパイル時にも展開できるわけだが。
まあ話を平たくすると、いつでもできるわけだ。
0703デフォルトの名無しさん
NGNGS式を二回評価すると思ってね。(おおざっぱ)
一回目でプログラムの生成、二回目で生成されたプログラムの実行。
LispはデータもプログラムもS式だから、
こういうのは機構的にもプログラミング的にも簡単。
一度遊んでみると良い。
0704デフォルトの名無しさん
NGNGMYMACRO(a,b,c) { ... } // a,b,c,..は可変個引数
から
int a=0;
int b=1;
int c=2;
...
my_macro_end(a,b,c);
を生成するようなのは書けないでしょ? Lispのマクロはできます。
C++やJavaだとデザインパターンなどで似たようなコードをクラス毎にあちこち
で書かないといけない(が、C++のテンプレートでは表現できない)ことがある。
そういう場合にパラメータを与えて雛形からコードを生成するスクリプトをRuby
などで書くことを考えましょう。
Lispのマクロなら全部Lispだけでできます。
0705デフォルトの名無しさん
NGNG例えば、isdigit()のために、その文字が数字かどうかを記録した1バイト文字
256個分のテーブル(文字が数字なら1、数字でなければ0)を定義したいとします。
そこで、
int isdigit_table[] = {
0, 0, 0, ...., 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, ...., 0
};
と書く代わりに
int isdigit_table[] = {
(eval-when-compile // コンパイル時に実行
int table[256];
char* digits="0123456789";
memset(table, 0, 256);
for (char* d=digits; *d!='\0'; d++)
table[*d] = 1;
return table;)
};
みたいなことを書けば、(eval-when-compile ...)で囲んだ処理をコンパイラが
実行して、その結果のテーブルとして同じ中身のisdigit_tableを定義できると
思ってください。
C++だとコンストラクタでもできますね(コンパイル時でなく実行時になりますが)。
要するに、C/C++のマクロ(cpp)が格段に高機能な言語になったとしましょう
(C自体では嬉しくないから、RubyとかPHPとか?)。その場合のC,C++に相当する本
体の言語がLispであり、ついでにcppの言語も同じLispになったと考えればいいです。
0706デフォルトの名無しさん
NGNGSICPは読んで損がない本だと思うよ
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGemacsってそんなに使い物にならない環境なのか。なるほど。
やっぱvi?(違
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGC++でならTypeList or boost::mpl使えば書けそう。
まあ流石に100個も200個も可変長引数を渡されると無理だろうけど。
0711デフォルトの名無しさん
NGNG自作すると変数宣言と組み込み関数・オブジェクトのみになりそうだ
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNGクロスプラットフォームなら spidermonkey とか、
Windows だけでいいなら ActiveScript とか。
どちらでも簡単にできるよ。
0714デフォルトの名無しさん
NGNG>Win emacsの筆頭
Meadowの方が広く使われてます。
0715デフォルトの名無しさん
NGNGSpiderMonkeyはかなりよさげだね
しかし英語だらけで組み込めるのは当分先か・・w
0716デフォルトの名無しさん
NGNGそういうプリプロセサ書いて、差し替えれば済む話だと思うけど。
全部 C/C++ でできますよ。(藁
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGVisual C++とgccを見たけど見つからなかった。
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNG自分のプリプロセッサから、コンパイラ呼べばイイだけじゃない?
0721デフォルトの名無しさん
NGNGそりゃそうだ。でも差し替えるとは言わんな。下らないことをきいてしまった……。
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNGGCC とかならソースあるんだから、適当に修正して実行ファイル入れ替えれば良いんじゃないのか ?
>>719
まあ、そりゃそうだけど、コンパイラ書くより多少難易度は低いだろ。
0724デフォルトの名無しさん
NGNG普通のアプリケーション書くのに特定のコンパイラのバージョンとそれへのパッ
チ込みで保守したくはねーなあ。
0725デフォルトの名無しさん
NGNGTinyC->.asm位だったら簡単だしね。
俺は#defineなどC言語準拠なプリプロセッサに
アセンブラ風の複数行マクロを使えるような物を作って、
言語ごとに微調整しているよ。
()を使わないバージョンなどね。
エラーを探知するために、##lineっていう
現在のコンパイル行をプリプロセッサ->コンパイラへ通知する命令をつくって、
デバックもしやすくしているよ。
0726デフォルトの名無しさん
NGNGて言うか、普通のアプリケーション書くのに >>704 みたいなことはあまり必要ないだろ。
マクロプロセサやプリプロセサが高機能だと色々おもしろいけど、実際のところ後の保守が大変だったりするからあまり使わん。
昔使った PL/I のプリプロセサは、IF 文は当然、FOR/WHILE の制御構造や PROCEDURE/FUNCTION なんかの手続き/関数定義までできた。
だから凝った定義を書けば、ソースを短く書けたけど、プリプロセサ文をデバッグする手間を考えたら素直にソースを手で展開した方が早かったよ。(藁
MASM なんかのマクロアセンブラでも同じような経験したことある人は多いと思うよ。
0727デフォルトの名無しさん
NGNGLispのマクロで俺言語を作ることを考えると>>726も想像はできるけど。
>>726とは逆に最初書くときはベタに展開したソースを書くけど後から
保守性を考えてマクロでまとめることも。あまり凝ったことはしないけどさ。
cppに変数とifとfor eachだけでもあれば世の中もうちっと良かったろうに。
0728デフォルトの名無しさん
NGNGスクリプト言語の参考図書(定番)は、ごぞんじないですか?
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNGその二つに大きな違いはない。
0731デフォルトの名無しさん
NGNGコンピュータアーキテクチャの本じゃないか?
>>730
構文解析だけじゃなくて、実行機の話してるんじゃないの?
0732デフォルトの名無しさん
NGNGWIN XPのコンソールから
GNUのFLEXとBISONとボーランドのBcc32でコンパイルしてるのですが
bisonとflexは通過するのですが
最後のCコンパイラのリンク時に"yyllocが定義されてない"というエラーが出てしまいます。
bison.simpleとbison.hairを見てもよくわからないので
なにがまずいのでしょうか?
0733デフォルトの名無しさん
NGNGってなんじゃらほい?
0734デフォルトの名無しさん
NGNG『インタプリタ進化論』なんかいいのでは。スクリプトに特化した内容ってわけでもないけど。
0735デフォルトの名無しさん
NGNGそれともライブラリの類?
で、実際にはどのようなことをするものなの?
0736デフォルトの名無しさん
NGNGttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
0737735
NGNGコンパイラにおけるそれらの処理を外部のソフトウェアに
頼ると言うのは有りかね?
0738デフォルトの名無しさん
NGNG何を言ってるの?
0739ほんたま
NGNGスリムドカンはおれのページにあるから見ちみれ?
http://hp.vector.co.jp/authors/VA015412/
おみゃ〜らよ、おれはいまリソースエディタをつくってるのよ。
スリムドカンに装備させるためよ。
おみゃ〜らよ、コンパイラをつくるのはいいが、リソースエディタのないコンパイラはコンパイラとはいわんぞ!
自分じわかるかな?
0740デフォルトの名無しさん
NGNG字句解析や構文解析をするソースコードを生成してくれるソフト
これ以上は自分で調べてくれ
0741デフォルトの名無しさん
NGNGあなた、最高に頭悪そうですよ?
0742デフォルトの名無しさん
NGNGちょっと思い出したw
0743デフォルトの名無しさん
NGNG読みやすい本でいい本だと思うけど、
実行環境の話はそれほど無かったような気がします。
とはいっても、字句/構文/意味解析を作るより
実行環境を作るのって、力業でできますしそんなに難しくないと思いますよ。
0744デフォルトの名無しさん
NGNGスタックマシンにすると決めた、するとbytecodeにするかwordcodeにするかまた悩む
スピードの為にwordcodeにするならそもそもレジスタマシンにするべきなのかと悩む
一向に前に進みましぇん
0745ほんたま
NGNGおりはよ、「Slim de Can」を使ってやっとメインウィンドウにコントロールをつけるサンプルの作成に成功したぜ。わはは♪
「Slim de Can」ってすげ〜な〜、イベントドリブンプログラムが作成できるとこまでついに進化したよ。
おりはもう神だね♪どうよ?
http://hp.vector.co.jp/authors/VA015412/
0746デフォルトの名無しさん
NGNG0747ほんたま
NGNGおりはよ、「Slim de Can」を使ってあるボタンをクリックしたらある処理を行わせ、別のボタンをクリッしたら別の処理をおこなわせるプログラムの作成についに成功したよ。
つまり「Slim de Can」はすでにイブントドリブンプログラムがつくれる環境になっているということを自ら証明したという次第よ。
おい、「Slim de Can」はすでに簡単なゲームくらいはころっとつくれるぞ。誰かつくらんか?
「Slim de Can」ってすげ〜な〜。
おりはもう神だね♪どうよ?
http://hp.vector.co.jp/authors/VA015412/
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG# オートマトンを理解するにはちっと勉強が必要になるが、
# それこそ知らなくても何とかなりそう
なおLL(1)文法と属性文法を学んでしまえばりっぱな「コンパイラ」が作れると思う。
# リンカとかアセンブラとかの知識は既習だとして
0751デフォルトの名無しさん
NGNGフロントエンドよりバックエンドのが難しいというか
面白いと思うんだが、どうしてフロントエンドの話しか出ないんだろうか?
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNG・並列化(ループ,タスク.手続き間解析は必須)
・別名解析(フロー依存はまだ重い)
・SSA(冗長コピーをどう減らす? 別名の扱いも)
・コピー伝播(非常に重要.でも語ることは余りないか)
・部分冗長性削除(やりすぎると性能悪化することも.ライブレンジを考慮)
・CPS(手続き型ではやらんか)
・レジスタ割付け(PowerPCとかなら素直だが,制約のきついCPUだと面倒)
・ソフトウェアパイプライン(最内からやらない手法が最近発表されてた)
・命令スケジューリング(コンパイル時間爆発の主犯)
・SIMD命令やDSP命令の生成(上から下までからむので大変.パターンマッチしかない?)
0754デフォルトの名無しさん
NGNGコンパイラについてちゃんと学んでいこうかと思います。
0755デフォルトの名無しさん
NGNGとはいっても、最近の仕事でそういうのをする必要もあったりして
書籍紹介とかやってもらえます?
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNGhttp://www.aw-bc.com/catalog/academic/product/0,4096,0321131436,00.html
Copyright: 2006ってなってるからもっと延びるかも…
0758デフォルトの名無しさん
NGNG龍本がバックエンド概要集だとすれば、
appel本が実践本、中田本が理論本といった感じでしょうか?
バックエンドオンリーな変り種としては
Robert Morgan: Building an Optimizing Compiler (ISBN 1-55558-179-X)
ってのがあります。こいつは本当にバックエンドしか書いていません。
0759デフォルトの名無しさん
NGNG進歩ないね。
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG何でそんな労力割かなきゃならぬ?
0762デフォルトの名無しさん
NGNGがぁん。評判よければ夏休みにでも読もうと思ってたんだが。
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG理屈を理解して普段のプログラミングに生かせれば、それで良いかと。
0765デフォルトの名無しさん
NGNG本当はコンパイラの原理とかよく分かって無いんだよな?
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG一番多い需要は新しい言語の作成ではなく、特定分野特化物だからだよ
趣味の人は確かに新しい言語って事になるんだろうけどね。
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGつまり「俺ってば勝ち組w」と主張されたのですね?
0770デフォルトの名無しさん
NGNGその反対でバックエンドがほとんどのお仕事もあるよ、
特殊なDSPとかの強力オプティマイザ付き簡易言語関係とか。
0771デフォルトの名無しさん
NGNGState番号と、もとのソースの行番号を関連づける情報ってどこでしょうか?
同様に、 Rule番号と、もとのソースの行番号を関連づける情報ってどこでしょうか?
bisonマニュアルやbison本(といっても古いだけですが)を見ても、載ってませんでした。
0772デフォルトの名無しさん
NGNG行番号との関連?
別に行番号とは関連しないんじゃない?
0773771
NGNG「State何番が何番とconflictした。」とか出て来るんですが、
具体的にソースのどこがいけないのか場所を探すのに、いつも苦労しているのです。
0774デフォルトの名無しさん
NGNG正規表現の構文解析ってどうすりゃいいんでしょうか?
ものすごく再帰してるんですけど?
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG>構文解析器を作るのに正規表現が必要になりますけど、
無くてもできます
0777デフォルトの名無しさん
NGNG有限オートマトンでぐぐるか、適当な正規表現ライブラリのソースを読め。
0778デフォルトの名無しさん
NGNGFLEXについて調べているんですが、よくわからないので質問させてください。
UNIXで書かれた字句解析ソース(moto.l)をWindows上で使いたいのですが、
これってWin用のFLEXを使用してmoto.lから、moto.cを作成して
それをVisualStudio.Netなんかで、ビルドすればいいんでしょうか?
Win用FLEXで吐き出されたmoto.cをビルドしてもエラー出まくりなもので・・・・
なにかうまい方法などあるんですか?
(なぜか元の字句解析ソース(moto.l)も一緒にビルドしてしまいエラーになりま
す。。。)
わかる方がいらっしゃいましたら、
ご教授お願いします。
0779デフォルトの名無しさん
NGNGなんのエラーが出てます?
0780デフォルトの名無しさん
NGNG0781>>778です
NGNGレスありがとうございます
改行コードは、LFからCR+LF 文字コードEUCからSJIS
に変更をかけ、「bison & flex compiler for Windows GUI」を使って
コンパイルをかけ、できたCソースを.NET2003でビルドかけました。
一応、エラーは
「Zsscanf:1番目の引数を'unsigned char*'から'const char*'に変換できません」
というのが、大量にでました。
(これは、Zsscanf関数を大量に使用しているんででています。)
また、warningとして
「C4244 '=' _W64 int から intに変換しましたデータが失われているかもしれません」
というのが、たいりょうに出ています。
もしよかったら、ソースをお送りしますが・・・
よろしくお願いします。
0782デフォルトの名無しさん
NGNGそういう場合は、ここに貼り付けて
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
0783>
NGNGこちらにCソースファイルを貼り付けました。
よくわからなかったので、まちがってスレを立ててしまいましたorz
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50
すみませんが、よろしくお願いします。
これでだめでしたら、FLEXソースも貼り付けますので・・・
0784デフォルトの名無しさん
NGNGあぅ、上手く行っても、変更点の説明がしにくいと思うので、ソースもよろしこ。
#なんとなく見えてますが、上手く行くかどうかは不明。
0785>
NGNG元のFLEXソースを
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1091157983&rm=50
においておきます
0786784じゃないけど
NGNGZsscanf は Zsscanf(const char*, ...) と定義されている.
Zsscanf(yytext, ....) というように呼び出しをしたい.
ということで
1. Zsscanf の第1引数の型を unsigned char * にするか
2. Zsscanf の呼び出し時に毎回キャストするか
のどっちかで対処できるんじゃないかと思う.
0787デフォルトの名無しさん
NGNG0788ありがとうございます!!
NGNGとりあえず>>786さんの
「1. Zsscanf の第1引数の型を unsigned char * にするか」で
対応し、エラーを回避させました。
それともう一つ基本的な質問ですが、
この作成されたCソースファイルは、
どのように動作させればいいのでしょうか?
ライブラリとして動作させる場合、
どの関数をよべばよろしいのでしょうか?
(main関数を作成し、それから呼ぶのもどうすればいいのでしょうか?)
すみませんが、ご教授お願いします。
0789デフォルトの名無しさん
NGNGとりあえず、こちらはCygwinのflexしかないので、それでのやり方を説明しておきます。
まず、この部分
int nmatch = 0;
int len;
const char *base;
char buf[255];
va_list ap;
va_start(ap, fmt);
char skipflag;
va_start(ap, fmt) の後に char skipflag がありますが、これはC言語の構文として許されません。
以下のように書きます。
char skipflag;
int nmatch = 0;
int len;
const char *base;
char buf[255];
va_list ap;
va_start(ap, fmt);
コンパイル方法
http://www.cygwin.com/
より "Install or update now!" をクリックして実行してください。
あとはメッセージにしたがって、インストールするのですが、パッケージの選択のところで flex を入れておく事。
flexの入っているフォルダーにパスを通したら、
flex flex_test.l
cl flex_test.c
以上です、
あと、_yywrap _yylex はちゃんと定義して置いてください。
出力結果をC++としてコンパイルしたいのであれば、786氏の意見を参考すれば良いかと思います。
0790デフォルトの名無しさん
NGNGyylexを呼び出します。
そのあたりは初歩の初歩部分なので、適当に参考書でも買ってきて調べてみるとよいでしょう。
入出力の特化は結構ややこしいので・・・
0791>>778です
NGNG>>790さん
yylex()を呼び出すというのまでは、調べたのですが
これを呼び出すとDOS窓で入力待ちなのかどうかは、わかりませんが
止まったままになってしまします。
いろんなサンプルを見てみたら
単に
return yylex();
としているだけなのが、あったので
このように書いていたのですが・・・・
こういう呼び出し方ではいけないのでしょうか?
何度も何度もすみませんが、
ご教授お願いします。
0792デフォルトの名無しさん
NGNG一番簡単な方法は
yyin = fopen( ... ) ;
として
yylex()
を呼び出します。
0793>>778です
NGNGファイルからの読み込みではなく
指定された文字列を受け取って
それを変換かけてから、変換後の文字列を
返すというようなプログラムを組みたいのです。
yytextに指定文字列を入れてから
yylex()を呼び出せばよろしいのでしょうか?
(どこかのサンプルでこのような形のものがあったのですが・・・)
0794デフォルトの名無しさん
NGNGちがいまーす!!(^^;
実は貴方のやりたい事は、書き始めると結構ヘビーです。
素直にflexの本を買ったほうが良いかと・・・・
どうしても買いたくなげは YY_INPUT マクロを気合で読んでみるとか?
0795>
NGNGでは、入力したい文字列を
一度ファイルに落としてから
再度、yyin = fopen( ... ) ;
で読み込むという方法だと
まずいでしょうか?
0796デフォルトの名無しさん
NGNGそれで問題がなければ、それでも良いかと・・・・
0797>>778です
NGNG変換するものなんですが、ファイルに「H16/7/16」を書き込み、保存してから
yyin = fopen( ... ) ;
として
yylex()
を呼び出すと、「ヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘ」などと
文字化けが出てしまい、途中で終了してしまいます。
これって何が原因があるのでしょうか?
0798デフォルトの名無しさん
NGNGの書き方だとダメ。
DIGIT (0|1|2|3|4|5|6|7|8|9)
だと動くみたい。
0799デフォルトの名無しさん
NGNGご存知ありませんか?
0800デフォルトの名無しさん
NGNG見方を理解しようとしないで、LR解析をある程度理解した方
が良いと思うよ。
そうするとbison.outputの意味が分かるようになる。
0801799
NGNG0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNGLR(1)を完璧に実装した yacc もどきってご存知ないですか?
0804800
NGNG>>799=801
コンパイラ系の書籍ならば、大抵構文解析の説明はあるでしょ。
手元の本だと『ドラゴンブック』と『コンパイラの理論と実現』と
『コンパイラ(昭昇堂)』にLR解析の話が書いてある。
>>803
知らないけど、あまり不自由を感じたこと無いな>先読み1
たいしたもの作ってないからかな。
0805デフォルトの名無しさん
NGNGhttp://www.idiom.com/free-compilers/
0806デフォルトの名無しさん
NGNGLLだけとboost::splitを使ってみるとか。
http://boost.cppll.jp/HEAD/libs/spirit/index.html
でも、文法を変えたほうがいいかもね
LALR(1)の鬼畜パーススピードを捨てるのはもったいないべ。
0807デフォルトの名無しさん
NGNGLL
LALR
ってなんの略?
(1)
ってのは1つ先見るってことでよい?
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNGLonely Rotary
Lonely Lolita
Lolita and Lonely Rotary
0810デフォルトの名無しさん
NGNGLR:左から読んで右から導出
LL:左から読んで左から導出
LALR:ルックアヘッド付きLR
0811デフォルトの名無しさん
NGNG【SLR】Simple LR
【LALR】LookAhead LR
括弧内は先読みのこと
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNG探せば GLR 使えるパーサジェネレータもあるぞ。
0814デフォルトの名無しさん
NGNG漏れはむしろ「欲しい例」を出して欲しい。
0815デフォルトの名無しさん
NGNGそれ以外はただの学問的な研究対象か趣味。
まぁ、炉利趣味と同レベルw
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNGC++ は LALR(1) に収まらないワケだが。
0818デフォルトの名無しさん
NGNGそれは書き方が悪いからでしょ?
あんなもん、書こうとおもえばいくらでも当てはめられる。
(と思う。)
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG0822>>778です
NGNGありがとうございました。
>>794さんがおっしゃっていた YY_INPUT のサンプルをいろいろ
探したのですが、これの他にもDOS窓から入力された文字列を
変換するなんていうマクロなどありますでしょうか?
0823デフォルトの名無しさん
NGNGYY_INPUTのサンプルって例えば何?
サンプルとかじゃなくて、実際のflexが生成するYY_INPUTマクロを見た方がいいよ。
さらにlexの実装によっては、どう工夫してもお望みのことができないもの
もあるから、「文字列から入力」っていうのは可搬性の面ではよくない。
とりあえず、flexだったらYY_INPUTを定義し直せばOK
YY_INPUTってのは
YY_INPUT(buffer, result, bufsize)
buffer:文字列を格納するバッファ
result:実際に読み込んだ長さ
bufsize:バッファの大きさ
で、デフォルトではFILE *yyinから読むようになってるはずだから、それを
君が解析した文字列から読む(コピーする)コードにすれば良いね。
そのまま他の環境にコピーしても動かない可能性があるので注意。
0824>>778です
NGNG確かにYY_INPUTは、FILE* yyinを使って処理していますね。
っということは、scanfなどで入力した文字列をYY_INPUT(buffer, result, bufsize)
のbufferにコピーしてあげるようなコードを書けばよいということでしょうか?
また、違う例として、DBに格納されているデータを取得してきて、
字句変換させるために
FILE* yyinならぬextern char* yyin_charなるものを作成して
まずはそこにDBのデータをコピーし、YY_INPUT内でbufferにyyin_charを
コピーしてあげるような動きでよいのでしょうか?
また、実際にmain関数などから、YY_INPUTを呼ぶには、直接呼んでも
よろしいのでしょうか?
質問攻めでもうしわけございませんが
よろしくお願いします。
0825823
NGNGおいおい、なんか間違えてるぞ。前半は正しい感じだけど、最後のが…?
質問に答えるのは構わないけど、その前に一つ質問させてくれ。
Q. YY_INPUTマクロとは何でしょうか?
(何をするものか、誰が使うものか、どこから使うものか、yylex()と
YY_INPUTの関係とかに注目。)
これに適切に答えられれば、>>824にあるような質問は無いと思う。
さらにおまけとして…、YY_UNPUTとは何?
(ヒント:flexの生成するlex.yy.cにすべての答えがある。)
0826デフォルトの名無しさん
NGNG0827デフォルトの名無しさん
NGNG質問です。
Lex & Yacc (Nutshell) はいかがでしょうか?
これもLRを解説してますか?
0828デフォルトの名無しさん
NGNGすぐ下で答えが出てるじゃん。
0830デフォルトの名無しさん
NGNGyyinを指定しないと入力が標準入力になるからそうなるのでしょう
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG一応あるみたいです。
やはり、ドラゴンを理解しないと
shift/reduce & reduce/reduce の衝突を完全回避することは難しいですかね?
0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG移転したんでしょうか?
どなたか、ブックマークつけてらっしゃる方います?
コンパイラ構成法のソースコードをゲットしたいんですが。
0837デフォルトの名無しさん
NGNGだれか、参考になるサイトか書籍、知らないか?
クラス定義と同じ方法で良いのかなぁ?
0838デフォルトの名無しさん
NGNGシンボルテーブルのスタックを作ればいいだけじゃないか?
0839デフォルトの名無しさん
NGNG>シンボルテーブルのスタックを作ればいいだけじゃないか?
それってディスプレイ・・・・・だよねぇ。
ブロックを開くときに名前を覚えておくようにするんだろうか?
0840デフォルトの名無しさん
NGNGキーワード
演算子
プリプロセッサ
型
変数
namespace
これらは関係を持ったりするしね
まあプリプロセッサを除いて基本はみな同じだけど
0841デフォルトの名無しさん
NGNG関数 namespace クラス
だけじゃないのか?
0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGexport importはどうだろ
0844デフォルトの名無しさん
NGNG何を持って基本というか知らんが、実装しようと思うと namespace は深いぞ。
ADL と関数テンプレートとか。
0845デフォルトの名無しさん
NGNG優秀なコンパイラ屋が血反吐を吐きながら実装するものの、
それによって実行速度が向上する訳も無く・・・
そもそも優秀なプログラマならば、最初から namespace など
必要としない確固としたコーディングスタイルを身に着けている。
そしてバカなプログラマは、せっかく実装してもらった機能の
使い方自体が分からない。バカは所詮バカ。
namespace って、一体何の為にあるんだろう・・・
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG優秀なコンパイラ屋が血反吐を吐きながら実装するものの、
それによって実行速度が向上する訳も無く・・・
そもそも優秀なプログラマならば、最初から 型 など
必要としない確固としたコーディングスタイルを身に着けている。
そしてバカなプログラマは、せっかく実装してもらった機能の
使い方自体が分からない。バカは所詮バカ。
型 って、一体何の為にあるんだろう・・・
0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNG評価尺度が実行速度だけとは……。1960 年代の人間ですかい?
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG優秀なプログラマが血反吐を吐きながら回答するものの、
それによって理解が向上する訳も無く・・・
そもそも優秀なプログラマならば、最初からこのスレ など
必要としない確固とした技術を身に着けている。
そしてバカなプログラマは、せっかく回答してもらった説明の
内容自体が分からない。バカは所詮バカ。
このスレって、一体何の為にあるんだろう・・・
0853デフォルトの名無しさん
NGNGワラタ
0854マイク ◆yrBrqfF1Ew
NGNG感動もんだ。
0855デフォルトの名無しさん
NGNG無理してまで回答は僕もしないし、他の人もしてないんじゃない。
コンパイラやスクリプトを作ろうという人口は少ないから過疎なのは仕方が無いが
僕は日ごろから巡回しているし、このスレ向きの質問書けば回答は帰ってくるよ。
もちろん僕もクレクレ君とOO厨房の言語論争的な話題は放置してるけどね。;-P
キミには分らないかもしれないが機能しいてない掲示板ではないよ、
進行が遅いに加えて近頃アホっぽい話題が充満しているだけだ。
0856デフォルトの名無しさん
NGNG( д ) ゚ ゚
0857デフォルトの名無しさん
NGNG0858デフォルトの名無しさん
NGNG現在 int のみのコンパイラは作れたのですが
float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて
実行するときに int か float か if で判断するしか無いのでしょうか?
2つならまだしも double とか char を追加するとなると代入するとき等の型判定で
組み合わせの爆発が起きそうなのですがなにか良い方法はないでしょうか?
速度的に。
0859デフォルトの名無しさん
NGNGてか、こんな事は自分で考えろ。
0860デフォルトの名無しさん
NGNG>現在 int のみのコンパイラは作れたのですが
>float などを追加しようとすると例えばスクリプト中の変数に型情報を持たせて
>実行するときに int か float か if で判断するしか無いのでしょうか?
って、そんなのコンパイル出来たって言えないやん。。。
何の為の型なのさ?
0861デフォルトの名無しさん
NGNGコンパイルの時点で型にあったコードを生成するだけだろ。
実行時じゃなくて。
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGバカ避けの機能
0864デフォルトの名無しさん
NGNGおぼろげながら自分の間違いが分かってきました。
どうもです。
もう少し考えてみます。
0865デフォルトの名無しさん
NGNG実行時に型チェックするかコンパイル時に型チェックするかは、言語の設計に
大きく関わってくるけど、まぁどっちでも良い。
コンパイル時に型チェックしたければ、たとえば Yacc 風に書くと
IDENT '=' experssion:
{
// まず IDENT が変数名であることを確認
// 次に experssion の型が IDENT の型に変換できることを確認
// 型変換して代入するコードを生成
}
;
ってな感じ。型変換判定は素直に実装すると型の数の 2 乗のオーダーで増えるが、
テーブルにでも書いておけば大した手間ではない。ベタに if - else とかで書くと死ぬ。
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGシンボル表のエントリに型情報をもたせ、それが基本型を
ポイントすることで、個々のシンボルの型を表現します。
struct や class などの基本型をまとめた型を作るときも
シンボル表にそれらの新しい型のエントリを作って、基本型を
リスト状にポイントしていけばよいです。
0870デフォルトの名無しさん
NGNG(以下ry
0871デフォルトの名無しさん
NGNGwrota
0872デフォルトの名無しさん
NGNG意味の無いレスいれるの止めてくんない、近頃こんなレスばっかりで
前後の見通しが悪くてかなわないんだよ、邪魔だから適当な言語死滅スレにでもいってくれ。
0873デフォルトの名無しさん
NGNGそして、大量に無駄な情報のなかから有用なものを抜き出すのが2chの利用法だと思う。
0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNGお前のレスこそ余計。
0877デフォルトの名無しさん
NGNGwrota
0878デフォルトの名無しさん
NGNGwrota書くのに一分もかかってんじゃねーよ。
0879デフォルトの名無しさん
NGNG!= だが何か?
0880デフォルトの名無しさん
NGNG870 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん
871 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん
872 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん
〜略〜
879 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん
880 名前:デフォルトの名無しさん 投稿日:あぼーん
あぼーん
何のためのスレなんだか
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG>>880 が最初だろw
0885デフォルトの名無しさん
NGNGラベルは相対じゃなくて、絶対アドレスを取得しなきゃならんのだよね。
void *ptr = &&label;
goto *ptr;
label:
の場合は
// void *ptr = &&label;
mov DWORD PTR[ebp-04h], label_EA
// goto *ptr;
mov eax, DWORD PTR[ebp-04h]
jmp eax
label:
こんな感じかな?
でも
なんで
goto ptr;
じゃないんだろう?
ptrと
*ptr
は何を指すのか
はて。。。
0886デフォルトの名無しさん
NGNGどうやら型をvoid*にしたのはgccの気まぐれらしい。
ラベルの型なんてないからねえ。
int ptr = &&label;
goto ptr;
これだとラベルと区別つかないからvoid*にしただけか。
gccは変な構文ばっかだな。
0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG自作するしかないでしょうか。
LuaがJavaに対応していれば一番いいんですが。
0890デフォルトの名無しさん
NGNGSchemeとか、どっちでも使える言語も結構ある。
0891デフォルトの名無しさん
NGNGとりあえずS式が読めればなんでもいいわけだし。
0892デフォルトの名無しさん
NGNGTCLとか
0893デフォルトの名無しさん
NGNGJavaSript というか ECMAScript がいいんじゃない?
簡単だし。
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNG0896889
NGNGその辺りのキーワードを頼りに探してみます。
ありがとうございました。
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNGJavaだともっと短いかも
0899デフォルトの名無しさん
NGNG>C++、Javaで同じスクリプトを動かしたいんですが、
>自作するしかないでしょうか。
って質問だったので、C++とJava での実装が容易に利用できる ECMAScript を勧めました。
0900デフォルトの名無しさん
NGNG良さそうだね。
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNGぴちょん(・∀・)!
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG晒せ
0907デフォルトの名無しさん
NGNG構文、演算子ごとに全パターン網羅できてますか?
ある組み合わせで不具合が出る可能性もあるから、
どうがんばっても全部網羅したとはいえませんよね
某スレのD言語なんかろくにテストされてないのがまるわかりですし
ある程度テストパターンの自動作成ができればよいのですが
そういうアイデアで何かありませんか?
0908デフォルトの名無しさん
NGNGこういうのはyaccを使った場合も含めてエラーとなることは予測できたとしても
実際にエラーになることの検証まではされていないのが現状だと思います。
これは言語処理系に限った話ではないですが、予測の付かないユーザーの
ランダムな入力に対し、はたして適切な処理をしているのかどうか?を検証する
確立された方法はあるのでしょうか?
test_if_branch() {
int x;
x = 0;
if (x) x = 2;
test_assert(x==0);
x = 1;
if (x) x = 2;
test_assert(x==2);
x = 0;
if (x) x = 2;
else x = 3;
test_assert(x==3);
x = 1;
if (x) x = 2;
else x = 3;
test_assert(x==2);
}
こんなものを延々と記述していくしかないのでしょうか。
0909デフォルトの名無しさん
NGNG全部網羅って C∞ のテストをしたいって事?
0910デフォルトの名無しさん
NGNGなので、実績の積み上げしか無いと思われ。
0911デフォルトの名無しさん
NGNG行カバレッジが100%になるようなテストセットを作るとか。
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNGでいいんじゃない?
0916デフォルトの名無しさん
NGNGループで何べんも呼ぶと普通の関数呼び出しよりパフォーマンスに影響出る?
自分の処理系では参照をはさまない様に(つまりLoadLibraryと同じ方式)
してるけどいまいち差がわからない。
それよりも配置情報テーブルのサイズ減らした方が得なのかなと思ったり。
0917デフォルトの名無しさん
NGNG間接参照になる分だけ、パフォーマンスは落ちる。でも関数内部が
一行だけとかでない限り、あまり気にしないで良いと思うぞ。
とりあえず計ってみたら?
0918デフォルトの名無しさん
NGNGコンテキスト切り替えとか食らうと凄く影響するけど、
間接参照が一個増えた程度ではパフォーマンスにそれほど影響しないような…
昔、C++ で virtual ありと無しのメンバ関数で速度測ったら
virtual ありの方が速くてびっくりした事もあるし。
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG誤差で逆転しただけかもしれんがね。
っつか、測定前から virtualありの方が遅いと決め付けてるなら測定する意味が無いような。
0921デフォルトの名無しさん
NGNGその測定ソース、どんな感じに作ったのか晒してみ。
0922デフォルトの名無しさん
NGNGvirtualありの関数を持つクラスとなしの関数を持つクラス作って
ループでn回関数を呼び出す、ループ前とループ後の時間から
かかった時間を割り出す普通のマイクロベンチだったと思うが。
関数の中身は空だったか、軽い計算させてたかは覚えてない。
あとはアセンブラの出力を見て最適化で関数呼び出しが削除されてない事と
virtualありの方は間接参照を介している事を確認した。
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGそれは >>916-922 と関係あるのか?
0925デフォルトの名無しさん
NGNG取り上げていた人はどちらもすごい方なので、ちと読んでみようかなという気が沸き起こった。
0926925
NGNGコンパイラの構成と最適化
中田 育男 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
0927デフォルトの名無しさん
NGNGドラゴンブックより良い?
0928デフォルトの名無しさん
NGNGドラゴンブックよりも内容が新しいらしい。
0929デフォルトの名無しさん
NGNGかなり難解ですよ。
ドラゴンブックとかプログラミング言語処理系を読んで
それでも物足りない人向け。
0930927
NGNG0931デフォルトの名無しさん
NGNGそれにしてもドラゴンブックの改訂版(に当たる本),いつ出るんでしょうね...
0932デフォルトの名無しさん
NGNGドラゴンブック揃えるより安いじゃん。
0933デフォルトの名無しさん
NGNGもう出たんじゃね?
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
ペーパーバック版は来年らしい。
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321210913/
0934デフォルトの名無しさん
NGNG「この商品を予約注文する」と表示されたから、まだ出てないのかも…待ちくたびれたよ。
0935デフォルトの名無しさん
NGNGうはwwwwwwwwwwwwwww
昨日見たときはショッピングカートに入れるになってたんだがw
amazonの罠だったか。
0936デフォルトの名無しさん
NGNGこれってどうよ?
0937デフォルトの名無しさん
NGNGそろえるって何?
1つしかないのでは?
0938デフォルトの名無しさん
NGNGお前、現物見た事あるのか?
0939デフォルトの名無しさん
NGNGhttp://www.amazon.com/exec/obidos/tg/detail/-/0201100886/
洋書の方は全1巻みたいです。
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGModern Compiler Design / John Wiley & Sons, ltd
Dic Grune / Henri E. Bal / Geriel J. H. Jacobs / Koen G. Langendoen
実装本ではなくアルゴリズム本。
ある程度のコンパイラ実装経験がある人なら買って損はないと思います。
私は「コンパイラ構成法」→「プログラミング言語処理系」→本書、の順で
学んできましたが、頭の中がすっきりまとまって、今の私にちょうど良い
レベルだと思います。アルゴリズムがスードウ・コードで書かれているので
最初はちょっと戸惑いましたが、すぐに慣れるでしょう。
私の英語レベルでも、見開きに知らなかったり忘れていたりする単語が、
ひとつあるかないか、といった程度なので本書を読み進めるのは、それほど
困難ではありません。
ちなみに私の英語遍歴は、「Grammar in Use Basic/Intermediateを一通りやる」→
「Duo 3.0丸暗記」→「TOFELテスト 英単語3800のランク3を暗記中」と
いったところ。それほど高い英語力がなくても大丈夫でしょう。
0943デフォルトの名無しさん
NGNGコンパイラの勉強をする前、した後とでなにか大きく変わったことはありますか?
0944デフォルトの名無しさん
NGNG紹介を少しみたところ、コンパイラの(可能な限りの)自動生成に力点を置いてるようですが、
その辺りどうでしたか?
0945デフォルトの名無しさん
NGNGpseudo codeを「スードウ・コード」と書かれているので戸惑いました。
0946デフォルトの名無しさん
NGNG昔俺が本読んで実際うまくいった最適化と言える物は
せいぜい定数畳み込みと覗き窓ぐらいだったな。
頭悪いと「それはそれ、これはこれ」って言葉の意味が実感できるぜ!
コンパイラの勉強もいいけどCPUやアセンブラにも詳しくないと
速いコードにはならないぜ。
VMを作るときにも困るぜ?
0947デフォルトの名無しさん
NGNG英語音痴w
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG今まで努力するのが面倒で、yaccでやっていましたが、
そんな自分が嫌でコンパイラの勉強を始めました。
その甲斐あって仕事もはかどり、昇進も決まり、彼女も出来ました。
6月には結婚します。これも全てコンパイラの勉強をした成果です。
(27歳・会社員)
0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG今ではすっかり能無し君か。
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNGそういえばコンパイラの勉強し始めてからだったことに気づいた。
0955デフォルトの名無しさん
NGNGロト6を買ったら2等が当たりました。2000万くらい。
0956デフォルトの名無しさん
NGNG株が上がったことにしよう
0957デフォルトの名無しさん
NGNG0958sage
NGNGhttp://www.cbook24.com/bm_detail.asp?sku=4774121770
0959デフォルトの名無しさん
NGNGおっ、新作ですかね?
この分野では珍しい。
しかも、やさしそう
あと安い。
すべて型破り!w
0960デフォルトの名無しさん
NGNG借金でもできたんですか?
0961959
NGNGあと、目次とかはないんでしょうか?
0962デフォルトの名無しさん
NGNG中身もなさそう。
0963ほんたま
NGNGVC++で自分でつくったDLLの関数を同じ方法で呼び出そうとすると、「DLL何に○○のエントリーポイントが見つかりません」というメッセージが出て呼び出せないんだ…
おみゃ〜らよ、自分でつくったDLLとwindows付属のDLLとは、どっか構造が違うのかな?
windows付属のDLLと同じ構造のDLLを自分でつくるにはどうすればいいの?
教えてくだされ〜♪
0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNGプログラミング言語処理系とか買ったけどチンプンかんぷんだった俺にはちょうどいい
こういう本もっとでてほしいな
安いしな・・・
0967デフォルトの名無しさん
NGNGオレは「UNIX プログラミング環境」が初体験だったが。今はもう流行らんか。
0968デフォルトの名無しさん
NGNG洩れもそれだ!w
但し英語番だけど、
0969デフォルトの名無しさん
NGNGhocのソースにバグがあったと聞いたけど、どこか知ってる?
0970デフォルトの名無しさん
NGNGいろいろあった気がするが、具体的に何だったかは忘れた。
0971ほんたま
NGNGおみゃ〜らよ、なぜ宇宙一すげーかわかるかな?
おみゃ〜らよ、おりはな、「Visual C++」で自作したDLLをスリムドカンでつくったプログラムから呼び出すのに成功したんだよ!わかる?
おみゃ〜らよ、DLLを呼び出すプログラムを「Visual C++」」でつくるには、Libファイルをリンクに設定したり、ヘッダファイルをインクルードしたりとやるべきことは多いだろ?
おみゃ〜らよ、DLLを呼び出すプログラムを「HSP」でつくるにも、やはりDLLの他に「.as」ファイルが必要だよ。
だが、「スリムドカン」の場合、DLLの他には一切何も必要ないんだな〜う〜ん、これが…自分じわかる?
つまり「スリムドカン」の場合、DLLさえあればDLLを呼び出すプログラムがビルドできるってわけ♪
おみゃ〜らよ、おりは宇宙一画期的だと思わないか?
おみゃ〜らよ、宇宙一すげ〜とわめいたのはそういうことよ♪
おみゃ〜らよ、自分じどうじ?
0972デフォルトの名無しさん
NGNG煽りでなくて、
バグでなく仕様じゃないの?
本だし
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG伝聞だけど煽りじゃないよ。
知り合いが「打ちこんで動かしたけどいくつかバグがあった」って。
もちろん打ち間違いの類いじゃなくね。
0975デフォルトの名無しさん
NGNGそんで俺らにデバッグさせようってことですかぁ?
0976デフォルトの名無しさん
NGNGダルタニアンはそれは友人ではなくてアトス自身のことなのではない
かと考える場面がある。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGほらソース
ttp://www.bsddiary.net/d/200012.html#15
5段目の段落をよく読め
0979デフォルトの名無しさん
NGNGどこがどうバグってるのか聞いてくれ。
0980デフォルトの名無しさん
NGNG一読者だよ
直接聞けないからここで聞いたんだよ
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNGが気になる。
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGつーかきみらもっとLISPを知っときなさい
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG負け組言語は不要w
0989デフォルトの名無しさん
NGNG0990スレ立てられませんでした(テンプレ1)
NGNG前スレ
1 http://pc.2ch.net/tech/kako/981/981672957.html
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)
3 http://pc5.2ch.net/test/read.cgi/tech/1070089173/ (前スレ)
関連リンクは多分 >>2-8 あたり
0991(テンプレ2)
NGNG色々なツールの紹介
http://catalog.compilertools.net/
コンパイラ関連のリンク集
http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml
スクリプティング言語資料室(仮) (リンク)
http://www.kt.rim.or.jp/~kbk/
Compiler Construction
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html
Compiler Construction (1997)
http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html
情報システム工学実験 III コンパイラ・コンパイラ
http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html
OS/Programming 簡単な C コンパイラ
http://www.csg.is.titech.ac.jp/~chiba/lecture/os/
正規表現
http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm
コンパイラ研究・開発情報の一集積所
http://compilers.cs.uec.ac.jp/
Links and Selected Readings
http://www.gnu.org/software/gcc/readings.html
0992Intelの資料リンク切れになってる(テンプレ3)
NGNGUNIX板
yacc & lex
http://pc.2ch.net/test/read.cgi/unix/1031801314/
Lex and YACC primer/HOWTO (邦訳)
http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
Turbo Pascal Lex/Yacc
http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html
Jim Roskind's LALR(1) C++ Grammar
http://www.empathy.com/pccts/roskind.html
Flexと Bisonを同時に使う
http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
KITE_ASM (yacc,lex)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/lex/
Cygwin
http://www.cygwin.com/
GNU utilities for Win32
http://unxutils.sourceforge.net/
0993(4)
NGNGANTLR(非yaccのパーサジェネレータ)
http://www.antlr.org/
JavaCC(Java Compiler Compiler)
https://javacc.dev.java.net/
http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
CUP & JLEX or CUP & JFlex
CUP http://www.cs.princeton.edu/~appel/modern/java/CUP/why.html
JLEX http://www.cs.princeton.edu/~appel/modern/java/JLex/
JFlex http://www.jflex.de/
SableCC
http://www.sablecc.org/
¬<><∪∪ (notavacc)LALR(1)
http://ne.cs.uec.ac.jp/~koto/notavacc/
JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1)
でもANTLRはC++なんかにも対応。
boost::spirit(C++のテンプレートでEBNFの構文を模倣)
http://spirit.sourceforge.net/
http://boost.cppll.jp/HEAD/libs/spirit/index.html(マニュアル日本語化プロジェクト)
http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
0994(5)
NGNGGC FAQ -- draft
http://www.iecc.com/gclist/GC-faq.html
A garbage collector for C and C++
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
一般教養としての Garbage Collection
http://www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html
Garbage Collection : Algorithms for Automatic Dynamic Memory Management
http://www.amazon.com/exec/obidos/ASIN/0471941484/
0995(6)
NGNG●コンパイラ 原理・技法・ツール 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/0321210913/
ハードカバー版: http://www.amazon.co.jp/exec/obidos/ASIN/0321131436/
●スモールコンパイラの制作で学ぶプログラムのしくみ
http://www.cbook24.com/bm_detail.asp?sku=4774121770
0996デフォルトの名無しさん
NGNG0997(7)
NGNGkikyou.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 インタプリタ の作り方』見つけた。
Java と C# で実装。
ttp://www.okisoft.co.jp/esc/go.html
ttp://www.okisoft.co.jp/esc/go2.html
ttp://www.okisoft.co.jp/esc/go3.html
ttp://www.okisoft.co.jp/esc/go4.html
MSによるPEフォーマット仕様書(日本語)
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html
0998デフォルトの名無しさん
NGNG誰か頼みます。
0999デフォルトの名無しさん
NGNG「コンパイラ・スクリプトエンジン」相談室4
http://pc5.2ch.net/test/read.cgi/tech/1100097050/
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。