スクリプト言語の作成
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNGなにか参考になるサイトがあったら教えてください。
0002名無しさん@お腹いっぱい。
NGNGあなたが、あちこち探したのに見つからないというのなら
スクリプト言語の自作はあきらめてください
そうでないと、あなたの検索能力では、なにかあるたびに
他人にきいてまわることになり、迷惑です。
0003名無しさん@お腹いっぱい。
NGNGまた、その利点を教えてください。
これ常々疑問なんです。何故こんなものを作るのでしょうか?
バグが増えませんか?
0004名無しさん@お腹いっぱい。
NGNG聞かなきゃ作れないようなレベルのものはいらない
00051
NGNGLuaとか既存のライブラリを使ってもいいんですが、そういうのってゲーム
に使うにはオーバースペックな気がします。
だったら、勉強もかねて自分で作ってみようかな、と思ったわけです。
0006224
NGNG0007名無しさん@お腹いっぱい。
NGNG0008名無しさん@お腹いっぱい。
NGNGでは、いろいろとここで人気のやねうらおさんの所でも
いってみてください。
http://www.sun-inet.or.jp/~yaneurao/
しかし、6の人の何気ない一言もマトを得ているので、
一から作り出す前によく考えたほうがいいです。
大抵は徒労に終わります。
0009名無しさん@お腹いっぱい。
NGNG1から作ってみることで学べることもあろうよ。
もうすでにあるから作らない、はプロさんだけで十分だわ。
アマが作りたいと思ったもの作ることに対して
逐一足引っ張ってどうするの。
自作結構。いいじゃないか。
もっとのびのびやろうや。
そうは思わんかね( ̄ー ̄)y-o00 マターリ
0010名無しさん@お腹いっぱい。
NGNGゲームに特化したスクリプトってのがどんなものか
詳しくは知らんのですが、参考までに。
“flex”や“bison”のキーワードで検索かければ
勉強に役立つ情報はサクサク見つかることでしょう。
>>7
宿題やって寝ろ
00111
NGNGこんなやつ(笑)
--------------------------
START:
goto(TEST1)
end
TEST1:
print("逝ってよし")
end
---------------------------
ただ四則演算なんかはどう実装するのかな、と気になったもんで。
どっちみちゲームで使うだけなのでそれほどたいそうな機能は必要無いです。
0012名無しのエリー
NGNG君の作るゲームのレベルが容易に想像つくよ(w
0013名無しさん@お腹いっぱい。
NGNGワラタ
0014名無しさん@お腹いっぱい。
NGNG言語処理のアルゴリズムは深く研究されてる分野だから、
本やネットで公開されてる情報で勉強したほうがいいよ。
四則演算の処理で悩んで、こんなところで質問してるより
一週間くらいかけて、コンパイラ関係の本でも読んでください。
そっちのほうが近道です。
0015名無しさん@お腹いっぱい。
NGNGhttp://www.tokumaru.org/ -> インタプリタのソースなど
http://duff.kuicr.kyoto-u.ac.jp/~jargon/ -> bison@`flexのマニュアル日本語訳など
あとこれは入手が難しいけど一応。
http://www.context.co.jp/~cond/books/#c_compiler_with_yacc -> おすすめ!
0016名無しさん@お腹いっぱい。
NGNGシェルなどでもいいけど。
0017名無しさん@お腹いっぱい。
NGNGちょっとずつでも結構難しいと思うよ。言語処理って。
基本でこれだもんなぁ。
1の人はこんな難しいのやるより他にたくさん覚えなければ
ならないこと(基礎)が有ると思う。
0018名無しさん@お腹いっぱい。
NGNG佐伯港かが炊こう文化遺跡でやれ。
0019名無しさん@お腹いっぱい。
NGNG本格的なコンパイラ作ろうってわけじゃないんだから、そんなに大変じゃないだろ。
オレは昔、コンパイラの本に載ってたサンプルプログラムを
改造してゲーム用のスクリプト言語を作ったけど、1〜2週間くらいでできたぞ。
00201
NGNGそれはどうも(^^;
>>14
やっぱ本読んだほうがいいですかねぇ。
とりあえず図書館に逝ってきます。
>>15
有用なページをありがとうございます。ローカルに落としてじっくり読みます。
>>19
頑張ります。
0021名無しさん@お腹いっぱい。
NGNG学校はサボらないほうがいい
指摘にすらなってない
0022名無しさん@お腹いっぱい。
NGNG言語処理系はソフトウェア科学の基礎だよ。
この場合の基礎はBasicじゃなくFundamentalって意味だ。
でも、地味だからパソコン少年を引き付けるネタとしては弱いんだよね。
0023名無しさん@お腹いっぱい。
NGNGhttp://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/old.html
再帰下降構文解析の手法 -> たいへんシンプルな説明でよいと思う
http://member.nifty.ne.jp/nakamula/recurs.htm
0024名無しさん@お腹いっぱい。
NGNGとっつきやすい。オブジェクト指向言語とか最近のトピックも網羅
してます。
http://www.cs.princeton.edu/~appel/modern/
00251
NGNGこれだけでも真面目にやろうとすると結構大変ですね。って俺がヘタレなだけか(;´Д`)
>>23-24
ありがとうございます。
とくに
http://member.nifty.ne.jp/nakamula/recurs.htm
はマジで助かります。
0026名前
NGNG0027名無しさん@お腹いっぱい。
NGNG0028名無しさん@お腹いっぱい。
NGNGスクリプト言語にはBASIC やシェルなどがある(Perlも一応含まれる)。
Cのようにソースを実行前に全て機械語に変換する「コンパイル」と比較に出されることもある。
言うまでもなく一括コンパイルした方が速いがいじりやすさなどではスクリプトの方がいいかな。
自作言語は自作言語。スクリプトとは違う。
0029名無しさん@お腹いっぱい。
NGNGインタプリタとごっちゃになっておらんか?
それにフツー機械語に変換はしないぞ‥まあこれは実装によるか‥
003028
NGNG0031名無しさん@お腹いっぱい。
NGNG>スクリプトは一行単位に文法を解釈
一行単位?違うと思う。
0032名無しさん
NGNGシェルスクリプトは一行単位だろうけど、
Perlは内部表現にコンパイルしてからインタプリタで実行する。
Javaでいうとclassファイルをメモリ上で作成してそのまま実行といった感じだ。
#内部表現は木構造などで、バイトコードまでは作らないが
この方法だと、実行前に静的なエラーをチェックできるし、
内部表現を上手く作ればある程度の最適化が望める。
スクリプト言語自体意味が曖昧だが、、、
一行一個のコマンドを上から下へ順番に実行するだけの言語
だったらスクリプト言語と言えるだろうね。
>>31
構文解析の時点では普通字句単位だな。
00331
NGNGそれにしても、再帰下降法ってバグの温床になりませんか?
ヘタするとすぐに無限ループに陥いってスタックはじけて逝きます。
0034>33
NGNG0035名無しさん@お腹いっぱい。
NGNG条件分岐の実装とかどーゆーふーにするの?興味あり。
0036名無しさん@お腹いっぱい。
NGNG00371
NGNGなんとか四則演算がまともにできるようになりました。
とりあえず第一の目標は達成かな。
>35
条件分岐やループのことは考えてませんでした(^^;
のたうちまわりながら考えます。
>36
EBNFってなんですか?
0038名無しさん@お腹いっぱい。
NGNG解説した本が出てた。
c++でシンプルなスクリプト言語を作っている。
タイトルは忘れてしまったが、買うのをためらってしまいそうな
…な表紙が目印だ。
0039名無しさん@お腹いっぱい。
NGNG0040名無しさん@お腹いっぱい。
NGNGどういう軌跡を描いてどういう弾を出しながら出現するか、とかを
柔軟に書く為にはどうしてもスクリプトがあった方が便利ですよね。
シミュレーションRPGで敵キャラクターの動きを設定したり。
まあ、パラメーター設定が多かったりするんですが。
行動と条件をあらかじめ定義すれば、かなり柔軟になります。
エイジオブエンパイア2コンカーはコンピューターの行動パターンスクリプトと
マップ生成スクリプトをユーザーが書けるのですが、
とても面白いですよ。勉強にもなります。
ttp://web1.omn.ne.jp/~cat/index.html
ttp://www02.u-page.so-net.ne.jp/gc4/takahisa/aoe/rmsr.htm
何かの参考になれば…。
0041名無しさん@お腹いっぱい。
NGNG→a=b+c;
じゃいけないの?
0042名無しさん@お腹いっぱい。
NGNGif文 ::= if (式) 文 | if (式) 文 else 文
みたいなのをBNFという。
再帰下降の場合はこれにそって関数を呼び出していくだけでいい。
if文を解釈する関数内では。
字句"if"、字句"("が順に出現しているかを確かめ、
式を解釈する関数を呼び出し、字句")"の出現を確かめ・・・となる。
0043名無しさん@お腹いっぱい。
NGNGBNF ゴリ押しは限界が早くくるるん
0044名無しさん@お腹いっぱい。
NGNGyacc使うにしても結局BNFで文法を定義しないか?
しかしNUTSHELLシリーズのlex&yaccくらいしか参考書がないのが辛い。
0045名無しさん@お腹いっぱい。
NGNG作ってくれ。
0046名無しさん@お腹いっぱい。
NGNG確かにためらう・・・
http://books-domino.pub.softbank.co.jp/bookweb.nsf/7218069992c69510492566350001471a/352dfe5b3f2ea1ad4925682c002cd876?OpenDocument
0047名無しさん@お腹いっぱい。
NGNGXMLファイルを読むだけなら、どーってこ事ないけど、validationが
大変よん。
0048名無しさん@お腹いっぱい。
NGNG00491
NGNGswitch-caseとかloop処理はどうしたもんかな。
>>40
ありがとうございます。AOKはよくしらないのですが、参考になります。
>>42
なるほど、そういうことでしたか。
だいたいそんな感じで実装してます。
>>45
それではそのうちに(^^;
00501
NGNGRPGに適したスクリプトってどんなのでしょうか?
あるいは実際のRPGではどんなスクリプトが使用されてるんでしょうか?
やっぱりイベントドリブン型で作ったほうがいいですよね?
0051名無しさん@お腹いっぱい。
NGNGlibxml http://www.xmlsoft.org/
GNOME向けのXMLライブラリだが、GNOME環境下でないと使えないわけではない。
expat http://www.jclark.com/xml/expat.html
これはnon-validation。PerlやRubyのXMLライブラリはこれへのラッパ。
XML for C++ http://www.alphaworks.ibm.com/tech/xml4c
ApacheのXercesベース
XML Parser for Java http://www.alphaworks.ibm.com/tech/xml4j
同上
手軽さならexpat、JavaならXML4Jかな。libxmlは使ったことはないが、
サンプルプログラムのhtmllintなんかはちゃんと働いていた。
0052>50
NGNGマップからキャラクタからシナリオから全部をまとめて表現出来る
0053名無しさん@お腹いっぱい。
NGNG風林火山の厳島/月山がそうだな。 http://www.wffm.org/
ゲームプログラミング相談室スレでも話に出ているように、
どこまでをスクリプトに任せるかが重要。
0054?
NGNG?????????
??????????expat???????????????????
?????expat??????????????
<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>
???????Unknown Encoding???????????
?????text encoding???????????????????????
00551
NGNG>>52
それは名案ですね。
おもしろそうなんでexpatを落としてきていろいろ遊んでいます。
ところでexpatって日本語扱えるんですか?
<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>
とかやっても、Unknown encodingっていわれます。
それともtext encodingは自分で処理する必要があるんですか?
0056名無しさん@お腹いっぱい。
NGNG0057名無しさん@お腹いっぱい。
NGNGUTF-8じゃダメ〜?
00581
NGNGexpat-jpを試してみたんですけど、なぜか文字化けしてしまいます。
prologにShift_JISと書いておくだけではダメなんでしょうか?
>>57
そうすると、内部データはUTF-8で持っていて、表示するときにSHIFT-JISに変換するという事になりますよね? めんどくさいけどこれが一番かな。
それとも、自分で日本語OKなXMLのパーサを書いてみようかな。
validation無しならなんとかなりそうだし。
00591
NGNG作った事のある人がいれば教えて欲しいです。
やっぱり1から作るのは大変ですか?
0060名無しさん@お腹いっぱい。
NGNGパースすること自体は、XMLの構造が単純だからそれほど難しくない。
パースして取り出したデータへのアクセス方法
(いわゆるSAXやDOM)の実装がやや面倒。
ま、上から順にアクセスするだけなら楽だね。
00611
NGNGコンソールに表示する前にテキストをShift_JISに変換することで解決しました。
どうやらexpat内部では、UTF-8でテキストのデータを持っていて、
WinやMacのコンソールではShift_JISにしか対応していないにもかかわらず、
UTF-8のテキストをそのままコンソールに渡していたために文字化けしてしまったようです。
バカだなぁ、俺って・・・
>>60
ありがとうございます。
そうですか、けっこう面倒そうですね。やっぱ自作はやめておこうかな(^^;
0062名無しさん@お腹いっぱい。
NGNG0063名無しさん@お腹いっぱい。
NGNGはオプション扱いだったと思います。
パーサが外人の場合はUTF-8しかまともに動かないんではないかと思う。
ちゅーか、日本製のパーサってあるんかい?
0064名無しさん@お腹いっぱい。
NGNGそのまんまな気がするけど。。。
0065名無しさん@お腹いっぱい。
NGNGたしかJavaで作られたパーサで日本製のがあったと思います。
SHIFT-JIS@` JIS@` EUC-JPが通るやつ。
どこにあったかは失念。
0066名無しさん@お腹いっぱい。
NGNGスクリプト書くのが面倒そう。面白そうではあるが。
0067名無しさん@お腹いっぱい。
NGNG検索しろって。
XML Parser for Java
http://www.alphaworks.ibm.com/tech/xml4j
説明は英語だけどな。
Java と XML 使うんなら、その手のサイト情報は押さえてとけって。
損しないから。
0068コンパクトな言語
NGNG僕も1さんと同じような状況でスクリプト言語の導入を考えているのですが,
スクリプト言語の作成自体にはあまり興味が無いので,既存のライブラリを
利用しようと考えてます。
GNUのGUILEのような著名なものをいくつか試してみたのですが,どれもいまいち
規模が大げさすぎて,気軽に組み込むには抵抗のあるものでした。どなたか
コンパクトで組み込み用途に特化されたライブラリをご存知でしたら,教えて
いただきたいのですが・・・。
ちなみに,今はこれ↓の導入を考えています。非常にコンパクトなschemeの処理系です。
http://tinyscheme.sourceforge.net/home.html
0069名無しさん@お腹いっぱい。
NGNGTclインタプリタはどうです?
http://dev.ajubasolutions.com/software/tcltk/8.3.html -- ここでダウンロードできるよ
http://www.geocities.co.jp/SiliconValley/4137/shiba.html -- リンクがたくさん(日本語)
http://members.nbci.com/tcltk/index.html -- Cから利用するための親切な情報がある(日本語)
0070名無しさん@お腹いっぱい。
NGNGいいじゃん。
007169
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=966300886
00721
NGNGクラスで包んで、DOMっぽく実装してみました。これでなんとか使えるかな。
それにしても、JAVAではずいぶんとXMLパーサが充実してますね。
CでProject Xに匹敵するくらいのパーサってあるんでしょうか。
0073名無しさん@お腹いっぱい。
NGNG特別バージョンみたいだね。
0074名無しさん@お腹いっぱい。
NGNGXerces for C じゃだめ?
00751
NGNGありがとうございます。
http://xml.apache.org/xerces-c/
これですね。
でも、やっぱり手軽さではexpatが勝ちですね。
どうも自分はいまいちexpatの使い方がわからんのですが、
expatのサンプルなんかを置いているサイトってないですか。
ってGecko見ればいいのか(汗
0076名無しさん@お腹いっぱい。
NGNGC言語じゃなくてC++じゃん…
看板に偽りアリ!
0077処理系の実装の質によるが
NGNG>C言語じゃなくてC++じゃん…
こういうライブラリはまだCの方が環境に依存しなくて良いかもね。
作りによってはメンテが大変だけど…
00781
NGNGとりあえずXMLのスタイル内にスクリプトを記述する事にします。
だいたいこんな感じ。
------------------------------------------------------------
<SCRIPT>
<START>
print("逝ってよし");
goto OMAEMONA;
</START>
<OMAEMONA>
print("オマエモナー");
</OMAEMONA>
</SCRIPT>
------------------------------------------------------------
スクリプトはやねうらおさんのyaneScriptのソースを参考にして
やっています。
0079名無しさん@お腹いっぱい。
NGNG少なくともこのくらいにしないとXMLぽくないなあ。
ラベルがstartのシーン要素から開始し、endのシーン要素で終了。
read要素はシーンの呼び出しね。
<script>
<scene label="start">
<print>逝ってよし</print>
<read label="OMAEMONA"/>
</scene>
<scene label="end">
<print>オレモナー</print>
</scene>
<scene label="OMAEMONA">
<print>オマエモナー</print>
</scene>
</script>
0080名無しさん@お腹いっぱい。
NGNG<もしもだよ label="COMP1"> &lt;!---COM1の結果により ---&gt;
<ならば> なんとか </>
<でなければ> かんとか</>
</>
0081名無しさん@お腹いっぱい。
NGNGhttp://member.nifty.ne.jp/y-sato/wffm/docs/pages/g3-gs-01.html
もちろん自分で色々工夫するのは悪い事じゃない
00821
NGNGなーる。XMLのタグを使って記述するんですか。そういうのも面白そうですね。
コマンド型インタプリタとどっちがいいんだろう、、、悩むなぁ。
0083名無しさん@お腹いっぱい。
NGNG0084名無しさん@お腹いっぱい。
NGNG仕様でかなり悩んでるのであんまり進んでませんけど。
0085名無しさん@お腹いっぱい。
NGNGHSPは参考になるかな?
http://www.onionsoft.net/
0086名無しさん@お腹いっぱい。
NGNG■ このスレッドは過去ログ倉庫に格納されています