[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/23 13:47 / Filesize : 226 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [03/11/29 15:59]
yaccやlexの使い方やら言語仕様やらの話題。

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)

関連リンクは多分 >>2-8 あたり

237 名前:235 [04/01/11 18:42]
>>236
調べたけど見つからなかった。
よろしく、

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


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

お礼にパトレイバーのプロトタイプをのせとく
www.enryu.jp/


240 名前:デフォルトの名無しさん mailto:sage [04/01/11 21:43]
夢のプログラミング言語@いちごびびえす
www.ichigobbs.net/cgi/readres.cgi?bo=proglam&vi=0071&rm=50

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

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

頭の程度が知れたな

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

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


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


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



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

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

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

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

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

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

ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html

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

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

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


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

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

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

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

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



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

257 名前:デフォルトの名無しさん mailto:sage [04/01/12 06:24]
cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/index.html
www.cminusminus.org/

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

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


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

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

苦笑・・・

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

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


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

SableCC
www.sablecc.org/home/

CUP & JLEX or CUP & JFlex
CUP www.cs.princeton.edu/~appel/modern/java/CUP/why.html
JLEX www.cs.princeton.edu/~appel/modern/java/JLex/
JFlex www.jflex.de/

ANTLR 
www.antlr.org/

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

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



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

www.sablecc.org/


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

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



266 名前:デフォルトの名無しさん mailto:sage [04/01/12 11:01]
>>262
¬<><∪∪ ttp://ne.cs.uec.ac.jp/~koto/notavacc/
LALR(1)
も追加しておいて。

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

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

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

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

270 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/01/13 04:18]
ttp://www.fujitv.co.jp/

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


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

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

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




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

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

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


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

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


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

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

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

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

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

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

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


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



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


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

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


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

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

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

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

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

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

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



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

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

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

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

300 名前:デフォルトの名無しさん mailto:sage [04/01/18 23:16]
図書館から
www.amazon.co.jp/exec/obidos/ASIN/4785620501/qid=1074435361/sr=1-7/ref=sr_1_10_7/249-4431792-9641118
借りてきた

意味わkらnしn

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

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

303 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [04/01/19 06:17]
lispってリストっていうより二分木じゃないか?

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

LittleSmalltalk. Smalltalk のサブセット。
ftp://ftp.cs.orst.edu/pub/budd/little/index.html

minischeme. こっちは Scheme.
tinyscheme.sourceforge.net/minischeme.tar.gz

SECDR-Scheme. これも Scheme
ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu



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


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


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


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

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


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


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

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

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

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



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

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

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

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


318 名前:316 mailto:sage [04/01/20 02:13]
>>317
( ・∀・)つ〃∩ ヘェ〜ヘェ〜ヘェ〜ヘェ〜ヘェ

thx

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

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


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

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

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


323 名前:321 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 mailto:sage [04/01/20 03:53]
すまん、>>325の修正。

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

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


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

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

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

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


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

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

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

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

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


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


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

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


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

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

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

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

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

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



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

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<226KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef