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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 20:49:02 ]
プログラミング言語処理系の開発に興味のある人達のスレッドです。

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

過去スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/
8 pc8.2ch.net/test/read.cgi/tech/1131273918/
9 pc8.2ch.net/test/read.cgi/tech/1135082582/
10 pc8.2ch.net/test/read.cgi/tech/1146844753/
11 pc11.2ch.net/test/read.cgi/tech/1160879890/
12 pc11.2ch.net/test/read.cgi/tech/1188688416/
関連リンクは多分 >>2-10 あたり

553 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 08:38:22 ]
Ocamlなぁ。
こんどはOcamlでスクリプティングやってみるかなぁ。
静的型付言語の割りにコンパイラが賢いので
人間はあまり型を気にする必要がないというところがよさげだな。

554 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 10:28:43 ]
>>548
DCGはいいものだったけど、
元になっているPrologが独自すぎて流行らなかったな。
一時はちょっとややこしい構文解析はDCGの独壇場だったのに。

555 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:25:28 ]
>>554

スレ違いになるけど、Prologがブームだった頃「PrologはAI言語である」みたいな解釈の
説明が多かったため、AIブームの終焉と一緒にPrologへの関心も冷めてしまったように
感じてる。Prologなんて記号処理言語の一つで、「道具」にしかすぎないはずなのに。
DCGが自然言語研究の中から生まれたのは事実だけど、パーザ記述向けの「道具」として、
今でも有効に活用できるものだと思う。固定観念さえ捨てることができれば....。

とりあえず、Prologによるコンパイラ開発に興味を持った人向けに書籍を紹介する。
・Prologの技芸, L.Sterling&E.Sharpiro著, 共立出版
Prolog中級者向けの内容で、全体で557ページ、DCGには12ページ、コンパイラ(構文解析/
コード生成/アセンブラ)に関しては24ページが割り当てられている。

556 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 13:50:43 ]
昔、Prologで簡単なBASICインタプリタをちょこちょこっと作る話が
載ってるウェブページあったなぁ。

557 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:58:11 ]
プログラマならなんか成果物だして世の中の役に立て。


558 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:58:17 ]
>>557
スークリですね解ります。

559 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 09:23:15 ]
マ板でやれ

560 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 09:24:40 ]
OCaml使いの間では"O"の部分は使わないのが常識らしいな。

561 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 11:08:27 ]
OCamlさん 何してはるんですか



562 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 19:10:26 ]
DSLを設計するための良書ってないですかね?

563 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:32:29 ]
>>562

良書かどうかは分からないけど、とりあえず手持ちの書籍を紹介。
・lex & yacc, John R,Levine他共著, アスキー出版局(O'Reilly本)
この本ではCUI向けのメニュー生成言語、言い換えるとCUI向けメニュー生成処理に特化した
DSLの開発手法が紹介されている。 本全体が429ページで、そのうち33ページがDSL。

あるいは設計しようとしているDSLの適用分野(ドメイン)が明確になっていて、
それをここで提示できるのなら、その分野における類似したDSLを紹介したり、
その類似DSLに関する書籍を紹介したりすることができるかもしれない。

もし適用分野が明確ではなく、一般的なDSL設計技術を勉強したいという話であれば、
残念だけど「一般コンピュータ言語設計論」みたいな題名の抽象的で難解な書籍を
探すしかないと思う。自分は紹介できないや。

ただし、発想を変える事で参考になるやり方もある。
最近ではXMLで様々なデータやルールといった情報を表現することが
普通に行われていると思うけど、そのXMLで表現するタグ構成というのは、
目的とする分野に特化したDSLの一種であると考えることもできる。
だから「XML文書設計法」みたいな題名の書籍を読むことが、参考になるかもしれない。

# ほとんど参考にできるレスじゃなくてゴメソ
# あるいは、推薦図書/必読書のためのスレで質問してもいいのでは?

564 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 20:42:01 ]
>>562
いずれ書籍になる予定
martinfowler.com/dslwip/

