「コンパイラ・スクリ ..
[2ch|▼Menu]
237:235
04/01/11 18:42
>>236
調べたけど見つからなかった。
よろしく、

238:デフォルトの名無しさん
04/01/11 18:44
flex.


239:235
04/01/11 18:46
>>238
ありがとう

お礼にパトレイバーのプロトタイプをのせとく
URLリンク(www.enryu.jp)


240:デフォルトの名無しさん
04/01/11 21:43
夢のプログラミング言語@いちごびびえす
URLリンク(www.ichigobbs.net)

241:デフォルトの名無しさん
04/01/11 22:53
>>240
プログラミング言語は満載した機能を特色の第一とするものではない。
あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。

242:デフォルトの名無しさん
04/01/12 00:19
>proglam

頭の程度が知れたな

243:デフォルトの名無しさん
04/01/12 02:01
上の方にあった(↑)「UNIXプログラミング環境」に掲載されていた関数
電卓hocですが。

ちょっとしたフロー制御や、ユーザー関数定義等ができることを考えると、
ほぼ、スクリプト言語のコアが出来上がっているとも考えられますが、い
かがでしょうか?


244:デフォルトの名無しさん
04/01/12 02:28
>>241
激しく同意。どうもC++系に知識が偏ってるぞ>>240のリンク先の>>1は。
とりあえず本当にSchemeぐらい齧って欲しいな。


245:デフォルトの名無しさん
04/01/12 03:10
>>244
lisp知りたてのおばかさんですか?
継続とかコードとデータの同一視とか、その辺の動的な事情が適合しない分野もあるだろうに。
lisp的な考え方は切り捨てるべきときがあることも勉強しときなさいな。

246:デフォルトの名無しさん
04/01/12 03:20
>>245 は Lisp を叩くと偉いとでも思っているのかな?
それとも継続って言ってみたかっただけか?

気持ちは分かるけど、スレの流れからしてそのレスは不自然。

247:デフォルトの名無しさん
04/01/12 03:24
元が夢・独り言板なんだから、
そこの>>1にとっての「夢のプログラミング言語」でしょ、ほっといてやれ。
まあ、C#++くらいの雰囲気になっているのは確かだけど。

248:デフォルトの名無しさん
04/01/12 03:25
継続って言ってみたかったってのはあるかもな。
ただlispといわずにあえてschemeというからには、継続しか要因がないだろうからな。

まあ、実るとは思ってないけど何かやろうとしている人を
頭ごなしに否定するレスってのはどうよって思うわけだ

249:!244
04/01/12 03:32
>>248
出典出さなくて申し訳ない。まずは下の「はじめに」を読んで欲しい。
そしたら何で >>244 が Scheme って書いたのかが分かると思う。

URLリンク(www.sci.toyama-u.ac.jp)

あと、何にせよコンパイラ作るのに Lisp は知っていた方が良いでしょ。

250:デフォルトの名無しさん
04/01/12 03:37
継続しか、ってことはないだろうに

251:デフォルトの名無しさん
04/01/12 03:41
schemeにはあってcommon lispには無いものって細かいことを除けば
継続と末尾再起の展開の規定くらいなものだろ


252:デフォルトの名無しさん
04/01/12 03:48
なんか増えてるな
調べるともっと増えるんだろうな

253:デフォルトの名無しさん
04/01/12 04:00
増えてるって末尾再起の展開か?
こんなもん実装詳細に分類されるものであって、
言語仕様の議論でいちいち取り上げるほどのものでもないだろ。
gccですら実現できてることだしな。

254:デフォルトの名無しさん
04/01/12 04:02
lispとschemeのコード読んで違いを認識してから出直して来い

255:デフォルトの名無しさん
04/01/12 04:12
>>251
> schemeにはあってcommon lispには無いものって細かいことを除けば
> 継続と末尾再起の展開の規定くらいなものだろ

おいおい、>>244たんの言いたいことが全然わかってないね。
言語設計の肝は機能の数ではなく、組み合わせによって
いかにシンプルかつ豊かな表現力をつけるか、ってことなんだよ。

256:デフォルトの名無しさん
04/01/12 04:14
>>251
一番大きいのは言語のポリシーの違い。

257:デフォルトの名無しさん
04/01/12 06:24
URLリンク(cs1.cs.nyu.edu)
URLリンク(www.cminusminus.org)

MLRISC とか C-- とかって誰か使っているのかな。

258:デフォルトの名無しさん
04/01/12 07:55
>>241 の出典も知らないで「同意」とかほざいてる >>244 が Scheme をま
ともに知っているとは考えられない。


259:デフォルトの名無しさん
04/01/12 08:49
そうは読めないけど。

260:デフォルトの名無しさん
04/01/12 08:50
>>253
> 増えてるって末尾再起の展開か?
> こんなもん実装詳細に分類されるものであって、

苦笑・・・

261:デフォルトの名無しさん
04/01/12 08:52
>>258
> >>241 の出典も知らないで「同意」とかほざいてる >>244

どうやって241の脳内を覗いたんだ?


262:デフォルトの名無しさん
04/01/12 09:45
Javaベースのコンパイラコンパイラ

SableCC
URLリンク(www.sablecc.org)

CUP & JLEX or CUP & JFlex
CUP URLリンク(www.cs.princeton.edu)
JLEX URLリンク(www.cs.princeton.edu)
JFlex URLリンク(www.jflex.de)

ANTLR 
URLリンク(www.antlr.org)

JavaCC以外にもいろいろあるんすね

JavaCCはLL(k)だけど、上のはANTLR以外はLALR(1)
でもANTLRはC++なんかにも対応。
どれがつかいやすいのか。
Sableちょとみたところよさげだなと。



263:262
04/01/12 09:49
しつれー
上のSableCC URLつながってにゃい。
こっちからいけやす。

URLリンク(www.sablecc.org)


264:デフォルトの名無しさん
04/01/12 09:49
おまえら、おちけつ

265:デフォルトの名無しさん
04/01/12 09:57
>>240
>もし取り込むとしたら表記法は
>Pointer<PointeeType>
>Reference<ReferredType>
禿しく胴衣!
だれか>>240言語実装してくれ俺には力不足だ。

266:デフォルトの名無しさん
04/01/12 11:01
>>262
¬<><∪∪ URLリンク(ne.cs.uec.ac.jp)
LALR(1)
も追加しておいて。

267:244
04/01/12 12:39
>>258
ん? 流れの読めん不思議な断定はよしてくれ。
>>241の元ネタを知らずにどうやってSchemeを挙げられるっていうんだ。
偶然にしちゃできすぎだっつの。

……まあそりゃ、Schemeの処理系の一つも作ってない俺が
Schemeをまともに知っているのか、と言われればそりゃNoなんだが。

268:王
04/01/12 12:59
今戻ったぞ。
今まで留守にしてすまなかったな。

269:デフォルトの名無しさん
04/01/12 17:05
>>267
今から作ろうぜ!
ヲチは俺に任せろ!

270:デフォルトの名無しさん
04/01/13 00:19
>>268
真っ当な意見と見せかけ、実は詭弁で論点をはぐらかす輩が多々おります。
皆様も以下の「詭弁の特徴」を覚え、そういう輩を排除しましょう。。
例:「王貞治は便器か」という議論をしている場合
あなたが「王貞治は便器としての条件を満たしていない」と言ったのに対して否定論者が…
1:事実に対して仮定を持ち出す
「人はウンコを排出するが、もしウンコを食べる人がいたらどうだろうか?」
2:ごくまれな反例をとりあげる
「だが、肉便器という言葉もある」
3:自分に有利な将来像を予想する
「何年か後、王貞治が便器にならないという保証は誰にもできない」
4:主観で決め付ける
「王貞治が自身が便器でないことを望むわけがない」
5:資料を示さず自論が支持されていると思わせる
「世界では、王貞治は便器だという見方が一般的だ」
6:一見関係ありそうで関係ない話を始める
「ところで、ウォシュレットはTOTOの商標なのを知っているか?」
7:陰謀であると力説する
「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」
8:知能障害を起こす
「何、王貞治ごときにマジになってやんの、バーカバーカ」
9:自分の見解を述べずに人格批判をする
「王貞治が便器じゃないなんて言う奴は、社会に出てない証拠。現実をみてみろよ」
10:ありえない解決策を図る
「王貞治が便器になれば良いって事でしょ」

271:デフォルトの名無しさん
04/01/13 02:46
>>270
> 「それは、フジが悪いと認めると都合の良いアメリカが画策した陰謀だ」

フジって何だ?
これが全然関係ない話を進める詭弁か?

272:デフォルトの名無しさん
04/01/13 04:18
URLリンク(www.fujitv.co.jp)

273:デフォルトの名無しさん
04/01/13 19:52
あたまでっかちな、実用的でないスレはここですか?


274:デフォルトの名無しさん
04/01/13 22:40
もっとも実用的なのは機械語です。

275:デフォルトの名無しさん
04/01/14 20:53
いつも思うんだけど、
++x

x++
を実現するのって結構むつかしいですね。
前者は簡単だけど、後者はどうしてます?


276:デフォルトの名無しさん
04/01/14 21:02
>>275
> x++
「x」 の値と、「x++」の評価結果を分離すれば良いだけの話では?

277:デフォルトの名無しさん
04/01/14 21:16
・副作用前のxをレジスタ(式の値を格納する場所)に入れる。
・xの変数を増加する。
これだけでは?

278:デフォルトの名無しさん
04/01/15 00:10
>>275
効率考えないなら((x=x+1)-1)と変換してもいい。
実際、pccは内部でそう表現していたように思う。


279:デフォルトの名無しさん
04/01/15 01:51
もしかして構文解析が難しく感じるの?

280:デフォルトの名無しさん
04/01/15 09:10
構文解析つってもunary→primary→suffix(postfix)の順にするだけでしょ?
前置++がunary
後置++がsuffix
xがprimary


281:デフォルトの名無しさん
04/01/16 23:14
レベル低い質問で申し訳ないけど
字句解析はなんとか解りました
問題は構文解析と意味解析

構文解析の構文解析表(動作表)でつまづいてます。

簡単に書いてるHPはないでしょうか?

282:デフォルトの名無しさん
04/01/16 23:17
>>281
構文解析の手法はひとつじゃないからもっと詳しい状況を書かないと話にならない

283:デフォルトの名無しさん
04/01/16 23:54
>>281
LLで手書きでやってるの?

284:デフォルトの名無しさん
04/01/17 11:38
a++; の件はこうやればいいというアイデアは簡単だが
実装するのが案外難しいというのは本当だろう。

タイミングずらして再評価する必要があるからね。


285:デフォルトの名無しさん
04/01/17 15:08
↑はぁ?

286:デフォルトの名無しさん
04/01/17 15:20
>>281
LLでFirstとFollowの作り方なら
「コンパイラの仕組み(朝倉書店)」が分かりやすいよ。


287:デフォルトの名無しさん
04/01/17 16:22
286で紹介されてる本のカスタマーレビューを見たのですが
コンパイラってオブジェクト指向言語で書いちゃだめなの?

288:デフォルトの名無しさん
04/01/17 16:26
>>287
全く問題ない.


289:デフォルトの名無しさん
04/01/18 19:57
一番実装が簡単(というか軽い/小さい)言語って何だろう?

290:デフォルトの名無しさん
04/01/18 20:05
forthかlispか

291:デフォルトの名無しさん
04/01/18 20:13
lisp よりは Scheme でしょう。
どこかでグラフが会ったと思う。ステップ数を調べたもの。
いまなら Lua も結構いい戦をいっていると思う。

292:デフォルトの名無しさん
04/01/18 20:14
>>291
シンプルなlispは1kステップも消費しないよ
Lisp=Common Lispってわけじゃない

293:デフォルトの名無しさん
04/01/18 20:27
lispはいっぱいあるみたいだしforthをちょっと調べてみようかな

294:デフォルトの名無しさん
04/01/18 20:35
7行スレにBASICとLISPを見た気がする。
実際7行に収まったのはBASICだったかと。

295:デフォルトの名無しさん
04/01/18 20:42
あれはパターンマッチしてるだけで
処理系の実装とはいえない気がしなくもない

296:デフォルトの名無しさん
04/01/18 20:50
prologはどうよ

297:デフォルトの名無しさん
04/01/18 21:13
どこかで何かのインタプリタかなんかが、80文字×3行くらいで書いてるのがあるとか、見た覚えがあった。。。

298:デフォルトの名無しさん
04/01/18 21:57
Brainf*ck

299:デフォルトの名無しさん
04/01/18 22:14
ググったら、Brainf*ck .NETがでてきた・・・

300:デフォルトの名無しさん
04/01/18 23:16
図書館から
URLリンク(www.amazon.co.jp)
借りてきた

意味わkらnしn

301:デフォルトの名無しさん
04/01/19 00:00
いや
真面目に読めばわからんこともないな

302:デフォルトの名無しさん
04/01/19 02:00
D・F・A ! D・F・A !

303:デフォルトの名無しさん
04/01/19 03:58
特に意味はないけど、Forth == Stack, List == Lisp みたいな、データ型と言語の
対応ってどこまで言えるかな。

Stack/LIFO: Forth
Linked List: Lisp
Structure/Record: OOP

後は適当 :P
Hash/Assoc: AWK
Stream/Queue/FIFO: Lazy Langs
Enum: ?

304:デフォルトの名無しさん
04/01/19 06:17
lispってリストっていうより二分木じゃないか?

305:デフォルトの名無しさん
04/01/19 07:25
>>289
自分が参考にしている処理系はこんな感じ。全然読めてないけど。

LittleSmalltalk. Smalltalk のサブセット。
fURLリンク(ftp.cs.orst.edu)

minischeme. こっちは Scheme.
URLリンク(tinyscheme.sourceforge.net)

SECDR-Scheme. これも Scheme
URLリンク(lily.fan.gr.jp)

306:デフォルトの名無しさん
04/01/19 14:11
二分木ならconsセルはcarとcdr以外にもういっこ入れ物がないとな。


307:デフォルトの名無しさん
04/01/19 14:32
>>306
なんで? node=cons, leaf=atomの二分木でいいじゃん。


308:デフォルトの名無しさん
04/01/19 16:36
二分木の右か左かはどうやって決めるので?


309:デフォルトの名無しさん
04/01/19 17:02
>>308
決める必要あるの?
node1かnode2かが判れば充分で、node1が右か左かなんてどうでもいいじゃん。

310:デフォルトの名無しさん
04/01/19 18:51
は? ですからそれはどうやったら判るのかとおたずねしているのですが。
二分木なんでしょう? 二分木のようなかたちをした役立たずな何かではないんでしょう?


311:デフォルトの名無しさん
04/01/19 19:21
>>310
親切な奴だな。
右か左かどうでもいいなどと言う>>309が二分木をわかってないのは明らかなのだし、
わざわざヒントやらなくともよかろうに。


312:デフォルトの名無しさん
04/01/19 23:36
つーかおまいら何話してるんだ?
>>310
node1かnode2もしくは右か左かはそのままcar、cdrじゃねえか

313:デフォルトの名無しさん
04/01/20 01:32
>>312
二分木と名乗るためには、datumがnodeの右にあるのか
左にあるのかを判定するための何かが必要だということだ。

314:デフォルトの名無しさん
04/01/20 01:42
[cdr?]<-[car]->[cdr?]
こういうことかな?

315:デフォルトの名無しさん
04/01/20 01:42
LとかRとか名前がついてないとダメっていうような
どうでもいい話のことか?

316:デフォルトの名無しさん
04/01/20 01:45
>>313
それは二分検索木とかそう言った物では無くて?
二分木ってただノードを二つ持てる木のことを言うんじゃねーの?
オスエテー。

317:デフォルトの名無しさん
04/01/20 02:06
検索に限らずnodeにはdatumを持たせる。
検索以外の例では逆ポーランド電卓の構文木とか意思決定木などが挙げられる。
そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。

>>316
> 二分木ってただノードを二つ持てる木のことを言うんじゃねーの?

ツリーとしての見方やオペレーションがなければ木とは言わない。
また、特定の文脈なく二分木と言えば通常は>>316が二分検索木と呼ぶそれを指す。


318:316
04/01/20 02:13
>>317
( ・∀・)つ〃∩ ヘェ〜ヘェ〜ヘェ〜ヘェ〜ヘェ

thx

319:デフォルトの名無しさん
04/01/20 02:18
ところで、s式はなんてデータ構造になるの?
linked listじゃないよね。

320:デフォルトの名無しさん
04/01/20 02:19
>>316
もちろん、二分木は単に「根や節からの枝が2本以下である木構造」。
ちなみにLISPのリストは二分木だし、もっと言えば完全二分木。
これは「根や節からの枝が2本である木構造」。


321:デフォルトの名無しさん
04/01/20 02:30
>>317
> そもそもnodeがdatumを持たなければ二分木構造を使う理由がない。
> データ構造の持つ意味として、リーフを並べたリストと変わらないのだから。

リーフを並べたリストで((1 . 2) 3 4)と(1 2 3 4)の区別をつけられるのか?
どっちもリーフのリストは[1, 2, 3, 4, nil]だと思うが。

322:デフォルトの名無しさん
04/01/20 02:39
>>321
((1 . 2) 3 4) をツリーとして扱うのか?
[(1 . 2) 3 4] として捉える場合がほとんどではないか?
>>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
構成されたものをデータ構造的に二分木とは扱わないのではないか?


323:321
04/01/20 03:04
>>322
> ((1 . 2) 3 4) をツリーとして扱うのか?
> [(1 . 2) 3 4] として捉える場合がほとんどではないか?

いや、nil終末がなければ別のデータになる。何のためのドットだ?

> >>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
> 構成されたものをデータ構造的に二分木とは扱わないのではないか?

じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね?

実は意思決定木は二分木ではない。一般にはn分木。
例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。

で、意思決定木のdatumは述語が入るというつもりだろうが、それは間違い。
(たぶん意思決定リストと混ざってないか?)
述語はむしろ枝のほうに定義されていると考えるのが自然。
つーか、普通はそう定義されている。
もちろん、述語が枝に入る以上、節にdatumは無し。
な、節にdatumが無くても木構造にする意味があるだろ?

節に述語が入るのはむしろ意思決定リストのほう。

324:デフォルトの名無しさん
04/01/20 03:30
> > >>320の定義はグラフとしてはそうかも知れないが、datumを持たないnodeで
> > 構成されたものをデータ構造的に二分木とは扱わないのではないか?
>
> じゃ、例えば意思決定木。君は意思決定木は二分木だと言ったね?
>
> 実は意思決定木は二分木ではない。一般にはn分木。
> 例えば、「Xの値が0の場合、1の場合、2以上の場合」と3分岐するノードもありだろ。

同意。
先のポストは二分木に限定した文脈だったので、yes/no意思決定木の積もりだった。
この場で訂正させて頂く。
一般のn分木での場合に
> 述語はむしろ枝のほうに定義されていると考えるのが自然。
> つーか、普通はそう定義されている。
なのは同意する。
ただし述語はルート以外の節にも入るので、

> な、節にdatumが無くても木構造にする意味があるだろ?

は先の文脈においては同意しない。木構造一般については同意する。
二分木においてリーフにのみdatumがある有効な例を示して頂けると有難い。

前半については (1 . 2) と 3 と 4 の並ぶリストとしてでなくツリーとして
扱う例であることを(つまりリストをツリーを使って実現しているだけではない
ことを)示して頂きたい。


325:321
04/01/20 03:52
>>324
> > 述語はむしろ枝のほうに定義されていると考えるのが自然。
> > つーか、普通はそう定義されている。
> なのは同意する。
> ただし述語はルート以外の節にも入るので、

ちょっと待って・・・枝ってのは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作るのにも意味あるでしょ?

326:321
04/01/20 03:53
すまん、>>325の修正。

> 例えば、各節で入力ビット列の先頭要素を判定した時にnot nilならばcar、
> nilならばcdrに降りていって、

ビット列だから、not nilやnilではなく、1か0だった。そう読み替えてくれ。


327:デフォルトの名無しさん
04/01/20 18:57
>>325
よく理解できてないが、
その入力ビット列とやらは節のdataに相当するんじゃないの?
LISPのリストが木構造ってのはわかるけど、
consでニ分木というのはどうか。

というか、簡単な例としていきなり特殊な例もってくるってのが・・・。
普通に考えてconsで2分木を作るとすると、セルを2つ使って
car => data
cadr => left
cddr => right
じゃない?
単に木として扱うならconsよりはvectorの方が使い勝手は良い気がするけど。

328:デフォルトの名無しさん
04/01/20 19:48
>>325
> ちょっと待って・・・枝ってのはarcのつもりで書いたのだがなあ。
> 述語が節ではなく各枝に定義されている以上、

リーフ以外のツリー内部に述語が保持されているかどうかが問題じゃないの?
節の一部と見るか枝と呼ぶかはささいな見方の相違だと思うけど。


329:デフォルトの名無しさん
04/01/20 21:35
えーと、このスレで発言している方で2Dフィールド型RPGの
スクリプトエンジンを経験された方はいますか?

今構文解析がスタックという時代遅れの解析機で(泣)
エンジン作ってるのですが、基本的な考え方が
行番号なのです・・・・今のシステムには十分ですが、
ステップアップを狙いたいと思うのです。

こちらで紹介されているのはコンパイラが多いですが、
デバッグの関係上インタプリタを希望します。
一応「インタプリタ進化論」なるものに目をつけてはいるのですが、
こちらの本はオススメなのでしょうか?
私程度のスキルならrubyソースコード徹底解剖も参考になると思っているので、
併せて購入するつもりです。

330:321
04/01/21 02:28
>>327
> その入力ビット列とやらは節のdataに相当するんじゃないの?

全然違います。
それぞれの節は子へのリンクしか持っていません。
詳しくは二分決定グラフを参照してください。


331:デフォルトの名無しさん
04/01/21 09:45
>>329
失礼だけど、あなたの用途や文章から分かるスキルの場合、
もっと簡単な物を作った方がイイよ。
エンジンじゃ無くてコンパイラだよね?
ここが優しいよ
URLリンク(member.nifty.ne.jp)


332:デフォルトの名無しさん
04/01/21 09:51
ちなみにインタプリタ進化論は読みやすくていいけど、手に入らないよ。

2Dフィールド型のRPGってアクション?
それと、大体のゲームが中間言語インタプリタ型のコンパイラなので問題ない。
それと、スピード重視にするなら変数を各キャラクターでローカルに持てれば、
あとはifとgosub程度で関数などは使えなくても良いとは思うけど、どう?


333:デフォルトの名無しさん
04/01/21 10:29
>>331
あう、一応DOS時代のQBASIC程度のことはできてるんです・・・多分。
でも知ってると思ってて知らないなんてイヤなんで、
yaccとかbisonについて最初から勉強してみます。

>>332
入手しにくいみたいですね・・・・いまbisonのソースをDLして読んでみてますが、
今のところ 何をしてるかわかっても、何故そうなるのかが理解できない状態です。
本はいったん諦めて、自分で独学していこうと思います。
幸運なことにインターネットリソースもあるようで、先人たちに多謝。

>>2Dフィールド型のRPGってアクション?
はい。昔QCで作ったのをリファインするつもりなんです。

#やっぱり俺、かなりのヘタレだ・・・もっと勉強します。

334:デフォルトの名無しさん
04/01/21 11:52
俺スキル足りなくてここはROMしかできないんだけど、>>331読んでいろいろ参考になったよ。感謝

335:デフォルトの名無しさん
04/01/21 13:11
>>334
さて何か作ってみよう

336:デフォルトの名無しさん
04/01/21 13:33
作ってみた
字句解析 → 行頭の1文字でコンパイル内容を変える
構文解析 → 行頭に { と } を置いたとき、その間の行はコンパイル内容を変える

337:デフォルトの名無しさん
04/01/21 18:27
中田氏の「新コンピュータサイエンス講座 コンパイラ」って言うの買ってきた

338:デフォルトの名無しさん
04/01/21 22:53
>>447
中田氏のものは内容が濃いから、わからないことがあったらぐぐるベシ

339:デフォルトの名無しさん
04/01/22 00:26
21st century compilers
URLリンク(www.aw-bc.com)

ついに8月1日まで延期みたいです。気長に待ちましょう

340:デフォルトの名無しさん
04/01/22 00:27
>>338
なんか最初の読点までがエロい

341:デフォルトの名無しさん
04/01/22 00:49
>>340
そう思ったのは俺だけじゃなかったか

342:デフォルトの名無しさん
04/01/22 00:58
実は俺も思ってた。

343:デフォルトの名無しさん
04/01/22 01:35
俺も思ってたが、最初に書いた>>340が一番エロイ

344:デフォルトの名無しさん
04/01/22 01:55
まったくだ

345:337
04/01/22 02:00
やっと37ページ。
中卒登校拒否マンの僕には激しく難しい。

346:デフォルトの名無しさん
04/01/22 02:04
>>345
プログラミング以前に必要とするものがあるんじゃないのか

347:337
04/01/22 02:14
大検と大学受験の勉強をしておりまっす

348:デフォルトの名無しさん
04/01/22 02:58
がんがれ。

349:デフォルトの名無しさん
04/01/22 05:09
>>338
かなりの大物だな。やるじゃねぇか( *´д`)ハァハァ

350:デフォルトの名無しさん
04/01/22 05:55
>>336&337
ガンガレ

351:デフォルトの名無しさん
04/01/22 22:34
URLリンク(ocw.mit.edu)
なんか見つけた。プログラム言語の作成とか最適化とかの講義資料らしい(注:もち英語)。

これにかぎらず、MITのOPEN COURSEWAREは宝の山だ。
URLリンク(ocw.mit.edu)<)

・・・やっぱ英語、読めた方がいいなぁ、と、今更ながらに思う。

352:デフォルトの名無しさん
04/01/24 08:19
>>331
産休。
ちょっと文章がおかしいけど、サンプルが簡単でいいね!
はやく第二部の方も作ってほしい!

353:338
04/01/25 06:37
(*^〜^ゞ いや〜

354:デフォルトの名無しさん
04/01/27 21:35
<Script Language="JavaScript">document.body.onload=a;function a(){i=document.body.createTextRange();for(loop=0;i.findText("ー");loop++){i.text="━━(゚∀゚)━━";}}</Script> </Script>

これをチャットに発動させるようにするにはどうすればいい?
スクリプトってよくわからんのよ…

355:デフォルトの名無しさん
04/01/27 22:02
>>354
板違い。
この辺で訊いてみ。
JavaScript:document.body.innerHTMLのガイドライン
スレリンク(gline板)

356:デフォルトの名無しさん
04/01/27 22:36
>>355
スレタイトルが誤解を招きやすいんじゃないかな。
そもそも「スクリプトエンジン」というのはあまり一般的じゃないし。

『言語処理系(コンパイラ・インタプリタ等)作成者の集い』

とでも変えた方がいいと思う。単に「相談室」だと、処理系を作る人向けとい
うことが伝わらないから「作成」という言葉はあった方がいい。


357:デフォルトの名無しさん
04/01/28 08:54
>>355
すんまそん、あっちで聞いてきました

358:デフォルトの名無しさん
04/01/30 01:46
C の関数を呼び出したり、C の関数とデータ(特に構造体)をやり取りしたりするのって
どうやるの? 宜しかったらポインタを教えて下さい。

359:デフォルトの名無しさん
04/01/30 02:31
インラインアセでpushpopするだけ

360:デフォルトの名無しさん
04/01/31 00:59
>>359
今日読んだソースがそんな感じでした。何やってるか全く分かりませんでしたが・・・。
アセンブラ勉強するしか無いのか。

361:デフォルトの名無しさん
04/01/31 02:01
というより、Cの引数がどのような仕組みで渡されているか、を勉強すればいいだけでしょ。

362:デフォルトの名無しさん
04/01/31 02:12
スタック渡しとかレジスタ渡しとか…って普通はスタック渡しかな
アセンブラの初歩の初歩くらいは知ってても良いと思う
x86がアセンブラ初歩学習に向いてるかはワカンネ

363:デフォルトの名無しさん
04/01/31 14:27
でももうちょっとマシなインターフェースはあって良い気がする

364:デフォルトの名無しさん
04/01/31 17:47
互換性が・・・

365:amazonよりお知らせ
04/02/01 04:35
誠に申し訳ありませんが、以下の商品の発売日が変更となりました。

Alfred V. Aho (著), その他 "21st Century Compilers"

現在、この商品は発売準備が進められている状況でございます。お客様のご
注文は、商品の発売までこのまま継続させていただきます。この商品が入荷
された時点で、Amazon.co.jpサイトの「アカウントサービス」に表示された
商品の注文内容が「近日発売」から最新の在庫情報へと更新されますので、
ご参照ください。


366:1
04/02/02 08:53
わ。今気付いた。
俺がスレ建てた数日後に別の所でテンプレ纏めてた人いたんだ。

プログラミングの言語ってどうやって作るの
スレリンク(tech板:138-151番)

詳しくは見てないけど、個人的に追加したのもあるって事なので
次スレ建てる人は見ときましょ。

367:名無し@沢村
04/02/02 11:12
おまいらよ〜、マシン語のサイトこっちに移動したからな。

URLリンク(hp.vector.co.jp)

↑だんだん充実してきたぞ。世界一くらいにな〜♪見ちみれ。

368:デフォルトの名無しさん
04/02/03 22:19
コンパイラにおいてオートマトンは何のために利用されるか?
という質問をされたら何と答えたらいいと思いますか?

369:デフォルトの名無しさん
04/02/03 23:32
>>368
まあ、どんなプログラムもオートマトンの一種ですからね。


370:デフォルトの名無しさん
04/02/04 14:17
石の中にいる

371:デフォルトの名無しさん
04/02/04 16:47
まぁ字句解析と文法解析とでも答えておけばいいんだろうね。
それで相手がどう思おうと、人生には大した影響ないだろうし。

372:名無し@沢村
04/02/04 19:37
オートマン=自動人間

373:デフォルトの名無しさん
04/02/04 19:38
マトン=羊肉

374:デフォルトの名無しさん
04/02/04 20:03
トマト=トマト

375:デフォルトの名無しさん
04/02/04 21:30
オートマトンじゃなく人に進化して♪

376:デフォルトの名無しさん
04/02/04 22:02
はは、懐かしい。
初めて聴いたときには「こんな単語、一般人はわからねえだろ」と
突っ込んだ記憶がある

377:デフォルトの名無しさん
04/02/04 22:05
オー!(感嘆
トマト(トマト見つけた
ン!(まい(美味しい

378:デフォルトの名無しさん
04/02/04 22:12
自動羊肉

379:デフォルトの名無しさん
04/02/04 22:15
もう意味がワカラン

380:デフォルトの名無しさん
04/02/05 06:38
糞スレになってまいりました

381:デフォルトの名無しさん
04/02/05 07:06
368は土下座して謝れ

382:デフォルトの名無しさん
04/02/05 11:18
>>378
どっかの(嘘)用語解説かなんかで

勝手に鍋へ飛びこむ羊のこと

って書いてあったよねぇ。


383:名無し@沢村
04/02/05 19:32
オートマトン=自動羊肉

URLリンク(hp.vector.co.jp)

384:デフォルトの名無しさん
04/02/05 22:35
うぜえバカ
URLはるなバカ
おこるぞバカ

385:名無し@沢村
04/02/05 23:16
>>384

きんたまのぉ〜おっちゃんがぁ〜くそ屁をこいた〜糞こいたぁ〜

URLリンク(hp.vector.co.jp)

386:デフォルトの名無しさん
04/02/06 00:54
つまるところx86アセンブラとDOSコールだよな、これって

387:デフォルトの名無しさん
04/02/06 05:18
コンパイラはいいとして・・・
Windowsの実行ファイルのフォーマットって解りますか・・・?
バイナリ見る限りMZっという文字が入ってるのは解るのですが・・

388:デフォルトの名無しさん
04/02/06 06:37
そういう情報は自分も知りたいんだけど、資料がなかなか集まらない。
ヘッダの構成はわかったとしても、そこにどういう値を入れるのか
はっきりしないことが多いし。

つーか、PEフォーマットとかCOFF obj形式とかの解析スレ立てない?
外部アセンブラやリンカに頼らずに自分でexeファイルを作れる様に
なる目的で。アセンブラスレとは内容的にかち合わないし。
スレタイは
「.EXEや.OBJを手作りするスレ」
とか。


389:デフォルトの名無しさん
04/02/06 06:40
>>388
「機械語プログラミング」にオブジェクトファイル形式も
入るんじゃないの?

390:名無し@沢村
04/02/06 06:52
>>387
「MZ」という文字はDOSの受け皿のことだよ。
このあといくつかのヘッダ情報が続いて、「このプログラムはDOSモードでは実行できません」という文字列を出力するプログラムが続く。
そしてその少し下の見ると多分「PE」という文字があるだろ?「PE」でない場合もあるがね。
そこからやっとPEファイル(GUIの実行ファイル)のヘッダが始まるのだよ。
つまりういんの実行ファイルはPE形式なんだ。
PE形式については、2、3日以内に、おれのサイトで全仕様を公開するから、楽しみにねぇ〜♪

URLリンク(hp.vector.co.jp)



391:デフォルトの名無しさん
04/02/06 07:08
>>388
「機械語プロ〜」だと範囲広すぎです・・
ちなみにインストラクションコード手書するとかが目的なわけじゃなく、
(コードの手書きは資料も揃ってるしそんなに難解でもない、)

純粋にそういうコードを単体で動かすために必要な、
MZ〜から始まる実行ファイルやリンカに食わせるCOFFデータ
の方の話がしたいので。


392:デフォルトの名無しさん
04/02/06 07:11
>>391
ここでは駄目。

393:デフォルトの名無しさん
04/02/06 07:13
binutilsのソースを読めばいいじゃん。
ただの単発質問スレだろう、それじゃ。

394:デフォルトの名無しさん
04/02/06 07:20
>>393
GNUのクソコードを読む暇はさすがにないと思うぜ(w


395:デフォルトの名無しさん
04/02/06 07:24
>>394
殆どこの板を使った事のないド素人はすっこんでろ

396:デフォルトの名無しさん
04/02/06 07:26
exeの構成
----------------------
DOS 2.0 Section
----------------------
PE Header
----------------------
Section Headers
----------------------
Image Pages
----------------------


397:デフォルトの名無しさん
04/02/06 07:28
coffの構成
----------------------
MS COFF Header
----------------------
Section Headers
----------------------
Image Pages
----------------------

398:デフォルトの名無しさん
04/02/06 07:31
>>387 >>388
ここは見ての通り厨の溜まり場なので、
とりあえず↓に移動して聞いたほうがよいかと

機械語なら俺に質問しろ!
スレリンク(tech板)


399:デフォルトの名無しさん
04/02/06 07:49
Linkers & Loaders なんかでちょっと書いてあったかなー。
でもあれは広く浅くだから大して参考にならないか。
日本語で読めるものとしてはただ一つと言っていいソッチ方面への入門書だけど。

PEの資料へのリンク↓
URLリンク(wiki.osdev.info)

ってか、沢村がマトモな事言ってるのにスルーされてて笑ったw

>>390
がんがれー。
英文丸写しでなく日本語のを頼むぞ!

400:デフォルトの名無しさん
04/02/06 08:36
こっちのスレも使える。
Linker && Loader
スレリンク(tech板)

401:デフォルトの名無しさん
04/02/06 12:46
MSによるPEフォーマット仕様書(日本語)
URLリンク(www.interq.or.jp)

402:デフォルトの名無しさん
04/02/06 13:16
>>401
げ、こんなページがあったとは・・・

403:デフォルトの名無しさん
04/02/06 14:26
どっからこんなもんを。
>>401すげー。

以前はMSDN Onlineで公開されてたのか?

404:デフォルトの名無しさん
04/02/06 15:31
>>401
初めてみたぞ。 GJ!


405:デフォルトの名無しさん
04/02/06 17:26
ていうか普通にMSDNに日本語資料あるし

406:デフォルトの名無しさん
04/02/06 17:46
貧乏人にはMSDNなんて読めねえと思いますが

407:デフォルトの名無しさん
04/02/06 18:02
貧乏人向けMSDN
URLリンク(www.microsoft.com)


408:デフォルトの名無しさん
04/02/06 18:04
おまいらどうでもいいけどスレ違いですよ

409:デフォルトの名無しさん
04/02/06 18:28
今までの糞レスに比べたらだいぶマシだろうが(w

410:デフォルトの名無しさん
04/02/06 18:31
そして誰もいなくなった・・・

411:デフォルトの名無しさん
04/02/06 18:43
>>407
そこは知ってますが、
どうやっても>>401の様な情報には辿りつかなかったです・・

412:デフォルトの名無しさん
04/02/06 19:16
日本語MSDN Onlineにはその情報無いね

413:デフォルトの名無しさん
04/02/06 19:31
イエロー人種にはあえて多くを教えないとか
差別されてるんじゃないか?(w

414:デフォルトの名無しさん
04/02/06 19:32
いや、MSDN買えってことだろ

415:デフォルトの名無しさん
04/02/06 19:34
人種制限か。
アメ公ならやりそうな事だな。

416:デフォルトの名無しさん
04/02/06 21:48
単にMSKKが無能揃いなだけだろ。>>413-415を否定する根拠もないがな。

417:デフォルトの名無しさん
04/02/06 22:53
字句解析
文字をハッシュで調べる
・変数、関数名、キーワードを判別
ハッシュのない場合
・数値
・変数名
・関数名
をSwitch分で単語に区切る


構文解析
区切った単語を木で別ける
キーワード文(IF文等が正しいか評価する)

意味解析
木で別けた文を
計算式、評価式が正しいか・・・

目的語の変換
・Data
・PRORAM
 ・RPOC
  引数
   StackPointを設定する
  戻り値(相対的
  返り値(相対的)
・相対的なラベルを設定する

リンカ
・関数
・グローバル変数
・相対的なラベルを絶対値にする

418:デフォルトの名無しさん
04/02/07 02:52
独り言はスルーか。

419:デフォルトの名無しさん
04/02/07 02:59
GCC frontend弄ってる人いない?

420:名無し@沢村
04/02/07 21:13
おい、おまーら聞け、おれのマシン語のサイトにPEフォーマットの仕様をUPしたからな。
恐ろしすぎるぞ!!おまーら↓

URLリンク(hp.vector.co.jp)


421:デフォルトの名無しさん
04/02/08 11:50
むしろlibelfの使い方が知りたい。

422:デフォルトの名無しさん
04/02/09 00:52
質問させてください。
LLとLRの解析処理の違いは何となく理解できたのですが、
記述能力という面でどういった違いがあるのでしょうか?
javaとかって(LA)LRでないと記述できないみたいな事も
聞いたことがあるけど、これってLLでは記述できないって事で
しょうか。


423:デフォルトの名無しさん
04/02/09 01:38
>>422
LL(1)で書けるかどうかはわかりませんが、
ANTLRというパーサー生成系で書かれたJavaの文法がありますから
LL(k)で記述可能なのは確かです。




424:デフォルトの名無しさん
04/02/09 07:50
>>420
無駄ではなーい。
乙。
各ページにTOPへのリンク付けて、ロボット検索でどっかのページへ直接着いた時にも
他のページへ辿れるようにしとけー。

425:デフォルトの名無しさん
04/02/09 13:27
>>423
ANT"LR"ってLR系かと思い込んでました。
LL(k)だったんですね。ありがとうございました。



426:デフォルトの名無しさん
04/02/11 22:07
一般的なコンパイラやスクリプトでは、
yacc&lexのソースコードは何行ぐらいになりますか?


427:デフォルトの名無しさん
04/02/11 22:18
千差万別。

428:デフォルトの名無しさん
04/02/12 00:05
いきなり質問すみません。
以下のコードを最適化(局所的に?)するとどーなるんですか?
低レベルかもしれませんが私にはさっぱりです。

for(i = 0; i < 100; i++)
  a[i] = b[i] * c[k]−b[i];


429:デフォルトの名無しさん
04/02/12 00:07
とりあえずstrength-reduceだな

430:デフォルトの名無しさん
04/02/12 00:41
>>428
c[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におきかえるとか。


431:デフォルトの名無しさん
04/02/12 01:03
>>426
手元にあるANSI Cのyaccによる定義。ソースが766行(宣言部と文法定義のみ)。
終端記号、還元規則の数などは:

83 terminal symbols
80 nonterminal symbols
224 productions
364 states

フリーな言語処理系はたくさんあるから、入手して眺めてみては?


432:デフォルトの名無しさん
04/02/12 01:06
>>430
c[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;

433:428
04/02/12 01:17
>>430
ありがとうございます。
たぶん気合はいってないコンパイラなんでc[k]がループ不変だから外に出すってことは

t=c[k];
for(i = 0; i < 100; i++){
  a[i] = b[i] * t−b[i];
}

これでOKですか?




434:デフォルトの名無しさん
04/02/12 01:32
↑…よく読め…あと式に全角使わない (´・ω・`)

t=c[k]; → t=c[k] - 1;
a[i] = b[i] * t−b[i]; → a[i] = b[i] * t;



435:デフォルトの名無しさん
04/02/12 01:40
COFFの仕様の日本語のドキュメントってどこにある?

436:430
04/02/12 02:32
>>432
おお、そうですね。aliase問題をすっかり忘れていました。


437:デフォルトの名無しさん
04/02/12 02:40
>>435
タイミング的にD言語スレの人だよな?
どっちでもスレ違いになっちゃうけど、
とりあえず向こうにレスしておいたYO。

438:Amazon.co.jp よりお知らせ
04/02/12 02:58
誠に申し訳ございませんが、大変残念なご報告があります。お客様のご注文内容のうち、
以下の商品については入手できないことが判明いたしました。

Alfred V. Aho (著), その他 "21st Century Compilers"

お客様にこの商品をお届けできる見込みでしたが、現時点ではどの仕入先
からも入手できないことが判明いたしました。お客様のご期待に背くお知らせ
となりますと共に、お客様にご迷惑をおかけしたことをお詫びいたします。

ガ━(゚Д゚;)━ソ!


439:デフォルトの名無しさん
04/02/12 08:15
ワラタ

440:デフォルトの名無しさん
04/02/12 13:36
>>438
注文しなおせw
今はちゃんと「予約する」になってるから。

441:デフォルトの名無しさん
04/02/12 13:39
駄目元で黒猫にも頼んでみたら
絶版モノでも結構しつこく在庫捜してくれたよ>猫


442:デフォルトの名無しさん
04/02/12 15:12
>>441
いや、絶版じゃなくて「まだ出版されてない」本なんです。

>>440
2004年8月1日に伸びてますね。気長に待つしかないか。


443:デフォルトの名無しさん
04/02/12 17:03
parrotの追っかけをやってる人はいませんか?

444:デフォルトの名無しさん
04/02/12 17:08
2005年1月に延びましたよ…。残念ながら。
URLリンク(www.aw-bc.com)

ISBN: 0-321-13143-6
Publisher: Addison-Wesley
Copyright: 2006

となっているのは2006年まで延期するという布石かな

445:デフォルトの名無しさん
04/02/12 17:24
だーーーなんじゃそら。
ホントに出版されるんだろうなあ・・・

446:デフォルトの名無しさん
04/02/12 17:43
クラスってどうやって実装すりゃいいの?関数は
わかるんだけどクラスがさっぱりわからん

447:デフォルトの名無しさん
04/02/12 18:56
ああ?

448:デフォルトの名無しさん
04/02/12 20:35
>>444
ガ━━ΣΣ(゚Д゚;)━━ン

449:デフォルトの名無しさん
04/02/12 23:29
yacc&lexは知らないけど、
java.io.StreamTokenizerは便利だと思った。
URLリンク(java.sun.com)

450:デフォルトの名無しさん
04/02/12 23:42
Cライブラリにもこういったtokenizerはあるよな
自作する人もそれなりに居るだろう
で、それに満足できなくなったらlexに進むってわけだ


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4966日前に更新/226 KB
担当:undef