565 名前:デフォルトの名無しさん [2009/10/12(月) 20:50:00 ]
>>564
martinfowler.com/dslwip/
github.com/nealford/presentations
homepages.cwi.nl/~arie/papers/dslbib/

どうもっすこの辺ちょっと読んできます。


566 名前:563 mailto:sage [2009/10/13(火) 10:06:24 ]
うーみゅ、>>562が期待していたのはMartin Fowler氏の定義した
DSLという用語だったのね。このスレでの質問だったから、
てっきりパーザでミニ言語を作りたいのだと思い込んでしまったぜ。
漏れは釣られたのか?....orz


567 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 10:18:50 ]
>>566
何を言い出すのだお前は?

568 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 10:19:51 ]
>>563
baka

569 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 10:44:07 ]
ja.wikipedia.org/wiki/DSL

570 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 17:52:37 ]
>>566
internal DSLとexternal DSLと呼び分けるのが一般的かと

571 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 19:30:41 ]
>>563 はきちんと説明して偉いと思うよ。
マーチン・ファウラーがいうDSLを実装するにも、
lex&yaccは必要になることがある。



572 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 19:39:16 ]
本人乙

573 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 21:16:50 ]
内部DSLだとlex yaccの出番なくね?

574 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:12:14 ]
DSLでも表記はS式 or 逆ポーランドで良いと思うんだけどな。
俺言語でS式&逆ポーランド&三項演算子というのをやったことあるけど、なかなか良い感じだった。


575 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:26:02 ]
x^2 + 3 * x + 4



(x 2 ^ 3 x * + 4 +)

あなたはどっちが好きですか



576 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:09:22 ]
DSLぐらいだったら二項演算子無しでも良いんじゃね?

俺言語だとこんな感じかね
x 2 ..pow 3 x ..multi ..plus 4 ..plus


577 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 00:15:34 ]
想定するDSLのプログラマによるよね。

自分用・ギーク向け・趣味用途ならS式でも逆ポーランドでもいいけど
スーツ/エンドユーザー向け・パッケージソフトだったりすると流石に無謀だろ。

578 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 04:29:11 ]
>>575
(x + 3) * x + 4

579 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 04:30:18 ]
x 3 + x * 4 +

580 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:27:14 ]
>>576
引数の数を演算子の前のドットの数で表してるんですね。
それって >>576 氏の発明ですか?それともそういった処理系がありますか?

581 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:52:05 ]
fortran



582 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:18:11 ]
後ろに置いたピリオドで、スタックに積んだ返した数を表すのはどうだろう
前後逆か?
.*で不定長引数とか

583 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:19:40 ]
何のためのスタックかわからん

584 名前:576 mailto:sage [2009/10/16(金) 01:17:54 ]
>580
俺の発案。forth系なんて流行ってないから誰もこんなこと考えないって。
コロンも活用すればそこそこ大きな引数でも使えるから実用的だよ。
.one ..two .:three ..:four

こういうのもWordレベルで一意になるから解析が楽チン。
4 3 2 1 ..sum // 3
4 3 2 1 .:sum // 6
4 3 2 1 ..:sum //10


585 名前:576 mailto:sage [2009/10/16(金) 01:27:49 ]
>582
それは考えた。Wordレベルで一意になるから良さげだった。
…………普通はデフォルトの戻り値で十分なので後ろピリオドは要らないけど。
他にもこんなことを実装したんだけど、プロセス実行をどうするか考えているので実装は進んでない。

..func //デフォルトの戻り値
..func: //戻り値2つ
..func:. //戻り値3つ
..func[] //戻り値無し(廃棄)
..func[0] //配列型戻り値(全体)
..func[1] //配列型戻り値の1番目を返す
..func[-1] //引数を返す

586 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 02:04:29 ]
>>584
あんまり突っ込むのも無粋だが、
.2sum とか .8sum とかの方が
見やすくて短くて解析も楽な気がしねぇ?


587 名前:576 mailto:sage [2009/10/16(金) 02:23:54 ]
その辺りは好みですな。
個人的にはwordの中に数字が入るのが嫌なんでね…………

588 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 08:36:34 ]
言語は仕様考えて、加減乗除ライブラリと、1文字出力ルーチン作って
階乗とかfib関数作るところまでで、たいてい飽きるの俺法則

589 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 14:07:02 ]
>>584
そうでしたか。 >>576 氏は天才だと思います。
FORTHみたいな言語を自作するときは参考にさせてもらいます。

590 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 18:34:44 ]
プレフィックスの数字で長さとかを決めるのって、
昔のFORTRANの文字列(5HHELLO とか)みたいでなんかヤだなぁ。

Verilogのビット幅指定がそうなんだけど。

591 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 12:19:17 ]
俺、中学の頃、逆ポーランド記法のこと何て、
聞いたことも、無かったけど、自分で、思いついてた、、、



592 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:23:53 ]
逆ポーランド記法は日本語に似ているから、日本人にとってはある意味自然なんだよな。

593 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 13:55:45 ]
惜しいかな
変なことを考える中学生に今少し学問があれば

594 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 14:01:40 ]
>>591
「お前が思いつくようなことは、すでに誰かが思いついてる」

ベッコアメの社長が親父に言われたんだったかな?
大昔に見た記事だから忘れたけど

595 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 15:25:19 ]
それなりの環境にいれば思いつくことは思いつく。
しかし思いついたことを実現まで持っていく奴はなかなかいなくて、大抵
思いついた数年後に世の中のどこかからそれを実現させた会社がでてくる。

596 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 00:19:13 ]
つ LISP

597 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:29:40 ]
>>592
2から3を引く
3を2から引く

どちらも日本語として自然ですが、RPNとしてはどちらかが間違いですよね?
一見そう見えるというだけだと思います。

598 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:37:48 ]
>>597
2から3を引く --> -1
3を2から引く --> 1

どちらもRPNとして正しいと思うが?

599 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 11:38:57 ]
日本人は中学で語順で格を示す英語学ぶのだから、
それは機能語である助詞の機能によって、
語順が変えられるのだとすぐ気づくだろう。

600 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:07:45 ]
>>598
おい

601 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 12:11:40 ]
>>597
>3を2から引く

これは日本語として自然か?
漏れにはえらく不自然に見えるが....。

逆にRPN(Forth系言語)なら "から" を減算元属性付加、"を" を減算先属性付加という
ワードであると考え、ワード "引く" ではスタック上の属性値を参照することで、
演算対象値を決定できる。これなら3と2が逆でもオケー。以下は例。

3  :スタックに3をPUSH
を  :スタックの先頭値に演算先属性を付加
2  :スタックに2をPUSH
から :スタックの先頭値に演算元属性を付加
引く :スタックから値を2個POPし、減算子(演算元値 - 演算先値)を評価して、結果をPUSH



602 名前:598 mailto:sage [2009/10/18(日) 12:13:11 ]
>>598のカキコは取消

603 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 16:24:14 ]
そういう風に、本来のRPNにないものを導入しないとダメじゃん、って話。

604 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 21:56:46 ]
シューティングで弾幕とか敵の動きをスクリプト化したくて
Java上で動くスクリプトエンジンを作ろうと思ったのですが、
・・何から始めたらいいんでしょうか。
スクリプトに使う言語はLuaにしようと思っています。

605 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:23:29 ]
Java上なのにLuaなのかよ。

606 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:59:00 ]
Jua

607 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:01:28 ]
>597
おいおいおい、日本語が逆ポーランドの構造しか持っていないなんて言ってないぜ。
日本語の特徴の一つ(述語を中心とした後置型)が逆ポーランドに似ているということだよ。

〜して、〜して、〜して、……。といった感じでだらだら続けられるのも日本語の特徴だよな。
そういや、各国の言葉の特徴をイラストにしたのがあったな。日本は渦巻だっけ?


608 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 10:57:43 ]
> といった感じでだらだら続けられるのも日本語の特徴だよな。

逆ポーランド記法から夢が膨らむネット言語学者乙

英語でもできるし、日本語よりもっと簡単なぐらいだ。
新聞などではさすがに極端なのはないが
小説でも眺めてみるとよい。
見るからに馬鹿そうな著者を選ぶのがポイント。

609 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:05:22 ]
逆ポーランド記法を使えば、自然言語処理の能力がアップするに違いない!

610 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:57:18 ]
つ「日本語の語順と逆ポーランド記法」「和文の語順と逆ポーランド記法」どちらも水谷

611 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 02:04:38 ]
どんなの? >608
日本語よりも柔軟に組めるの?




612 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:47:52 ]
緩いだけだろ
日本語で曖昧さがなく読みやすい長い文を書くのには
読点の使い方や語順を工夫したりとか技術がいる

613 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 15:33:34 ]
つまり、時代はラテン語か

614 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:47:50 ]
>>613
西洋人にとってのラテン語にあたるものが日本で学ぶ漢文なのよ(割とマジで)


615 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:47:56 ]
古代ギリシャ語でおk


616 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:22:44 ]
>>614
いや漢文じゃなくて古文の方だろjk

617 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:32:57 ]
古文に相当する授業ではたとえばイギリス人ならシェークスピアとか読む。


618 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:46:08 ]
字句解析を手書きするのって難しい・・

619 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:19:24 ]
>>616
漢文です。ていうか常識ないなおまい

620 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:52:17 ]
古文だろ。

621 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:10:32 ]
南部ヨーロッパだと昔使っていた言語だけど、
北部ヨーロッパだと別の民族の言葉だな。



622 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 20:00:31 ]
「から引く」と「を引く」の二つの演算子つくればいいだけじゃん。とカメレス。
どっちもドンラーポとしては正常だよね。

623 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 12:31:29 ]
そこは語尾屈折で

624 名前:デフォルトの名無しさん [2009/11/06(金) 11:41:09 ]
Rubyで俺DSLを作りたいのですが、パーサーの作り方を解説したURLはないでしょうか


625 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 12:25:59 ]
ウェブページはあるかもしれんが、URLだけで解説するのは無理だな。

冗談はともかくとして、とりあえず Racc 使い方、で検索するとか。
先頭に出てくるページは、今なんか落ちてるようだが。

ていうか言語内DSLじゃダメなの?

626 名前:624 [2009/11/06(金) 13:27:03 ]
検索しましたがraccで良いような気がします(合ってますか?)
”Rubyを256倍使うための本 無道編”というraccの解説本がありましたが絶版でした。
どこかに良い資料はないでしょうか。
最終的には俺言語、俺コンパイラ、俺VMが作りたいです。



627 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 13:44:05 ]
>>626
ttp://www.bk1.jp/product/01992393

そういやANTLRの人がこんな本出すね
Language Implementation Patterns: Create Your Own Domain-Specific
and General Programming Languages
ttp://pragprog.com/titles/tpdsl/language-implementation-patterns

628 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 14:10:12 ]
>>626
ネットで見つかる資料でとりあえずいいと思うんだけど。

629 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 14:36:41 ]
俺程度の脳みそでは下記のサイトが役に立った
早く2部を作ってくれ。

KENJIの独り言 ttp://www.ne.jp/asahi/kenji/pda/

630 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 15:39:48 ]
それ、ざっと見たけど、まともに構文解析してない気がする。

...ゲームスクリプトエンジンとして、インタプリタがセーブ・ロードをサポートする所の考察は面白いが。

アセンブラのような文法(ベタッとした、入れ子になった構造がない言語)なら、
それでも構わないけど、どうやら if や式に現れる入れ子構造をどうやって処理したら
いいか、わからなくって手詰まりになっちゃったんじゃないかな?

> もし、複雑な物を使いたい場合、
> スクリプトコンパイラを使うに乗っている拙作の acc.exe を使うか、lexとyaccで作った方が良いと思います。

と本人が言ってるように、yaccも使わないし、再帰降下パーザを手で書くわけでもなく、
シンプルに済ませたいなら、if や while なんかの入れ子なんぞもっての他、
式も (1 + 2) * (3 + 4) なんて複雑な式はきっぱりあきらめる、と。
それくらい割りきらないとダメっつーか。

まぁ昔のFORTRANや、BASICインタプリタは、なんだかんだのテクニックを使って、
そういうのを実装してたわけなんだけどさ。

631 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 16:43:44 ]
現実に使っていると思われるスクリプトコードの一例がブログに載っているが、そこの一部で説明されているものと大差ないんだな。

変数名を(固定プリフィクス+数字)の形でしか表せないように見える。
管理するの大変そうだ。



632 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 17:29:15 ]
C言語と同等の機能の#define、
MASMライクな#macroの2種類があり、もちろん様々な条件コンパイルも出来、
最終的にプリプロセッサは、式(逆ポーランド)と
DD,DW,DB,stringにスクリプトを解析してコンパイラに渡す。
よって、プリプロセッサの大きさに比べてコンパイラの大きさは小さい。
そして強力な文字置換により、文字セットもプリプロセッサ時、コンパイル時、実行時の3段階で解決される。

本人曰く、
21年プログラマやってて、13年同じシステムを使ってるって
と書かれてるから、さすがにそんなチープな物じゃないんじゃない?
しかし、カナ入力なんてじじいかよw



633 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 17:33:36 ]
ブログの回答で初心者にドラゴンブックと中田の本を紹介してるw

634 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 18:10:46 ]
誰か特攻しやがったw

635 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 18:25:09 ]
またおまえらかw

636 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 18:55:05 ]
> 変数名を(固定プリフィクス+数字)の形でしか表せないように見える。
> 管理するの大変そうだ。

アルファベット2文字とかそういう制限ならわかるけど、
わざわざそんな制限つけるとか考え辛いし、そういう名前で変数を管理する
世界にいる、ないしそういう環境で学んだ人ってことなんじゃないかな?

ドラゴンブックと中田先生の本(どれ? 厚い奴薄い奴ペーパーバックの奴と
いろいろあるけど)って、結構わかってるじゃないかw
一昔前なら市販品だったようなレベルのCコンパイラだって書けるぞ。

つまり >>629 のコンテンツは覚醒前に書いたっつーことかね。
ぜひ今の知識とノウハウを注ぎ込んで書き直していただきたい。

masmのマクロって俺よく知らないんだよな。構造化アセンブラみたいな記述が
できるようになるマクロセットを作れたりとか結構すごいらしいんだけど。

637 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:45:38 ]
変数名は英数文字で表現できます。マルチバイトでは表現できません。
メッセージ命令の中でもレジスタ間接などを使って計算結果やストリング配列の表示も出来ます
メッセージ中に直接式を入れることも出来ます。

if 式 elseif 式 else end / while 式 end / do while 式 / for 式;式;式 end などが記述出来ます
これらは全てプリプロセス時に、#amacroでifn_goto 式,label / if_goto 式,label と goto labelに分解されます。
式は代入式と評価式の区別は付けません。それとポインター式があります。
式はC言語と同等の物だと思ってください。演算子の優先順位も合わせてます。

記述性はVB並と思ってください。それに強力なマクロと強力な置換が追加されていて、
それらを使って、windows apiを呼び出すようになっています。

逆に言うと、強力なマクロと強力な置換を使い、システムをラッパーしなければ
最低限のゲームシステムの支援(文字表示やCG表示)しかなく
windows apiやcopyrect命令などの呼び出しが必用になり、
ゲームシステムとしては使い物になりません。

式関連は最適化もしています。

コンパイラ自体は以上の実装なので、
ウチで作った携帯電話用のゲームシステム等ともマクロを変えて併用しています。


638 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:48:09 ]
以下がendマクロの実装例です

#amacro end( d0 )(local0,local1,localn,localt,localcase)
;
; end ( while,do,for,switch,if )
;
#getnum localt 2
#getnum localn 3
#subnumsp 3

#define local1 "f_{localn}"
#unstr local1


#if (localt==10) ; while
#define local0 "b_{localn}"
#unstr local0

goto local0
local1:


#elseif (localt==11) ; do
#define local0 "b_{localn}"
#unstr local0

if_goto local0,d0
local1:

639 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:49:13 ]
#elseif (localt==12) ; for
#define local0 "b_{localn}"
#unstr local0

goto local0
local1:


#elseif (localt==13) ; switch
#popnum localcase
#substrsp 1

#define local0 "case_{localn}_{localcase}"
#unstr local0

local0:
local1:




640 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:50:27 ]
#elseif (localt==14) ; if
#popnum localcase

#define local0 "if_{localn}_{localcase}"
#unstr local0

local0:
local1:

#else
#error end文の対応が異常です
#endif

#endm

641 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 19:55:12 ]
笑ってすみませんでした。
ttp://www.ne.jp/asahi/kenji/pda/
の2部以上の物を作っているみたい。

マクロで言語を作るのって、意味あるんかい
と思ったら、携帯電話へも流用してるのね。

面白いアプローチだ。



642 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:02:19 ]
LispやSchemeはマクロのお化け
複雑な構文をマクロに委ねるってアプローチはありだと思うけど
括弧はイヤだ

643 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:05:24 ]
>>636
> ドラゴンブックと中田先生の本(どれ? 厚い奴薄い奴ペーパーバックの奴と
> いろいろあるけど)って、結構わかってるじゃないかw
> 一昔前なら市販品だったようなレベルのCコンパイラだって書けるぞ。

かなり古くさいスタイルの仕様、実装になってしまっていることと、
概論で終わっているような本を参考文献に挙げることは、対応していると思う。



644 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:06:36 ]
何をやってるかさっぱりわからない。
みんな理解できるのか?
だったとしたら、みんなが普通で俺がバカと言うことになるw

645 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:12:30 ]
>>642
ほう、そうなのか。
しかしこの仕様なら、リンカさえ作れば色々なCPUの実行型を作れて面白そうだな。

>>643
関数型言語みたいだね。現代のoopには対応できないのかね。
まーエロゲのスクリプトみたいだからこれでもオーバースペックだよな。

646 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:16:26 ]
end命令1個作るのにわざわざこんなに記述するのは嫌だな。
中間スクリプターは地獄だな。
多分本人が作ってるんだろうけど。

647 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:31:07 ]
逆にマクロさえ作ればいくらでも言語を拡張出来る
確かにlisp的だ

648 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:46:57 ]
lispなめんな

649 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:56:54 ]
>>643
の言うとおりoopではない。
言語仕様としては古くさいのでは?
しかし、ゲームのシナリオを入力するだけの物にoopは必要ない。
携帯電話のゲームにも流用しているみたいだから
この人の場合は>>643の言うことは見当外れで>>647の言うことが正しい。

650 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 20:58:15 ]
>>648
気に障ったか、ならば言い換えよう
マク…モゴモゴ テンプレートさえ作ればいくらでもメタ言語を拡張出来る
確かにC++的だ

…?

651 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:07:58 ]
俺には作れないな。

17才からエロゲプログラマーか。
俺がやったゲーム、何本か作ってるw



652 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:10:04 ]
コンパイラの理論だけじゃ関数型言語はわからんよ

653 名前:デフォルトの名無しさん mailto:sage [2009/11/06(金) 21:38:13 ]
>>649
>>643にはoopじゃないから古くさいとは書いてないが?






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

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

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