『コンパイラ・スクリプトエンジン』 相談室 2
■ このスレッドは過去ログ倉庫に格納されています
0001nanashi de fault
NGNG>yaccやlexの使い方やら言語仕様やらの話題。
前スレ
【コンパイラ・スクリプトエンジン】相談室
http://pc.2ch.net/test/read.cgi/tech/981672957/
前スレアーカイブ(かちゅ用)
http://www.1me.jp/hp/prg_c-s_lab
前スレに張られたリンク + x
>>2-6
0002デフォルトの名無しさん
NGNGコンパイラおよびコンパイラコンパイラに関する本
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/
計算機能論ホームページ
http://buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/index.html
0003デフォルトの名無しさん
NGNGLinks and Selected Readings
http://www.gnu.org/software/gcc/readings.html
NASM Manual
http://www.bekkoame.ne.jp/~bero/docj/nasm/nasmdoc0.htm
インテル(R) Itanium(TM) プロセッサ
http://www.intel.co.jp/jp/developer/design/itanium/index.htm
インテル(R) Pentium(R) 4 プロセッサ関連マニュアル (宝庫です)
http://www.intel.co.jp/jp/developer/design/pentium4/manuals/index.htm
Streaming SIMD Extensions 2 (SSE2)
http://developer.intel.com/software/products/college/ia32/sse2/index.htm
0004デフォルトの名無しさん
NGNGTurbo 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)
http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/yacc/
KITE_ASM (lex)
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デフォルトの名無しさん
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/
0006デフォルトの名無しさん
NGNGThe Odd Stage (吉里吉里というゲームのスクリプト)
http://www.din.or.jp/~glit/TheOddStage/
tiny C コンパイラ (C)
http://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/
0007デフォルトの名無しさん
NGNG0008nanashi de fault
NGNGたまに、よくわかんないのとか、リンク切れ、
その他重要じゃないのが入ってたんで添削しました。
あと、Intelとか張ったのはおれのしわざです。
では後誰か頼みます。
0009デフォルトの名無しさん
NGNGhttp://www.intel.co.jp/jp/developer/design/litcentr/index.htm
00101
NGNGすげぇ
つかそれだけ紹介すりゃ良かった・・・
0011デフォルトの名無しさん
NGNGhttp://gaogao.moemoe.gr.jp/
0012デフォルトの名無しさん
NGNGhttp://sourceforge.jp/projects/dmonkey/
0013デフォルトの名無しさん
NGNG(´×`)
0014デフォルトの名無しさん
NGNGミッフィー?
0015デフォルトの名無しさん
NGNG(;゚×゚)
0016s
NGNGhttp://www.computing.surrey.ac.uk/research/dsrg/fog/
ページ中程のCxxSrc.tgz/CxxSrcNT.tgz
0017デフォルトの名無しさん
NGNG再帰下降使うと似たような関数いっぱい書かないといけなくなるし
gccとかはどんなアルゴリズムなんですか?
0018デフォルトの名無しさん
NGNGgccのソースを見ろ。
〜〜〜 終了 〜〜〜
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG優先順位と結合規則とオペレータの関係をテーブル化する方法がある。
正式名称がなんなのかは知らないけど。
関数のポインタを使う。
似たような関数いっぱい書かないといけないのは同じだけど
メンテがし易くなる。それも気持ち程度。
0022デフォルトの名無しさん
NGNG演算子順位法かな?
基本的にはループ1つで実装できたので、「似たような関数いっぱい」とは
違うかも。
0023デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/
日本語で読める本では、結局これが一番(だと思ってる)。
バイブルだから・・・としり込みしないで読もう!
この本がコンパイラ本1冊目であっても十分読める(と思う)。
●プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝
http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/
2分冊うざい、という人にはこの本。
●コンパイラの構成と最適化 中田 育男
http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/
悪くはない(偉そう)。この本は最適化がメイン。
0024デフォルトの名無しさん
NGNG>●コンパイラ 原理・技法・ツール 1&2
>http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/
1巻はオススメしない。
LL(1)とかLR(N)とかはイラン。
0025デフォルトの名無しさん
NGNG●コンパイラの仕組み 渡邊 坦
http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/
という本もある。ただし、サイズの割に値段が手軽じゃない罠
0026デフォルトの名無しさん
NGNG再帰下降用のパーサー・ジェネレータもあるよん。
0027デフォルトの名無しさん
NGNGhttp://www.antlr.org/
0028デフォルトの名無しさん
NGNG再帰下降(手書き)とyaccでは、どちらが速いルーチンが作れますか?
yaccだという噂ですが、、、。
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGどう考えてもyaccでしょ。
0031デフォルトの名無しさん
NGNG再帰呼び出し/復帰1回より配列読み出しとgotoの方が速いだろ
うな。
ただ、Javaみたいに関数(メソッド)呼び出しが速くて配列操作が
比較的遅い言語だとどうかなあ…
まあ、yaccっていうからCに限るのかな。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGjavaccとかいうのがあったはず
0034デフォルトの名無しさん
NGNGJavaCCはLL(k)だね。
0035デフォルトの名無しさん
NGNGYet Another Compiler Compilerだから別にCとは限らない。
0036デフォルトの名無しさん
NGNG普通マルチスレッドで設計するでしょうか?
もう1つの言語スレでちょっと話題になってたのに、
今は全然違う方向に逝ってるからキケナイ...
0037デフォルトの名無しさん
NGNG>GUIを利用した仮想マシン
VMなのにGUIに依存するの?
Smalltalk見たいなもの?
0038デフォルトの名無しさん
NGNGいや、スクリプト言語を作りたいんだけど、
言語と作るって言うのもなにかな〜と思って。
003938
NGNG要はHSPみたいなものを作りたいのです。
0040デフォルトの名無しさん
NGNGもう少し志を高く持とう。
004138
NGNGコンソール感覚でGUIアプリ作れたらなとか考えてるだけだしなー
大体作ること自体面白そうだし。
0042デフォルトの名無しさん
NGNG>コンソール感覚でGUIアプリ作れたら
意味がわからん。
0043デフォルトの名無しさん
NGNGいや、目標(HSP)が引く杉ってこと。
004438
NGNG>>コンソール感覚でGUIアプリ作れたら
>意味がわからん。
それもそうだ。
たとえば、
list = file_search("C:\My Documents\*.jpg");
foreach(list, itr){
image = image_load(itr);
tile_draw(image, 48, 32);
}
ぐらいの記述量でフォルダ内の画像一覧を表示するアプリが書けるとか。
いや、たとえだけど。
>43
>いや、目標(HSP)が引く杉ってこと。
そうか?
そうか。
うーむ。
004642
NGNGよく見てなかった。スマソ
0047デフォルトの名無しさん
NGNGLISPは構文解析いらないから楽だよ
0048デフォルトの名無しさん
NGNGいらないってこたあないだろ。
たしかに構文は簡単だけどさ。
0049デフォルトの名無しさん
NGNG環境を作るのってむずかしい?
0050デフォルトの名無しさん
NGNG最低限の構文は必要かと。
むちゃくちゃ楽なのは確かだけど。
あとはマクロで構文唐。
0051デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGFORTHは?
と言ってみるテスト。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGうっさいハゲ
0057デフォルトの名無しさん
NGNGパーサー担当は君に決定!
0058デフォルトの名無しさん
NGNGところで、GCの無いLISPって理論的に可能でしょうか。
0059デフォルトの名無しさん
NGNG無限にメモリを消費し続けてください
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG0063デフォルトの名無しさん
NGNG0064HELP!あ〜にゃにゃにゃ〜にゃ〜
NGNG0065逝って良しの1
NGNG0066デフォルトの名無しさん
NGNG再帰下降なら楽じゃん。
0067デフォルトの名無しさん
NGNGGNU bison ならすぐ見つかるだろ。
0068デフォルトの名無しさん
NGNG森氏のkmYaccならVectorで検索すれば有るんじゃない?ソース付きで。
この人のcppとmakeは自分なりに手直しして未だに使わせてもらってる。
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGCマガの2000年5月号をよめばわかります。
0072デフォルトの名無しさん
NGNGそういうやつは生理的に氏ね!
0073デフォルトの名無しさん
NGNGGNU のソースが生理的に嫌いだってのは、分からんでもない。あのインデントは
読みたくないよ。(というわけで GNU indent 通して整形してから参照してる俺)
0074デフォルトの名無しさん
NGNGむしろライセンスの方じゃないの。
0075デフォルトの名無しさん
NGNG73 の皮肉と諧謔を込めた文意を読み取れ。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNGちなみにこの人、LSI-Cコンパイラの作者な。
yaccもcppもmakeもその一部。
007868
NGNG宗教じみたライセンスも理解できんので
避けてるのです。生理的に。用途違うかな。
>>77
普段LSI-C試食版使ってるので、cppで気づきました。
LSI-Cは一人の天才プログラマが作ったって噂があったけど、
本当だったんですな。あこがれます。
0079真68
NGNG>>77
知っている。今はLSI JAPANの取締役らしいな。
bisonのジェネレータが出力するソースは見にくくて吐き気がするが、
kmyaccのは綺麗で分かりやすい。実用にも問題無いし、学習用にもお勧め。
俺はbisonから完全に乗り換えたよ。テーブルの小ささに惚れた。
008064
NGNG008173
NGNGはずれ(w
>>78
> 宗教じみたライセンスも理解できんので
GPL は理解しておいて損はないと思うよ。
俺は GPL の趣旨には賛同しないので、自分が公開するソフトのライセンスは
GPL にしない。でも GPL で公開されているソフトには有用なモノも多いし、ライ
センスを理解して使えば GPL に汚染されずに旨い部分だけ頂ける。
(ちなみに個人的には BSD、仕事絡みではクローズドな人です)
0082デフォルトの名無しさん
NGNGこの辺のところを、もう少し詳しく教えて( ゚д゚)ホスィ
008364
NGNG0084デフォルトの名無しさん
NGNGFisrt Follow Directorの計算アルゴリズムが良くわからん。
オーム者コンパイラ(中田育男 8刷 p85)
誰かわかりやすく教えてくれ。
0085.
NGNG0086
NGNG過去ログ。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGだけど、検索しても、どうしても見つかりませんでした。
知ってる人いますか?
0089デフォルトの名無しさん
NGNG7行スレのことか?
0090デフォルトの名無しさん
NGNGExpert Cに載ってる奴じゃない?
http://www.ioccc.org/1990/dds.c
0091デフォルトの名無しさん
NGNGこれ、VC6でコンパイル通らないんだけど、何だったらできる?
0092デフォルトの名無しさん
NGNGstruct C {
C (f)(); /*Cを返す関数f*/
C(); /*コンストラクタ*/
};
というので、{}のなかの 'C'
まで読んだ時点でそれがclass-nameかdeclaratorかどうやって判断しているの?
ひとつだけの先読みではわからないですよね。LALR(1)とかいうのとはちがうのですか?
0094デフォルトの名無しさん
NGNG読んだ時点で判断してるわけないと思うが。
そこは意味解析で判断する部分。
構文解析の段階だと
C();
は「戻型が省略された関数C」とでも解析されるんだろう。
structの定義('}')が終わった段階で、
初めて意味解析が走ると考えたほうが自然。
0095デフォルトの名無しさん
NGNGstruct の } 終わってから解析って、そりゃ構文解析でほとんど何もやってない
に等しい気が……。struct C の段階で「C」を型名としてシンボルテーブルに登
録しておいて
C (f)();
→ 識別子 '(' 識別子 ')' '(' 識別子 ')' ';'
ぐらいにバラしてスタックに積んでおき、この段階で意味解析に掛けると思う。
構造体の宣言が終わらなくても ';' 単位でばらせば、十分に解析可能だよね。
少なくとも型名やら名前空間やら、必要な情報は事前に出てるわけだし。
(そうでもない?)
0096デフォルトの名無しさん
NGNG適当な中間の非終端記号を入れて判定を遅延させて、
十分読み込んだところで判定を確定する、という話じゃないの?
009796
NGNG009892
NGNGCの場合、構文解析の段階でtypedefとenumを辞書引きすればよさそう(試してない)
だったので、C++もその延長でいけるかとおもっていたのです。
LALR(2)でならそれでもいけるかな?
0099デフォルトの名無しさん
NGNGC は型名と変数名は異なる名前空間で定義されるから(型名と重複する変数名
を定義可能)、その方針でやる場合には
型名を読み込んだ
→ 字句解析側に、次にアルファベット列が来たら identifier を返すように設定
と、構文解析・字句解析での情報のやりとりが必要になるかと。
010092
NGNGtypedef名だけは型名と変数名の両方に登録されるようなので、
typedef t int;
int t();
なんてのはエラーにしないといけない(?)のでどっちにしても
意味解析でも構文解析じみたことはしなければいけないみたいですね。
0101100
NGNGtypedef int t ○
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG三項になりましたサンクコ
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG1a+2+ というデータだけがここに有るとして、これを
3a+ にうまく変形出来ないだろうか。
0107デフォルトの名無しさん
NGNG出来る。
0108デフォルトの名無しさん
NGNGhttp://buri.sfc.keio.ac.jp/~yosuke/keisan-kino-ron/koubungi.gif
の図で言うと * と / が演算子の結合度が同じかつ親子なので、
a を a / d で置き換えてよい。
今考えたんで合ってるかどうか分からんけど。
0109age
NGNG0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNGそれが私です。
ついでにもう一冊、と、
原田賢一『コンパイラ構成法』共立出版、374頁、1999
を買っちゃいました。こちらはDQNの私でもわかりやすく例を挙げて、
C言語ライクの言語を構築する方法を説明してありました。
0112デフォルトの名無しさん
NGNG0113コンパイラ構成法
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNG0117質問
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGカムサハムニダ
0121デフォルトの名無しさん
NGNG気もするのだが... まだLALRとかが発明される前なら研究の
対象にはなっただろうが、今はyaccが使えればいいじゃん、と思う。
0122デフォルトの名無しさん
NGNGと言ってる俺はyaccしか使えません首吊ってきます
0123棄教者 ◆witdLTi2
NGNGyaccの文法はわかっても即コンパイラ・スクリプトが書けるとは限らないという罠。
0124デフォルトの名無しさん
NGNGいや〜、でも憶えないとコンフリクトの理由が分からなくて困ることとかない?
でも、なにも知らないところからだったら yacc 憶えた後の方が理解が早いので
手順として先に yacc は賛成。
0125デフォルトの名無しさん
NGNGコンパイラ・コンパイラの段階から自作できるようになって、初めて一人前。
0126デフォルトの名無しさん
NGNGコンパイラ・コンパイラと一緒。
* (コンパイラ・コンパイラ)・コンパイラ
* (YACC のコンパイラ)・コンパイラ
* (C のコンパイラ)・コンパイラ
0128デフォルトの名無しさん
NGNG作る必要はありません。
0129デフォルトの名無しさん
NGNGコンパイラ・コンパイラ・コンパイラの段階から自作できるようになって、初めて神。
0130デフォルトの名無しさん
NGNG0131ふわふわ名無しさん
NGNG証明↓
0132デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNGJavaCCが、再帰下降のパーサを生成する。
WebGainが音信不通なんでどうなることやら。
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNGfor(ex1;ex2;ex3){s;}
は
ex1;
while(ex2){
s;
ex3;
}
と書こうと考えますた。
なんですが、前から順番に構文解析していく場合
sを先に評価してex3を評価するなんてことをどうやって実現するのでしょうか?
ジャンプ命令を使ったりしてどうにかするのでしょうか?
教えてください。
「定義したい」とはどういう意味だ?
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGつまりsを読んだ後、ex2の前にjumpする前にex3を評価するってことですよね?
でも前から解析していく際にex3はどのようにしておけばよいのでしょう。
プログラム書くときにex3のところをどうやって書けばいいのかが・・・考えてるんですけど
分からないんです・・・
0141デフォルトの名無しさん
NGNGハァ?
それじゃfor()はどうやって実現してるんだよ?
もしかして、構文木とか作らずに、字面のまま実行してたりする?
0143デフォルトの名無しさん
NGNG恥ずかしながらそうです。。。
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNGそうですか。。。
出直してきます。レスくれた方ありがとうございました。
0146よ
NGNGとかいう問題じゃなかったか…
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGというか、作ったことがある。
出力コードの最適化は難いし、jumpの塊になるけど、breakや
continueもちゃんと対応できた。
0149デフォルトの名無しさん
NGNG> 別に構文木を作らなくても、構造化言語のコンパイラは作れる。
不可能じゃないだろうが、for ループがネストすることを考えると、ジャンプ用の
ラベルの振り方とか面倒そうだ。(それって、結局、構文木を作ってるのと手間
変わらんのでは?)
0150デフォルトの名無しさん
NGNGつづりを切り出し照合せよなどと本には書いてあったのですが、意味がよく分かりません。
ハッシュ法を使って何とかするのでしょうか?
0151デフォルトの名無しさん
NGNGとりあえず単語切り出すところまではできてるとして、後は
static const char *keywords[] = {
"if", "else", "while", ..., NULL
};
int is_keyword(const char *s)
{
int i;
for (i = 0; keywords[i] != NULL; ++i)
if (strcmp(s, keywords[i]) == 0)
return 1;
return 0;
}
とか。キーワード数が増えたら、ベタな線形検索やめてハッシュや二分木を
使った方が良いかもしれんが、たかだか数十程度なら気にしなくて良い。
0152ろうひ男爵
NGNGc言語+asmのマクロを展開するプログラムを作って、
当初は普通の検索(線形検索)で90秒かかった処理が、
ハッシュ(チェイン法)を使って15秒になったよ。
でも、そのときの登録語数が3万単語位なので、
cコンパイラ部分だけで使うくらいの語数(変数合わせて千単語ぐらい)だと、
それほど性能の差は無いと思うよ。
ちなみに、2本木の方が実装は難しいかも。
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG0155ろうひ男爵
NGNGあと、90秒かかったのが5秒になったの間違えです。
0156デフォルトの名無しさん
NGNG0157ろうひ男爵
NGNGすまんのう
0158デフォルトの名無しさん
NGNGろうひ男爵、いいかんじのひとだね。
0159デフォルトの名無しさん
NGNG再起下降構文解析とかBNFとかLAL(1)等の解説されているページをみてまわっています。
a -> a b
b -> c
c -> X
このような一直線な処理は簡単にできる気がするのですが、
a -> a b|c
b -> X
c -> Y
のようにorが入るとたちまちパニックです。
上記の場合bの処理でfalseが帰った場合、
取得したトークンをスタック等に積んでおいて、
cでそのスタックを参照するというような仕組みになるんでしょうか?
それとももっとエレガントな仕組みがあるのでしょうか?
実は全くトンチンカンな事いっちゃってるんでしょうか?
つべこべ言わずYaccで仕組み覚えろモルァ!でしょうか?
0160デフォルトの名無しさん
NGNGまだコードやアルゴリズムを考える段階にないと思われ。
http://cspt1.ict.ru.ac.za/compilers/
ここにコンパイラ作りの基礎を書いた本一冊文のドキュメントがある。
LL文法の範囲内しか扱ってないけれど最初に手を着けるにはこれぐらいでいい。
0161棄教者 ◆witdLTi2
NGNGYaccを使いこなせるようになった方が手っ取り早いです。
yacc/lex プログラムジェネレータ on UNIX
五月女健治著
テクノプレス
ISBN4-924998-14-1
0162デフォルトの名無しさん
NGNG自前で作らなきゃいやなの?
0163159
NGNGもっと基礎や概念みにつけるべきということですね。
英語はかなり苦手ですが、いい機会なので昼休み等に読んでいこうと思います。
>>161
昨日Yacc/Lex関係の本を探してみたのですが、
Flaxの本しかありませんでした(買いませんでした)
教えていただいた本を探してみようと思います。
(そういえばネットで買えるとこがありましたよね)
>>162
仕事には全く関係ないというか、完全に興味本位です。
あとオブジェクト指向を勉強してたとき感じたのですが、
自分の知らない技術理解すると、今までやってきたことを
違った視点で見れたりするじゃないですか。
そういうのも狙ってます。
(再起下降構文解析とかみててビビビときましたね)
0164デフォルトの名無しさん
NGNGLL の方が
エラー回復が楽
先読みするトークン数を容易に増やせる
って利点もあるから、俺は両方やることを推奨したい。ま、お勉強としては
手書きのパーサーも悪くないっしょ。
0165デフォルトの名無しさん
NGNG//term
a
b
c
//non-term
START:
E;
E:
C a a|
D a b;
C:
A;
D:
B;
A:
a;
B:
a;
0166デフォルトの名無しさん
NGNG実際にLR表作ってみたら?
0167デフォルトの名無しさん
NGNGできてるっぽいんですが、goto表をここに貼ってみればいいですか?
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNG0170高速化
NGNG無料体験版があります。
http://www.xlsoft.com/jp/products/vtune/perftool.htm
0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNGttp://216.239.51.100/search?q=cache:lYpgKL5fV34C:www.hara.cs.keio.ac.jp/kCompiler/+%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E6%A7%8B%E6%88%90%E6%B3%95+%E6%AD%A3%E8%AA%A4%E8%A1%A8&hl=ja&lr=lang_ja&ie=UTF-8
でダウンロード出来るであろうソースコードが相手先サーバーが動いていないか何かで、ダウンロード出来ません。
正誤表はグーグルキャッシュでゲットできたのですが。
ソースコードお持ちの方、どこかのアップローダに上げていただけませんか?
0173棄教者 ◆witdLTi2
NGNGいま、鯖が�d�jみたいですね。
このまえはぼくもダウソできたので。
しばらくしたらもう一度渡来してみたらどうよ。
この本は親切で分かりやすい本です。おすすめです。
わからないところや面白い本はドラゴンブックで補充するとさらに良いでしょう。
0174ろうひ男爵
NGNG'0'-'9' を 0-9
'@' を 10
'A'-'Z' を 11-36
'_' を 37
'a'-'z' を 38-63
それ以外を 0
にする文字変換テーブルを作り(chartbl[256])、
ハッシュ表(hashtbl[256])を256だとすると、
hashtbl[chartbl['最初の文字']+chartbl['真ん中の文字']+hashtbk['最後から2番目の文字']+chartbl['最後の文字']]
でハッシュ値が収得できるよ。
0175デフォルトの名無しさん
NGNGいい本ありませんか?
0176ろうひ男爵
NGNG中間言語に落として、ゲームやツールに組み込む単純なスクリプト言語なら、
LL(1)が良いと思います。
それ以上に簡単な物の方がよいのでしたら、
構文解析もほとんど考えなくても良い言語にしたら簡単なんじゃないのでしょうか?
使用用途にもよりますが、以下ぐらいなら簡単に作れるのではないでしょうか?
命令を組み込みの物だけにする、
関数を使えなくする、構造化も出来なくする(手続き言語の古いMS-BASICみたいにする)
変数は$マークから始まるとか、特殊記号にする
算術計算式などを、別扱いにするか、専用の命令を作り、ADDとかにしする。
それでも、バックパッチぐらいは必要ですけど。
LLなら、そこまで難しくはないけど、
yaccとlexを使い、LALRって方法でも簡単に出来ますよ。
0177デフォルトの名無しさん
NGNG用途というか、PerlやHSPを使ってるうちに、どうやってコンパイラや
スクリプトが動くんだろうと思って、すごく簡単なものでもいいから作れたら
勉強がてらやるのもおもしろいかなーと漠然と思ったんです。
コンパイラに関してはぜんぜん知らなかったので、すこしWEBを見て
LL(k),LR(k)について勉強しましたが、言ってる事は理解できても
それをどうやってコードにしようと悩んでしまって。なにかコードがあれば
みながら勉強することができるのですが・・・言語はJAVAかCかPERLか、VB
くらいしか使えないので、どれかでやろうと思っています。
何かインタープリター系の本でコードが載っていて、いい本かなにかありますか?
お願いします。ちなみにUNIX系使えないのでYACCとかできません・・・
http://hp.vector.co.jp/authors/VA010446/toolbox1/
0179デフォルトの名無しさん
NGNG柔軟な構文を定義する方法を教えてください。
Perlでいうところの (.*?) みたいなものが欲しいんです。お願いします。
0180デフォルトの名無しさん
NGNGここのコンパイラソースコードは参考にはならない?
0181ろうひ男爵
NGNGでしたら、
コンパイラ構成法 原田 賢一 共立出版株式会社 ISBN: 4320029224 6,500円
が一番分かりやすいのですが、yaccとlexが必要です。
コンパイラの仕組み 情報科学こんせぷつ〈8〉 朝倉書店 ; ISBN: 4254127081
も物量的に少ないので読みやすいですが、消化不良のところが出てきます。
しかし、1日から一週間で読めると思います。
あと、インタープリタとコンパイラの違いは大きくないので、
ここのスレッドに色々質問すると良いかもしれません。
どちらにしろ、コンパイラ関連の本は難解な物が多く、
いろいろなアルゴリズムを理解していることが前提となったりするので、
軽くアルゴリズムの本を読んでおいた方がためになりますよ。
アルゴリズムを1冊ですますには、以下の本が良いと思います。
定本Cプログラマのためのアルゴリズムとデータ構造 近藤嘉雪 技術評論社
簡単なアルゴリズムの本は
C言語アルゴリズム+徹底入門 柏原正三 技術評論社
が読みやすいです。
0182デフォルトの名無しさん
NGNGhttp://www.hayalab.cs.ritsumei.ac.jp/~hayashi/materials/textbook.html
0183Aoki
NGNG0184デフォルトの名無しさん
NGNGJavaCCは少し使ったことがあるんで、答えられるようなら答えますけど、
Perlは知らないんで、質問の意図がわからないです。
0185179
NGNGvoid this () : {} {
( "{" this() "}" )+ )|(s = getAll() { println(s) } )
}
が、期待通りの動作をしてくれません。
左の構文を優先させたいのです。お願いします。
0186179
NGNGみたいなのをパーズしたいと思ってます。
asdfの部分は、それが構文そのものを含む時以外は、
全ての文字を処理したいのです。
0187デフォルトの名無しさん
NGNGすみませんこっちでした。
0188184
NGNG解釈が間違えてたらごめん。
TOKEN :
{
<ALL: (~["{","}"])+>
}
void Input() : {} {
foo()
}
void foo() : {
String s;
} {
( LOOKAHEAD(2) "{" ( foo() )* "}" )+
| (s = getAll() { System.out.println(s); } )
}
String getAll() : {
Token t;
} {
t = <ALL>
{ return t.image; }
}
0189179
NGNG0190デフォルトの名無しさん
NGNGみんなLRかな?
0191デフォルトの名無しさん
NGNG%option reentrant
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGパスカルはLL(1)じゃないの?
0194デフォルトの名無しさん
NGNGコンパイラがどうしているかは別。
0195棄教者 ◆witdLTi2
NGNGこれってWEBを使って吐き出されたのかなぁ。
スレとは関係ないのでsage
そういえば TeX とか WEB とか Knuth なスレってあったっけ?
0196デフォルトの名無しさん
NGNGKnuthスレはないんじゃないかな?
>>182のリンク先にある
http://www.hayalab.cs.ritsumei.ac.jp/~hayashi/materials/SCF.pdf
の元のコードってどこにあるの?ないぞ
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGKnuthが提唱した文芸的プログラミングの実装、かな?
ドキュメントの中にソースコードを埋め込む形を取ることで、ソースとドキュメントの
間の不整合や、ドキュメント無きコーディングを避けるっていうものらしい。
コンパイルのためにはドキュメントの中からソースを抜き出してコンパイラに渡す
プログラムが必要になる。
で、Knuth自身が作った、TeXドキュメントからPascalプログラムを抜き出してコンパイルする
システムがWEBシステムの筈。
詳しくは
http://www.google.com/search?hl=ja&ie=UTF-8&oe=utf-8&q=Knuth+WEB&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
でも見れ。
0199デフォルトの名無しさん
NGNGTeX総合スレ@数学板
http://science.2ch.net/test/read.cgi/math/1026634481/
0200棄教者 ◆witdLTi2
NGNG原田本を今読んでいるところですが、気になった箇所があるので皆さんにお伺いします。
p.164下から11行目
> $p_m$ にアドレス $m+n$ の領域を割り付ける.
とあるのは
> $v_m$ にアドレス $m+n$ の領域を割り付ける.
ではないでしょうか。
ちなみに正誤表
http://www.hara.cs.keio.ac.jp/kCompiler/Errata/Errata.html
で確認したところ、掲載されていませんでした。
いきなり原田先生にメールして自分が間違っていたら恥ずかしいので、
2CHのハッカーの皆さんに確認してからメールをしようと思います。
0201棄教者 ◆witdLTi2
NGNG0202棄教者 ◆witdLTi2
NGNGp.15 の BNF の説明
> Backus Nauer Form Backus Nauer Form (BNF) では、....
って the Jargon File には
Backus-Naur Form / Backus Normal Form って書いてあるんですけど。。。
Nauer って who?
0203デフォルトの名無しさん
NGNG英語綴り->Naur
だったと思う。
0204棄教者 ◆witdLTi2
NGNGbackus naur form で日本語限定だと213件, 言語非限定だと約20700件ヒット。
backus nauer form で日本語限定だと9件, 言語非限定だと253件ヒット。
おまけに「スペリング修正候補 backus <b>naur</b> form」として修正を勧告される。
0205棄教者 ◆witdLTi2
NGNG○backus naur form で日本語限定だと215件
0206デフォルトの名無しさん
NGNG調べてみた JVM、CRI、Python はいずれもスタックマシンのようでしたが、レ
ジスタマシンと比較して何かメリットがあるのでしょうか。
0207デフォルトの名無しさん
NGNGというのは半分冗談だけど、中間コードが簡単/短くできるからじゃないんですか。
コンパイラも作りやすいし。
0208デフォルトの名無しさん
NGNGレジスタのアクセスがメモリをアクセスするのと同じ。
パイプラインとかハードウェアで実装する場合の利点が
いかせられないからだと思う。
仮想マシンで最もコストが高いのが、コードのフェッチとデコード。
スタックマシンなら、コードも短いしオペランドも要らない。
0210デフォルトの名無しさん
NGNGありがとうございました。
まとめると、ネイティブコードまでコンパイルするのでなければ、レジスタマ
シンでも結局はメモリへのアクセスを行うことになるので、スタックマシンに
対する利点はなく、むしろコードが短くなる分だけスタックマシンの方が速度
的に有利、というところですかね。
0211ろうひ男爵
NGNGたしかに、
ネイティブコードへ最適化する場合、レジスタマシンの方が有利ですよね。
広域レジスタとローカルレジスタを割り当てたりした方が最適化しやすいですからね。
一方、インタプリタの場合、おっしゃるとおり
レジスタマシンと言っても結局メモリアクセスされるので、
スタックマシンに対するメリットはないですね。
それだったら、簡単に設計でき、
なおかつコードが短くなるスタックマシンの方が有利でしょう。
自分的には出力されたコードがレジスタマシンの方が読みやすいので、
レジスタマシンを使ってます。(インタプリタですが)
0212デフォルトの名無しさん
NGNG結局どっちも速度的に大差ないという話。
0213デフォルトの名無しさん
NGNGネイティブコードでも結構速くなる。
ネイティブコードのみをがりがりチューニングしたければ、中間コードは
3つ組や4つ組がわかりやすいかも。
0214デフォルトの名無しさん
NGNG後半のhocを一通りやってみるのが近道じゃないかな。
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG詳しくはないけど、良書どうこういうより、
JITについて書かれている本を探すの自体が大変だと思う。
一応、参考URLを貼り付けておく。
shuJIT
http://www.shudo.net/jit/index-j.html
0218デフォルトの名無しさん
NGNGそれのソースコードがわけわからんとです。
構文木の構造体が
struct TREE{
int val;
struct TREE *left;
struct TREE *right;
}
で、
maketree(int a,TREE *b,TREE *c)という関数で構文木を作るんですが、
あるところでmaketree関数のパラメータのbにint型を渡してるんです。
型が合わないからエラーがでると思うのですが、なにか僕が大きな間違いをしてるんでしょうか
0219デフォルトの名無しさん
NGNGsizeof(int) == sizeof(void*) を仮定していて、
int の即値を格納しようとしているとか?
0220218
NGNG構文木関係の部分だけ抜き出してコンパイルしてみると、
BCCではエラーがでました(TREE *型にint型は渡せない。と言っておられました)、
clは警告文だけでした。それにちゃんと動きました。
うーむ、やはり即値を渡しているのか。。。
0221デフォルトの名無しさん
NGNG宣言してない関数の戻り値をそのまま渡してるとか?
それかNULL代わりに0渡してるんじゃない?
こんなんだったらどっちでも昔の名残だね。
0222218
NGNGなにしろANSIで定められる前のCなので古めかしいところは多いです
たとえば、
func(a,b){
int a;
int b;
}
とか。。。
それと、bには字句解析で得たリテラルを渡してるようです
(TREE *)にキャストしてやることで問題は回避できました。
0223デフォルトの名無しさん
NGNGそれを書くなら、こうだろう。
func(a, b)
int a;
int b;
{
...
}
> それと、bには字句解析で得たリテラルを渡してるようです
正攻法としては union 使うように書き換えちゃえ、かな。
0224デフォルトの名無しさん
NGNGgoogleでlalr(k)てしたところいくつか見つかったのですが。
0225デフォルトの名無しさん
NGNGyacc以外でってこと?
といっても他はyaccの他言語用ぐらいしかしらないけど。
0226デフォルトの名無しさん
NGNGいやそうでなく k >= 2 という意味でお願いします。
0227デフォルトの名無しさん
NGNGこれはよいです。
0228デフォルトの名無しさん
NGNG面白そうですね
簡単に説明してもらえませんか?
自分で読む気はないのか?
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGだれそれ?電波固定?
0233デフォルトの名無しさん
NGNG使っているのですが、入力した数値で要素数が定義されてるよう
な場合どうしたらよいでしょうか?
要素数 - 要素...
4 4 4 2 2
5 0 1 0 2 3
2 0 3
という形式です。
int_array
: /* empty */
| integer
| int_array integer
;
では、全部一気に読んでしまうので・・・。(低レベルでスマン・・・。)
0234デフォルトの名無しさん
NGNGint_array
: /* empty */
| one integer
| two integer integer
| three integer integer integer
(略)
;
とするとか…
イヤスギ
0235デフォルトの名無しさん
NGNG| integer
| int_list integer
;
int_array: integer int_list
;
ダメか?
0236棄教者 ◆KIKYO7cg
NGNG%token NUM
%%
lines : /* empty */
| line lines
;
line : index elements '\n' ;
index : number ;
elements : /* empty */
| number elements
;
number : NUM ;
%%
------------------lex-------------
[0-9]+ { yylval = atoi( yytext ); return NUM; }
[ \t] { /* 空白は捨てる */ }
でどうよ。
0237233
NGNG>>234
ちょっと無理です・・・。^^;
>>235
最初の要素は良いのですが残りはすべてint_list integerに一致して
しまうようです。
>>236
233の例では行けると思いますが、実はこの形式を出力するツールは
一つではなくて、それらの間で改行の位置というのは統一されていな
いのです。というわけで、できれば改行フリーでなんとかしたいと
思ってるのですが・・・。
うーん、そもそも読み込んだ値を利用したり、繰り返しの回数を制限
するのはyaccで定義できる構文の概念を逸脱しているんでしょうか・
・・。 今回はyaccの使用はやめてlexだけに留めるべきかもしれませ
んね。(その辺ご存知の方いましたら後学のため教えていただきたい
です。)
0238デフォルトの名無しさん
NGNGatoiでいいじゃん。
「何回繰り返す」とかはセマンティクスの部類に入るから、
yacc使うのはお門違い。
0239デフォルトの名無しさん
NGNGドラゴンブックにはそういうの(個数の検査とか)は構文では解決でけん
と書いてあった気がします。
0240デフォルトの名無しさん
NGNG正攻法は単に数値のリストとして、リストに含まれる文字コードチェックに
利用を限ってしまうのがいいんじゃないかな?
考えてみるのは面白そうだけど、
仕事となると、むきになってやっても費用対効果がなさそうだし・・・
0241デフォルトの名無しさん
NGNGhttp://page.freett.com/gikob/gikob0002.zip
0242241
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGこれ http://spirit.sourceforge.net/ どうなん?
0246デフォルトの名無しさん
NGNGすげー。びびった。久々に驚嘆したハックだ。
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGここから木の様に情報を取り出したいと思ったのですが、上手くパーサを作れません。
tokenizerは簡単に出来るのですが、どうすれば良いですか。rubyでやってます。
object hoge
caption='hogehoge'
val=0
object fuga
caption='fugafuga'
object aaa
caption='aaa'
end
object bbb
caption='bbb'
end
object ccc
caption='ccc'
end
end
end
0249ねこま
NGNG0250デフォルトの名無しさん
NGNG各ノードは子供と親のリンクを持つ。
<でノードを生成、現在処理中のノードへの参照を
親への参照として新規ノードへ設定。
その後で親に子として新規ノードへの参照を設定。
処理中のノードの参照として新規ノードを指させる。
>でシングルタグか開始タグか終了タグかを判断し
親に戻るかどうかを決める。
戻る時には処理中のノードの参照として
親を指させる。
こっちにドキュメントを置いてます。
サンプルソースはC++。
ソース玉は整理してないんで乱雑にメモテキストとか
テストデータが散らかっててちょっと気が引ける。
https://sourceforge.jp/projects/frogger/
こういうドキュメントが欲しいとか
掲示板に投げておけばそのうち対処するかも。
0251デフォルトの名無しさん
NGNGrubyじゃできないな。
0252デフォルトの名無しさん
NGNGloop
token w = Tokenizer.next();
if w == 'object' then
currNode := currNode.pushNewNode( Tokenizer.next());
continue;
end if
if w == 'end' then
currNode := currNode.parent();
if currNode is null then break;
continue;
end if
Tokenizer.skip();
currNode.pushNamedValue( w, Tokenizer.next());
end loop
Node というクラスはツリーのノードを表す。
各ノードは子ノードとして、object か namedValue を持つことができる。
pushNewNode は object 子ノードとして追加して、その新規子ノードを返す。
引数はノードの名前を表す。
pushNamedValue は namedValue 子ノードとして追加する。戻り値はなし。
第一引数は値の名前、第二引数は値の中身。
0253デフォルトの名無しさん
NGNG一週間前にはかけらすらないような事趣味でやり始めて分かったんですが構造を持つ
ファイルフォーマットってコンパイラ作成のような視点が必要なんですね。
さすがにインデントでは無理だってすぐ分かりましたが、xmlに近いことは
気づきませんでした。そう言えばxmlと似てますね。
内部データ構造を持つファイルフォーマットのパーサーの解説の一般的なドキュメント
希望>250
0254デフォルトの名無しさん
NGNG(define (hoge-read s)
(let loop ((x s) (stack '()))
(if (pair? x)
(case (car x)
((object)
(loop (cddr x) (cons (list (cadr x) (car x)) stack)))
((end)
(if (null? stack)
(error "Syntax-error - Corresponding 'object' is required :"
s))
(if (pair? (cdr stack))
(loop (cdr x)
(cons
(cons (reverse (car stack)) (cadr stack))
(cddr stack)))
(loop (cdr x) (reverse (car stack)))))
(else
(loop (cdddr x)
(cons
(cons (list (car x) (caddr x)) (car stack))
(cdr stack)))))
(if (and (pair? stack) (pair? (car stack)))
(error "Syntax-error - 'end' is required :" s)
stack))))
0255デフォルトの名無しさん
NGNG(define hoge-read-test-data '(
object hoge
caption = "hogehoge"
val = 0
object fuga
caption = "fugafuga"
object aaa
caption = "aaa"
end
object bbb
caption = "bbb"
end
object ccc
caption = "ccc"
end
end
end
))
(hoge-read read-tag-test-data)
=>
(object
hoge
(caption "hogehoge")
(val 0)
(object
fuga
(caption "fugafuga")
(object aaa (caption "aaa"))
(object bbb (caption "bbb"))
(object ccc (caption "ccc"))))
0256デフォルトの名無しさん
NGNGscmobj_t hoge_read(scmobj_t s) {
scmobj_t x = s;
scmobj_t stack = nil;
tail_recursive_loop:
if (pairp(x)) {
if (car(x) == make_symbol("object")) {
stack = cons(list2(cadr(x),car(x)),stack);
x = cddr(x);
goto tail_recursive_loop;
} else if (car(x) == make_symbol("end")) {
if (nullp(stack))
return error("Syntax-error - Corresponding 'object' is required :",s);
if (pairp(cdr(stack))) {
x = cdr(x);
stack = cons(cons(reverse(car(stack)),cadr(stack)),cddr(stack));
goto tail_recursive_loop;
} else {
x = cdr(x);
stack = reverse(car(stack));
goto tail_recursive_loop;
}
} else {
stack = cons(cons(list2(car(x),caddr(x)),car(stack)),cdr(stack));
x = cdddr(x);
goto tail_recursive_loop;
}
} else if (pairp(stack) && pairp(car(stack)))
return error("Syntax-error - 'end' is required :",s);
return stack;
}
0257デフォルトの名無しさん
NGNGExpression Templateをはじめ各種のテンプレート・メタ・プログラミングは
知ってたけどPaser Generatorにまで行きつくとは。
カ コ イ イ ! !
テンプレートらしく解析対象の列の要素型がパラメタ指定できるのもカコイイ!
(char, w_charに始まってユーザー作成のクラスまで)
字句解析器も含んでるしね。
当方Java(正確にはバイトコード)のPartial Evaluationを実装中なのだが、
Javaに演算子多重定義が導入されていれば、
合わせ技で同じようなことが狙えたのになァ。惜しい。
(メソッド呼び出し式で書けば良いわけだが、カッコ良さが大いに減る。)
0258デフォルトの名無しさん
NGNGでも、あんまり真剣な用途には使えないよね。
実行時にパーザ生成するんだったら、文字列で文法与えても良いな。
0259祐一ゴン
NGNG中学の時からポカリの粉を麻薬と思って鼻から吸ってたけどヽ(`Д´)ノ ウワァァン!!全然トリップできないや!最近初めてその事実を知ったよ
今部屋をテラフォーミングしたら鼠の干からびた死体が出てきたよ、あまり旨くなかったよ
0260デフォルトの名無しさん
NGNG0261:−)
NGNGベーシック→HSP
HSPはタダの開発環境です。デルフィは10万円くらい?
0262デフォルトの名無しさん
NGNGa(b(c(d())));
ってのをなんらかの中間コードにしてあって、
これを1パスでコード生成できるの?
(最適化はどうでもいい)
a();
のコード生成はできるけど、
a(b());
のようにネストするとできなくなって困ってます。
0263デフォルトの名無しさん
NGNGちょっとは考えろ
つーか、お前の言う中間コードって何のためにあるのさ
0264デフォルトの名無しさん
NGNG> ってのをなんらかの中間コードにしてあって、
> これを1パスでコード生成できるの?
「これ」というのが「中間コード」を指しているのなら、
どのような「中間コード」なのか示してもらわないと。
) を検出したタイミングでコード生成すりゃいいだけの
話なんだけど。
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNGデルファイじゃないのか?Delphi
嘘教えるなよ
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGいってるんだろ。どっちだろう、俺はベーシック知らないからなんとも
いえん。
0269デフォルトの名無しさん
NGNGインタプリタならBasicの方が楽だろう。
昔のBasicインタプリタは4KBくらいだった。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGほれ
ttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
0272デフォルトの名無しさん
NGNG…この21世紀になんでその2択に拘るんだw。
0273257
NGNG使えないかねぇ…。この辺の技術には期待したいトコロなんだけどなぁ。
私も使ってみたわけではないので大丈夫と言い切れるもんではないんだが。
実行時というか、コンパイル時にテンプレートの展開動作を利用して
パーザが作られるようなんだが。
0274デフォルトの名無しさん
NGNGギコBASICは参考にならないですか?
0275デフォルトの名無しさん
NGNGhttp://member.nifty.ne.jp/nakamula/recurs.htm
0276デフォルトの名無しさん
NGNG激しく鬱…
bison++/flex++に乗り換えるかのぉ。ドキュメント少なすぎだが・・・
0277デフォルトの名無しさん
NGNG> bisonが吐き出したコードってなんでVC++でコンパイル通らないんだ?
gcc 使え、というお達しかと……。ところで byacc とか kmyacc はどう?
0278276
NGNGまぁ、別にオブジェクト指向な解析器が作りたいというわけではなく、ただアクション書くのにクラスとか使いたいだけなんだが…
何かいい方法あったらキボンヌ!というか、bison++/flex++の日本語ドキュメントなんか激しくほすぃかも
0279デフォルトの名無しさん
NGNGinclude 外せばいいんじゃないの?
0280デフォルトの名無しさん
NGNGそれだと毎回 *.y からコード生成するたびに書き換えが必要になるから、
ダミーのヘッダファイルをでっち上げるに一票。
っつか、どうしても再入可能にしたいとかで bison の機能が必須でなければ、
bison 以外の yacc 互換処理系を試す方が幸せかも知れんが。
0281278
NGNGbison以外ならC++ソースとしてビルドできるんですか?
今日はbison++/flex++試しマスタ。今度はVC++だとエラー出まくって全然ビルドできない罠。
byaccとkmyacc試してみるかなぁ。
0282デフォルトの名無しさん
NGNG0283bloom
NGNGhttp://www.agemasukudasai.com/bloom/
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGlex + yacc + RTL(gcc)じゃ駄目か?
0288デフォルトの名無しさん
NGNGまたは本でも。
0289デフォルトの名無しさん
NGNGこのスレ、結構人が訪れているみたいなんだけれど、
実際にコンパイラレベル(変な言い方だけど)のものを作ってる、もしくは作った人っています?
自分はスクリプトぐらいなら、何とかいけそうなんだけれど、
コンパイラまでくるとかなり大変じゃないですか?
0290デフォルトの名無しさん
NGNG作ってる人は沢山いると思うよ。
0291デフォルトの名無しさん
NGNGオライリーの lex & yacc 本
>289
アセンブラを出力させるなら、そんなに面倒じゃない。実行できるバイナリを出力
しようと思うと、山のような詳細に追われて力尽きる。
0292デフォルトの名無しさん
NGNGテーブル化するのが。
0293デフォルトの名無しさん
NGNGコンパイラといっても仮想マシンコードに変換するスクリプトコンパイラだってあるし。
ネエィテブなアセンブルや直接、実行形式を吐くコンパイラのことを聞いたつもりでした。
0294ろうひ男爵
NGNG自分は構造化BASICで186のDOSの.COMを出力する物を作ったよ。
今は暇を見つけて簡易的なC言語コンパイラを作ってるよ
0295デフォルトの名無しさん
NGNGCじゃなくてもパスカルでもベーシックでもいいっす。
( ̄人 ̄)オ・ネ・カ・゛イ♪ヽ(* ̄〓 ̄*)ノ^☆ブチュゥゥ♪
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGhttp://gcc.gnu.org/
0298デフォルトの名無しさん
NGNGほれ
#include <stdio.h>
main()
{
printf("逝ってよし");
}
0299デフォルトの名無しさん
NGNG0300ろうひ男爵
NGNGBASICで、
[ラベル:] if 比較式 goto ラベル
[ラベル:] print "メッセージ"
[ラベル:] 代入式
でよかったら、構文解析もほとんどいらないし簡単じゃない?
改行で行末にして、変数の頭にRをつけてR10とかすれば、
悩むところはないと思うよ。
パスカルだとラベルを読み込むときに細工すればLL(1)だよね、
そんなに難しくないはずだよ。
Cにしろパスカルにしろなにがしらの本を読んだ方が良いんじゃない?
言語はどのレベルの物を作ろうとしてるの?
それと、実行環境はスクリプトで中間言語に落としての実行環境?
0301デフォルトの名無しさん
NGNGどうせ渡されたところで読めない、に 1 票。
言語処理系を作るのが初めてなら、とりあえず「UNIX プログラミング環境」でも
買ってきて hoc の実装追ってみれば?
0302デフォルトの名無しさん
NGNGそれぐらい自分で探せヴォケつー。
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNGいきなり gcc は厳しすぎ。
10年前だと「アルゴリズム+データ構造=プログラム」読めというところだが、
さすがに古いよな…。
0305デフォルトの名無しさん
NGNGはどうよ? インタープリタだけど。
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNGhttp://i.loveruby.net/ja/rhg/index.html
0309ろうひ男爵
NGNG演算子順位法とLL(1)をざらっと、LALRの概説です。
計12ページぐらいだったので、ここにいる方には物足りませんが、
読みやすかったので、人に聞かれた場合にはイイかも。
0310デフォルトの名無しさん
NGNGこれよんでみれ!
0311デフォルトの名無しさん
NGNGコンパイルできないのですか?
じゃあ、かわりにVC++で通るyacc互換でお勧めってあります?
仕事でも使うかもしれないので商用OKだとありがたいのですが。
0312デフォルトの名無しさん
NGNG何かいい書籍はありますか?今は少しづつですが、gccに含まれている
Boehmのソースで勉強してますがなかなか思うように進みません。
VMにそのようなものが書かれているものがあればそれでもOKです。
よろしくお願いします。
0313デフォルトの名無しさん
NGNGとりあえず、>>305に紹介されてる本読むとか。
0314デフォルトの名無しさん
NGNG概説でしかないし、yaccはちょこっとだけしか載ってない。
作るための特集じゃなくて、基礎知識をお勉強するための記事だった。
という印象。
0315デフォルトの名無しさん
NGNGVCでコンパイルできなかったっけ?
まぁいいや。
ttp://www.kohsuke.org/flex++bison++/
これなんかどうよ。使った事無いけど。
0316ろうひ男爵
NGNGさすがにあのページ数だと、1つでも掘り下げるのは難しかったみたいですね。
その中では演算子順位法が分かりやすかったと思います。
0317デフォルトの名無しさん
NGNG通るよ。
でもbisonで生成したコードにはGNUのテンプレートが含まれるので、商用はま
ずかったと思う。
0318デフォルトの名無しさん
NGNG書籍じゃないけど。
http://www.dcs.qmul.ac.uk/SEL-HPC/Articles/GeneratedHtml/comp.gc.html
0319デフォルトの名無しさん
NGNG出力されたコード見れば分るけど 1.24 以降は特例として GPL 適用外になってる。
0320デフォルトの名無しさん
NGNGあ、変わったんだ。サンクス。
0321デフォルトの名無しさん
NGNGここでそのことについて質問してもいいでしょうか?
0322デフォルトの名無しさん
NGNG>yaccやlexの使い方やら言語仕様やらの話題。
だから、宿題丸投げじゃなきゃいいと思うよ。
0323デフォルトの名無しさん
NGNG何か本を入手した?(購入するのも、図書館で借りるのも可。)もしまだなら、
書名:UNIX Literacy Series Vol.12 UNIX yaccとlexの使い方
発行所:HBJ出版局
著者:田中正広
ISBN:4-8337-8728-8
を入手して読んでみるといいYO!現在これ読んで某課題と格闘中(^^;
で、そういった本を読んでから質問するのなら十分OKかと。>>322に同意
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNG作れるよ
0326デフォルトの名無しさん
NGNGまだ、基本概念を勉強中なのですが、Flex&Bisonを使った「C++」用の
チュートリアルや簡単なサンプル実装などないでしょうか?
「C」での実装はいろいろあるんですが、自分はC++で実装したいの困ってます。
C++での解説も申し訳ない程度にはあるんですが、やっぱりサンプルがあると助かります。
0327デフォルトの名無しさん
NGNGC言語をスクリプト言語として動くように作ったことはあるが。
0328デフォルトの名無しさん
NGNG意味あるよ
0329デフォルトの名無しさん
NGNG新規チップの設計用とか?w
0330デフォルトの名無しさん
NGNGユーザにアセンブラ処理系の機能拡張をさせる場合には、スクリプト言語を
そのまま使えるのは嬉しいかも。自前でマクロ言語作るのって手間だし、マ
クロの設計がダサいとユーザの不満もたまるし(w
ただ、往々にしてバイナリ入出力の扱いって C, C++ の方が楽なんだよね。
0331デフォルトの名無しさん
NGNGよしこれから面白くなるってところで、終わってました。
期待してたのにちょっと悲しい。
0332321
NGNG皆さん、ご迷惑をおかけしました。
0333デフォルトの名無しさん
NGNGこのあたりはどうかな。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNGhttp://www2.dewa.or.jp/rock/camp/yacc/whatyacc.htm
0337デフォルトの名無しさん
NGNGチクショー!!
まんまとだまされたぜ。
0338デフォルトの名無しさん
NGNG0339中卒
NGNG0340ろうひ男爵
NGNG頑張って、勉強するしかないのでは。
もしくは、より簡単な、今月のcマガの特集とか、
コンパイラの仕組み 渡邊 坦 著
とかはどう?
0341デフォルトの名無しさん
NGNGAAで語るFSAとか。ネタよろしこ。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGいいんだよ。気にしないで。
まさゆきが嬉しそうだから。
286 名前:ひろゆき ?3SHRUNYAXA 投稿日:03/01/08 17:56 ID:MVMcp6tb
♪___
♪ ヽ=@=ノ¶ タイーホ
ヽ( ・∀・)ノ タイーホ
( へ) ミンナ タイーホ
く タイーホ
♪ ___
♪ヽ=@=ノ ¶ タイーホ イッテヨシ
ヽ(・∀・ )ノ タイーホ
(へ ) オマエラ モウ
> ダメポ
0345デフォルトの名無しさん
NGNGID:fh6iaOXC (゚∀゚)アヒャヒャ
0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG0348デフォルトの名無しさん
NGNGまあ、遊びでしかないからね。
仕事の合間にやってるだけだろ。
0349デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNG自分の発言に責任を持つのは当然だと思います。
0352デフォルトの名無しさん
NGNGよろしくお願いします。
0353デフォルトの名無しさん
NGNGだれの目から見てもどうかではなく、裁判所が判断してどうかってこと
なんだよね。
だから、「名誉を毀損した」ってことが確定するのは、判決した瞬間なのよ、、、
0354デフォルトの名無しさん
NGNGだれの目から見てもどうかではなく、裁判所が判断してどうかってこと
なんだよね。
だから、「名誉を毀損した」ってことが確定するのは、判決した瞬間なのよ、、、
0355デフォルトの名無しさん
NGNGこいつって・・・
0356デフォルトの名無しさん
NGNG遊び場作ってやって遊んでる奴の為に訴えられて金払わなきゃいけ
なくなったら止めたくもなる罠!
0357デフォルトの名無しさん
NGNG|・∀・)♪ おあよーおあよー!
|⊂ ノ
|` J 朝だす、みんな起きるだす!!
0358デフォルトの名無しさん
NGNG28■■■■■■■■■■■■■■■■■■■■■■□□□□□□□□
27■■■■■■■■■■■■□□□□□□□□
26■■■■■■■■■■■■■■■□□□□□□□□□□□
25■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□
24■■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□□□□□□
23■■■■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□□
22■■■■■■■■■■■■■■■■■□□□□□□□□
21■■■■■■■■■■■■■■■■■■■■■□□□□□□
20■■■■■■■■■■■■■■■■□□□□
19■■■■■■■■■■■■■■■■■■■■■■■■■□□□□□
18■■■■■■■■■■■■■■□□□□□□□
17■■■■■■■■■■■■■■■■□□□□□□□□□□
16■■■■■■■■■■■□□□□
15■■■■■■□□□□□
14■■■■■□□
12■
09■
06■
0359デフォルトの名無しさん
NGNGttp://dailynews.yahoo.co.jp/fc/computer/2channel/
のアンケートで5を選びませんか? 目標50%
0360デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNGそれじゃあ匿名掲示板の長所を否定することと同義
じゃないか。俺の言ってることに賛成といいながら
IP記録にも賛成とはどういうことだ。
0362デフォルトの名無しさん
NGNG質の低い板を生かしておくのはどうしてなんでしょうか?
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG誰も何も言えない時代が来そうな伊予柑
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNGたしか漫画だった。なんってやつだったけなぁ
0367デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGバカ丸出しだなw
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNGそこからの権力維持
これを打ち破るのが巨大掲示板群
2ちゃんねるだ
警察は言論統制を目的に2ch攻撃の手を緩めない
個人情報保護法
当面は反米野郎を血祭りにあげるのだろう
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGもうメガサイトなど誰もやらない・やれないんじゃないか?
0375デフォルトの名無しさん
NGNG荒らされる前までのリンク。
0376デフォルトの名無しさん
NGNGもう予告は止めた方が良いだろうね。
0377デフォルトの名無しさん
NGNG0378山崎渉
NGNG0379山崎渉
NGNG0380デフォルトの名無しさん
NGNG2000年の6月からの長寿スレ なのに残念です。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNGたら教えてください。英語か日本語のやつで。処理系のソース見てるんだけど
難しくて。
0384デフォルトの名無しさん
NGNG概要を理解することはできても永遠に「作れない」気がする。
というわけで、何のソースを見てるのか分からないけど、
ソース解析を侮らずにしっかりやるのがよいと思われ。
0385デフォルトの名無しさん
NGNG理論が先か実践が先か・・・
0386デフォルトの名無しさん
NGNGソースコードを原始言語、コンパイラによって得られたアセンブラコードを、
目的プログラムと呼ぶ、と書かれているのですが、この3者の関係って、
変換系=アセンブラ、原始言語=アセンブラコード、目的プログラム=オブジェクトコード
にも当てはまるのでしょうか?
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNGコンパイラとは呼ばないんじゃないかなあ。
よく分からんけど。
0389デフォルトの名無しさん
NGNG良い方法はありますか?
例えば、
<data><name>aaaa</name><size>2000</size></data>
のような文字列からaaaと200を取り出したいんですけど・・・
よろしくお願いいたします。
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGそれはXMLのDOM使った方がいいんでないの?
だとするならスレ違いじゃないかねえ。
0392デフォルトの名無しさん
NGNG取り出すだけなら、
1. < が現れたら > まで読み飛ばす
2. > が現れたら < までを出力とする
3. ただし、半角スペース、タブ、改行は読み飛ばす
0393デフォルトの名無しさん
NGNGレスサンクスです。
私XMLのDOMっていうのはよく分からないんです。
下降再帰の手法でできるのかなぁ・・・とか思ったんで。
>>392
やはりそのようにやるしかないんでしょうか・・・
ファイルが複雑になったり、ファイルの形式が変わったりすると
パーサを書くのが嫌になってきてるんで・・・
クラスが10種類ほどあるんですが、その種類によって全部構造が違うんです。
ファイルから読み込むと同時に、オブジェクトに値をぶち込みたいんですけど
やはりこういうプリミティブなやり方しかないんですね・・・
明日のことを考えるとちょっと鬱になってしまいました・・・
0394デフォルトの名無しさん
NGNGこのスレの上のほうで一度でているが
上昇解析な手法がある。
https://sourceforge.jp/projects/frogger/
再帰だと解析終わるまで戻ってこないから、
用途が限定される。こちらは一文字単位で
戻ってくるからエディタなんかでも使えそ。
0395デフォルトの名無しさん
NGNGなるほど、そういうのもあるんですか・・・
でもなんか散雑な感じで、夜中の思考力ではなんだか分かりませんでした・・・
スミマセン・・・・
つまりはxmlを解析してパースツリーを構築するものですよね?
0396デフォルトの名無しさん
NGNGそうでふ。
プログラム見れば分かるけどすげー短くて
ボーゼンとするほど単純。
0397デフォルトの名無しさん
NGNGそれって上向き解析なの?オートマトンでツリー作ってるように見えるんだけど。
0398デフォルトの名無しさん
NGNGプログラムの書き方が上向き解析のスタックを
使う要領でノードを操作してる上向き風味。
オートマトンは字句解析だけ。
0399デフォルトの名無しさん
NGNGどんどん部分木作ってるわけでしょ。
あとオートマトンも字句解析の一つ上で使ってるように見える。
どうでもいいけど。
0400デフォルトの名無しさん
NGNGキリ番getするための良い入門書はありますか?
0401デフォルトの名無しさん
NGNGお前が書け。
0402デフォルトの名無しさん
NGNGメモリリーク起こします。ダンプされたのを見てると、どうもyytextの中身っぽい
文字列が…。これってflexの仕様でつか?
>>191の言ってるスレッドセーフ云々っていうのも気になりますた・・・
0403山崎渉
NGNG0404デフォルトの名無しさん
NGNGhttp://www.amazon.com/exec/obidos/tg/detail/-/0130257869/
この本読んだ人はいますか?いたら感想聞かせてください。
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNGポインタというか aliasing が邪魔。
0407デフォルトの名無しさん
NGNGamazon のレビューを見る限り、非常に好意的だけど何か不満な点でも?
日本人で実際に読んだ人に背中を押してほしいと言うことですか?
0408デフォルトの名無しさん
NGNGなんの最適化か知らないけど、追跡がしにくい。
実装する側の思考をすればわかると思うけど。
アドレスの同一判定までしてるコンパイラってあるのかな。
0409デフォルトの名無しさん
NGNG一応、解析して指されている対象を絞り込む技法はあります。
解析コストと精度でトレードオフはありますが。
実行時のアドレスの同一性を考えるのではなく、
あるポインタ型変数についてその変数に代入するように
プログラム上でメモリ割り当てた部分の集合を計算します。
なるたけ集合が小さく絞れれば精度が高いと考えます。
解析に当たっては各手法の間で
関数呼び出しをまたいでの解析をするかしないか、
関数(メソッド)内のコントロール/データ・フローにどこまで配慮するか、
オブジェクト指向言語でメソッドの呼び出しの際のオブジェクトに配慮するか、
などの様々なオプションがあります。
こうやって得られたPoints-toグラフは関数(メソッド)やスレッドなどからの
Escapeを調べたりするのに使えます。
興味のある方はPoints-to analysisとかAlias analysisというキーワードで
ググって見てください。
0410デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
訳されている。
0411デフォルトの名無しさん
NGNGlex/yacc使用してInterpreterパターンで計算機を作ろうと思ったんですが、コンパイルすらできません。
lexファイル内のcaseが不正だとか言ってきます。(他にもエラーがでてきますが…)
どこが間違ってるのでしょうか?ちなみに"Expression.h"に間違いはないはずなので省略しています。
=========================[calc_lex.l]
%{
#include "Expression.h"
#include "calc_yacc.cpp.h"
%}
%%
([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?){
yylval.exp=new Number(atof(yytext));
return NUMBER;};
[ \t] ;
. {return yytext[0];};
%%
0412411
NGNG==========================[calc_yacc.y]
%{
#include "Expression.h"
%}
%union{
Expression* exp;
}
%token <exp> NUMBER
%left '-' '+'
%type <exp> expression
%%
statement:
expression {printf("= %g\n", $1->Evaluate());};
expression:
expression '+' expression {$$=new MathExp($1, $3, MathExp::ADD);}
| NUMBER {$$=$1;};
%%
main(){yyparse();}
0413デフォルトの名無しさん
NGNG関数のオーバーロードの実現方法がわかりません。
引数だけのオーバーロードなら、再帰下降の各関数が返す関数呼出しノードがひとつに絞れそうな気もするのですが
返り値もオーバーロード可能にしようとすると、もうどうやっていいものか。
何かいい方法はありませんか?
考えている仕様:
int A();
string A();
void B(int);
があって B(A) としたら上のほうの Aが呼ばれるようにしたい。
もうひとつvoid B(string); があれば曖昧エラーを出す。
0414デフォルトの名無しさん
NGNGそれは無理じゃないの? だってさ、
void B(int);
void B(string);
の2つが定義されたらどうするの? つまりマッチングをどっちで取るの?
0415デフォルトの名無しさん
NGNG413の最後の行に書きましたように、曖昧エラーを出したいと思います。
勿論実用的には、解決を行えるように、明示的に型を指定する構文が必要になるでしょうが…。
他の言語でも、F(int, double)とF(double, int)があったときにF(1,1)なんて呼ぶと曖昧エラーになるので
返り値でも曖昧エラーを出すことは多分許容範囲内だろう、と。
0416デフォルトの名無しさん
NGNG0417414
NGNG再帰下降という事は、
代入する変数の型
関数の型
先行演算子の型
が先に判るわけだから、それをグローバルにとってスタック上に保存しながら使ったら?
0418413
NGNGありがとう。ええと、それですと
void A(int);
void A(string);
int B(int);
string B(string);
bool B(bool);
A(B("XXX"));
で、Aの時点で、期待する型はintとstring
Bに入ったら、boolでは無いことがわかる。しかしintとstringのどちらかは区別が付かない
ということで両方を候補に入れ、Bもやはりintとstringを期待して、
で定数の解析に入ったら、定数はstring
Bに戻って、B(string)が選ばれたことが確定
Aに戻って、A(string)が選ばれたことが確定
こんなイメージ…ですよね?合ってます?
0420デフォルトの名無しさん
NGNGえ、特に問題なさそうだけど?
>Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ
なんでそう思ったの?
0421413
NGNGstring* A();
int* A();
*(A()) = 10;
再帰下降だと、A()を解析している時、その後代入されるのが整数なのか文字列なのか、
それ以前にそもそも代入されるのかどうかもわからないため。
(代入もされず値としても使われないなら曖昧エラー出さないといけませんし)
取り敢えず構文木を作るとこまで書きました。これから>>418の実装に挑戦します。
もっと手っ取り早い方法があればいいのですけれど。
0422デフォルトの名無しさん
NGNGコンパイラーの勉強が役に立つのでしょうか?
なにからやればいいのかさっぱり分からないので、なにか指針でもアドバイスお願いします。
0423422
NGNGPerl や PHP のような大規模な言語ではないのだけど、コンパイラに関する資料が役に立つみたいですね。
まぁ、またーりとがんばってみます。
0424デフォルトの名無しさん
NGNG作り方が紹介されてますよ。コードも web 上にありました。
0425ろうひ男爵
NGNGどの程度のことがやりたいんですか?
バッチファイルみたいな物
ワープロなどの実用ソフトのスクリプト言語
ADVなどのシナリオスクリプト
ゲームの敵移動ルーチンのスクリプト
0426413
NGNG代入の右辺と左辺のどちらを先に解釈するかという問題が残ります。
(421の例で右辺もoverloadされた関数呼び出しだったら、どちらを先に解釈することもできない)
マジにやろうとすれば、後は、可能性を全部列挙してマッチングを行うぐらいしか無いかも。
Adaコンパイラのソースが見たい…(gccのAdaならもしかして見える?)
まあ、自分のやりたかった範囲ではできたので、わたくし的にはOKなのですが。
元々は配列のCopy On Writeをオーバーロードで解決したかったので。
*(A(1)) = 10; // int * A(int); が呼ばれ、メモリ領域を複製する
B = *(A(1)); // int const * A(int); が呼ばれ、複製はしない
0427422
NGNG> ワープロなどの実用ソフトのスクリプト言語
たぶんこのあたりかと。
マクロ記述言語の部分だけを取り出して、シェルスクリプトみたいに、
インタラクティブに遊んでみたいなぁーと思って。
実用ソフトのスクリプト言語といっても、emacs lisp や VBA みたいに大掛かりなものでもありません。
1000行くらいで言語全体を一通り説明できてしまうくらいの小規模な言語です。
というか、その前にCを勉強しないと、どうしようもないみたいですね。
0428ろうひ男爵
NGNGC言語でなくても書けることは書けますが、
再帰が出来る言語の方がらくですよ〜。
(全部配列でやると大変です)
昔のBASIC見たいに、
変数を宣言無し、
関数を無くしてサブルーチンのみ、
PRINTなどの実行命令は、随時追加していく、
ブロック化の為(制御命令)には、
IF-ELSEIF-ELSE-END
WHILE-BREAK-END
SWITCH-CASE-BREAK-DEFAULT-END
{}は使わない
等のシンプルな言語なら、ベタで組んでも
1000どころか200行ぐらいで出来ますよ〜。
0429デフォルトの名無しさん
NGNG初心者の質問に丁寧に答えて下さっていますが。
0430デフォルトの名無しさん
NGNG0431札幌市立中央図書館職員
NGNGちゃんと返せよ
0432デフォルトの名無しさん
NGNG書き込みとかすんなよ。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGいえ、単なるプログラマーの会社員です。
そういっていただけると嬉しいですが、
自分程度の知識だと、このスレの強者にはかなわないっす。
>>430
2〜3週間は借りることになるのでは?
自分は風呂場で1回読むのに2ヶ月かかりました。
がんばって読破してくださいね〜。
0435430
NGNGはい。期日までにちゃんと返します。
>>432
はい。綺麗な本なので、汚さないように気をつけます。
>>433
ぜひお越しください。
>>434
2週間の期間では、ちょっと読破できそうにないかも。
連続で借りることも出来るけれど、それをするくらいなら
自分で買う主義です。まだ、買うかどうかはわからんけど。
とにかく、勉強します。
0436デフォルトの名無しさん
NGNG借りた本を風呂で読んではいけません。
0437ろうひ男爵=434
NGNGこりゃ失礼。
自分は自腹で買いましたよ〜。
昔、X68000の本とかでほしいときには無くなってたことが多々あったので必ず買ってます。
最近は、トッパンの本を買いあさりました。
0438デフォルトの名無しさん
NGNGそれとさ、ここあんたらの日記サイトじゃないんだから、
あんま関係ない話振るのもやめてくれ。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNGhttp://life.2ch.net/yume/
0441デフォルトの名無しさん
NGNG参考になりそうな比較的小さい処理系ってありませんか?
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG昔アセンブラで作ったときはたしかコア部分は30バイトくらいだった。
もちろんそれ以外にprimitiveが必要だけど。
0445デフォルトの名無しさん
NGNG一目ソース見ただけでは何してるのかわかんないと思うけど、
どうよ?
0446デフォルトの名無しさん
NGNGとりあえず、手続きの構造化というのを初めて知ったのはForthだった。
今でもかなり小さな関数に分けてしまう。
0447デフォルトの名無しさん
NGNGCLikeScript -> ForceWord コンパイラとか
0448デフォルトの名無しさん
NGNGありますか???
0449デフォルトの名無しさん
NGNGPerl
0450デフォルトの名無しさん
NGNGマイナーだけど、コンパクトだから読むにはいいかも。
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNGbash,csh とかは?
Ruby みたいかどうかは知らないけど、、、
0453デフォルトの名無しさん
NGNGなんか新しいのが無い???
0454デフォルトの名無しさん
NGNGruby参照してるんだから、真珠は無いだろう〜(w
0455デフォルトの名無しさん
NGNGつか言語仕様が小さい。アプリ組み込み向けだし。
開発は・・・使うためでなく読むためなら別にどうでもよい(藁
0456デフォルトの名無しさん
NGNGなんか、時々(ほんの)聞くけど。。。
0457デフォルトの名無しさん
NGNGメジャーな言語なんてほんの一握りだからねえ。
0458デフォルトの名無しさん
NGNG漏れも作ろうかなぁ。。。Uma
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG内部でluaやpythonを使ってるのをちょくちょく見かけます。schemeもあったな。
ちょっと前だと例えばQuake(初代)では速度の要求される3Dエンジン部分をC/ASMで、
キャラ固有動作とかダメージ計算とかのゲーム/シナリオ部分をC-likeな独自言語でやってたわけですが、
そういう局面で既存のスクリプト言語がつかわれってるぽい。
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGどこがどのように?
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNG日本発だから!
0465デフォルトの名無しさん
NGNGエラーメッセージがでないようにする) のが大変だ。
0466デフォルトの名無しさん
NGNGこれって大変ですか?
0467デフォルトの名無しさん
NGNG> これって大変ですか?
最初からそんな感想を抱いているようでは、新言語を作るのは無理だと思われ。
0468デフォルトの名無しさん
NGNG式の展開さえ出来れば、あとは出来たも同然。
問題は「使える」言語にしようと思うと、ライブラリの整備が
大変な事。
0469デフォルトの名無しさん
NGNGなるほど、参考になった。
rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ。。。
0470デフォルトの名無しさん
NGNGCOMコントロール使えるようにしとけば VBAのコントロールそのまま使えるから楽だよ。
あるいは、ゲーム用ならHSPのDLLを使えるようにしとくとか
0471デフォルトの名無しさん
NGNGrubyは美しすぎる言語仕様(少なくとも日本人の感性からすれば)が大きいと思う。
0472デフォルトの名無しさん
NGNG比較相手がPerlなら同意だが
0473デフォルトの名無しさん
NGNGネタニマジレスカコワルイ
0474デフォルトの名無しさん
NGNG回避方法はないのでしょうか?
VCではコンパイルできるのですが( ファイル名は y.tab.cpp に替えてコンパイル)。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGrubyは愛国精神からよく使われるのです
0477デフォルトの名無しさん
NGNG確かに、rubyの場合、
「まつもと?ふーん日本人がやってるんだ。ちょっといじってみよかな。」
と思って始めたっての、俺の場合はあるよ。
で、逆に思ったんだけど、アメリカ(のようなコンピュータ大国の)人が、
「ふんふんよさそう。ん?なんか変な名前の作者だな。
おぃ{スカンジナビア製,インド製,日本製,韓国製,中国製...}かよっ!」
とか感じてやめちゃうことってあるのかな?それとも多民族国家だから
そんなの全然キニシナイ!のかな?
0478デフォルトの名無しさん
NGNG他の国の製品とは若干扱いが違う。
それに助けられているかも。
0479デフォルトの名無しさん
NGNG名付けたらしい。
大日本帝國言語ルビー万歳!
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNGPearl の次の誕生石だから。
寝たに混じれ酢。
0482デフォルトの名無しさん
NGNGyyerrlab1:
#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
__attribute__ ((__unused__))
#endif
goto yyerrlab2;
っていうコードを吐くのですが、g++(gcc version 3.2 20020927 (prerelease)) で
コンパイルすると
parse error before `goto'
といってコンパイルが止まってしまいます。
ふみゅ〜ん。
0483デフォルトの名無しさん
NGNGいるのですか???
素朴な疑問でスマソ
0484デフォルトの名無しさん
NGNG英語が通じそうにないから敬遠するというのはあるかも
0485デフォルトの名無しさん
NGNG再帰下降でガンバレばいらないと思うよ。
0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNGhttp://www.geocities.co.jp/SiliconValley-Oakland/8522/data/059.lzh
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/giko.ico
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikob064.lzh
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobas.dcr
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc02.lzh
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc03.lzh
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc04.lzh
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/LucasTest.txt
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/mformula.txt
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/Script.txt
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/ugikoscr.txt
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNG経験者の方にお聞きしたいのですが、下のサンプルコードのようなものですと、パーザを実装するのは難しいのでしょうか?
//宣言部
private property string greeding head = "hello, ".
public method say greeding (string name = "world") {
output stream std out = system consore standerd out.
this greeding head + arg name + "." outln to std out.
}
//使用する側のコードを一部抜粋
this say greeding ">>1".
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGgreeting を greeding と間違って書いてもちゃんと認識
してくれるようなシステムを作るのは難しい。
0494デフォルトの名無しさん
NGNGC言語版
http://page.freett.com/gikob/gikobw00047.zip
C++版
http://page.freett.com/gikob/gbtl-beta3.zip
0495デフォルトの名無しさん
NGNG勝手にそんなことされると意図と違って認識されたときにものすごく発見困難なバグの原因になりそうだ
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG例えば事前にstring nameという定義があったりすると、
private string name x. とか書かれると、「string name」「x」なのか「string」「name x」なのか曖昧なので、
識別子に空白を含められるようにするなら、区切りの記号か予約語を入れるようにしないと。
普通ならPascalっぽく ":" 使うところだけど、英文ライクということなので、isなりasなり入れれば?
private property greeding head is string = "hello,". とか。
もっとも、曖昧さも含めて楽しむような仕様にするなら、それはそれで。
0498デフォルトの名無しさん
NGNGまぁ、曖昧な処理にはいいかも?(w
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG/ノ 0ヽ
_|___|_
ヽ( # ゚Д゚)ノ 下がってろウジ虫ども! 。
| 个 | 訓練教官のハートマン先任軍曹が500をgetする!
ノ| ̄ ̄ヽ
∪⌒∪
>>501 貴様!俺の海兵隊をどうするつもりだ!
>>502 口でクソたれる前と後に「サー」と言え!
>>503 ふざけるな!大声だせ!タマ落としたか!
>>504 貴様には両生動物のクソをかき集めた値打ちしかない!
>>505 アカの手先のおフェラ豚め!
>>506 まるでそびえ立つクソだ!
>>507 タマ切り取ってグズの家系を絶ってやる!
>>508 じじいのファックの方がまだ気合いが入ってる!
>>509 ベトナムに行く前に戦争が終わっちまうぞ、アホ!
0501デフォルトの名無しさん
NGNGろくな言語ないよなぁ〜、
コンパイル言語のときは、Cがあったけど
なんていうかパールは暗号みたいだし、
AWKはフィルタ専門だし、(SEDも)
ルビーはOOだし、
なんかみんな極端なんだよねぇ。。。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNG> そういえば、最近はスクリプト言語の時代らしいんだけど、
> ろくな言語ないよなぁ〜、
> コンパイル言語のときは、Cがあったけど
(w
> ルビーはOOだし、
これがオチですか?
0504デフォルトの名無しさん
NGNGじゃあどんなのがいいんだよ
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG純粋関数型のスクリプト言語
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNGwin用じゃん(w
os2用もあるらしいが。。。(w
畑違い、ハゲ稿!
0510デフォルトの名無しさん
NGNGヨサゲだけど、絶版ですか?
ちょっと残念(本)
0511デフォルトの名無しさん
NGNGなんか難しい論文ばかりで、学者○カ向け?
0512デフォルトの名無しさん
NGNG0513501
NGNG0514デフォルトの名無しさん
NGNGスペルミスの多さからしてネタだろ。
0515デフォルトの名無しさん
NGNGcygwinのが1.875bで手元では一番新しかったんで試してみたけど、そんなコー
ドは吐かないな。
0516デフォルトの名無しさん
NGNGBasicインタープリターは別なところでできてるんだけど、アイデア暮れ。
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGライブラリ用意する手間の方がでかい。特にOO系言語のクラスlib
なんてもうみてらんない。シコシコ使うかどうかもわからんクラス階層
作ったりしてんの。バカみたい。クソインターフェース量産したりしても
誰もつかわねえよ(ププドキュメントも用意しないとわかんねえし、
忘れるし。そんなことしてる暇あったらデバッガ作れよ。
結局クラスがクソなら誰もつかわねえって。
時間の無駄だっつうの。
0520デフォルトの名無しさん
NGNGJava の仕事がメインになったけど、Cばかりを組んできたから、うまく対応できなくて困っている
老人ですか?
MFC はともかく、Javaは、ライブラリーの規模を考えれば、うまく設計されていると思いますが?
0521デフォルトの名無しさん
NGNG言語はどうでもいい。
その分野を最も得意とする言語で書く。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGなんか、パールとルビーの宝石コンビじゃいやだなぁ〜(w
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGスレタイトルがわるい
0526デフォルトの名無しさん
NGNG> >>524
> スレタイトルがわるい
分かりやすくていいじゃないの?
何が不満なの?
0528デフォルトの名無しさん
NGNG☆^〜^★「探し物とくとくページ」☆^〜^★
http://sagatoku.fc2web.com/
あなたの探し物きっとみつかります
ほぼ毎日 新着情報追加 毎日更新
新着情報メールでお知らせ
0529デフォルトの名無しさん
NGNGここは言語仕様でなく、
実装について語るスレだったはずなんだが・・・
0530デフォルトの名無しさん
NGNG>前スレ1より
>>yaccやlexの使い方やら言語仕様やらの話題。
って>>1にかいてあるよ?
0531デフォルトの名無しさん
NGNG529ではないが、どうにも最近は厨が来るから次スレから抜きにしないか? > all
必要なときは関連して話題になるだろうし、そういう状況なら厨が入り込む余地はないだろう。
ここで在っていいのは宗教論争ではなく実装に関連した言語仕様の話題のほうがいいと思う。
0532デフォルトの名無しさん
NGNGまあ、次スレまで行くのかどうか問題だが。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/prog/1034581899/
0536int
NGNG(中間言語を含め)内部で事前コンパイルしてるものなのでしょうか?
0537デフォルトの名無しさん
NGNG0538int
NGNG実行しているってことですか?
0539デフォルトの名無しさん
NGNG大抵は一括変換だけど、
ある単位(関数や変数など)ごとに変換していくのもあるよ
0540デフォルトの名無しさん
NGNG∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!こんなのを発見シマスタ!
/ / |
/ /| / \ http://saitama.gasuki.com/sinagawa/
__| | .| | \
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄\ \_____________
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNG自分はあきらめて空の unistd.h をシステムインクルードディレクトリに入れてしまいました。
0543int
NGNG文字通り1行毎に逐一変換&実行している言語はないのでしょうか?
なんか、そのほうがインタプリタ(スクリプト)というイメージに
ぴったりなんですが。。。
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNGsh
0546ろうひ男爵
NGNGN88BASICも、入力されたときに中間コードに落とすんじゃなかったですっけ?
>>543
GOTOなどのジャンプ先のアドレス解決を毎回やると、
検索だけで重くなってしまうので実用的ではないのでは?
0547デフォルトの名無しさん
NGNG自分の場合は、スクリプトとして自働実行する以外に、コマンドラインのインターフェイスを
持たせたいときは、そういうことをする場合もあります。
ただ・・・
構造化された構文がこれだと作りにくいんだ、
だからある程度派手な構文を持つ場合はパースするか、コマンドラインだけ文法限定して
別パーサーで作っていたりします。
ちなみに、古いベーシックなんかが一行入力時にそのつどパースしてるんじゃないかな。
いまどきの文法はちょっと苦しいかも。
0548int
NGNGいろいろとありがとうございました。
0549デフォルトの名無しさん
NGNGだからshのソース嫁。gotoはないけどブロックはある。
0550デフォルトの名無しさん
NGNGまあできんことは無いんだが・・・
たんに大変だなとか思ってね。
0551デフォルトの名無しさん
NGNG実行時にsyntax errorが出るくらいだから、それはないと思う。
0552デフォルトの名無しさん
NGNGたしか予約語を中間コードに置き換えるようなことはやってたと思うが。
でも構文チェックをしたり構文木を作ったりは当然しない。
0553デフォルトの名無しさん
NGNGN88しか知らないけど、runした瞬間に出るエラーもあるよ。
for〜nextの対応関係だったかなぁ。
0554デフォルトの名無しさん
NGNGそれともデファクトスタンダードな仮想マシンがあるの???
0555デフォルトの名無しさん
NGNGそんなもんは無いです、当時は中間コードの利用目的は高速化とプログラムのメモリー占有サイズの削減が目的。
わずか数キロバイトにプログラムを収めるのにTEXTデータは大きすぎたのです。
0556デフォルトの名無しさん
NGNGエラーメッセージを吐き出しますよね。
LALR(1)で解析してて、あんなことってできるもんなんですか?
yaccとかだと、ちょっとerrorを突っ込んだだけでconflict起こしますよねぇ。
LR(1)とかだったらそこいらじゅうに、擬似シンボル埋め込めばできなくも
なさそうな気はしますが、、、
そのへんってどうなんでしょう?
0557デフォルトの名無しさん
NGNGTHANX
0558デフォルトの名無しさん
NGNG「異常に的確なエラーメッセージ」の例を挙げないと、
答えづらいと思うよ。
0559デフォルトの名無しさん
NGNG異常に典型的なミスを犯しているだけでは?(w
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNGのどこが的確なメッセージなのかと、小一時間t(ry
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG>つまらんこと聞きますが、まぁバグはあるにせよ、VC++って異常に的確な
具体的にどの辺が的確なエラーメッセージだと思ったのか、書け。
0564デフォルトの名無しさん
NGNG煽りは死滅スレでやれや
0566デフォルトの名無しさん
NGNG>>558がもう指摘してるじゃん。
0568デフォルトの名無しさん
NGNG毎日見ていない人もいるだろう、そのうち書かれた時に理由を考えればいい。
ただ煽るだけで意味のないことするな。
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNGいきなり32ビットとはしてるものはありますか?
0571デフォルトの名無しさん
NGNGJava。全て4バイトがベース。
0572デフォルトの名無しさん
NGNG∧_∧
( ´∀`)< ぬるぽ
ぬるぽ 投票ヨロシク
http://pumpkinnet.to/ranking/words/
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGバイトコードとか仮想マシンの説明をしてるものってある?
0575デフォルトの名無しさん
NGNGオライリがバーチャルマシン仕様の解説本出してるよ。
0576デフォルトの名無しさん
NGNG本屋で立ち呼んだ記憶があるからあるんじゃない?
0577デフォルトの名無しさん
NGNGそこまでやるのはちょっと、、、という
のなら、そもそもVMの勉強なんてしなくても
いいんじゃないの?
0578デフォルトの名無しさん
NGNGhttp://www.amazon.com/exec/obidos/tg/detail/-/0130959901/
にちょっとだけ説明があります。
オペコードが1バイトで全体としては1〜3バイトのがほとんどだそうです。
http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html
のどこかに説明あるかと思いましたが、発見できませんでした。
見落としあるかもしれません。
あとamazon.comをjava virtual machineで検索すると7冊ほどひっかかりますね。
http://www.amazon.com/exec/obidos/search-handle-url/index=books&field-keywords=java%20virtual%20machine&search-type=ss&bq=1
0579デフォルトの名無しさん
NGNGMSDNを見ますと「IActiveScript」と言うのが在るのですが,
いまいちサンプルが乏しくて困っています.
0580デフォルトの名無しさん
NGNGスレ違いじゃないか?
0581579
NGNGインターフェイスなのですか?
今考えているソフトでWSHスクリプトファイルをユーザに用意してもらい,
そこに書いているスクリプトを実行することによってアプリケーションの
挙動を変化させたいと思っています.
WSHあるいはJSCRIPT,VBScript等をプログラム上でロードして実行させる
方法が知りたいです.
よろしくお願いします.
環境:
VC++ 6.0
IE Ver 6.0.2
0582デフォルトの名無しさん
NGNG何のソースコードを読めばいいの?
VMのソースコード?それって公開されてるの?
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/490090063X/qid%3D1049128711/250-2465643-1535410
http://www.amazon.co.jp/exec/obidos/ASIN/489471356X/qid=1049128646/sr=1-1/ref=sr_1_2_1/250-2465643-1535410
VMはオープンソースのプロジェクトがいくつかあったはず。
GNUにもあった気がする。
俺が知ってるのはOSがマイナーなんで言ってもしょうがない。
</死ね>
0585デフォルトの名無しさん
NGNGhttp://www.amazon.com/exec/obidos/ASIN/3540420886/qid=1049128836/sr=2-2/ref=sr_2_2/104-8886811-5842366
全部読んだわけではないが書き方が変わってるんでVMの勉強としては素直に薦められない。
http://www.amazon.com/exec/obidos/ASIN/0201432943/qid=1049128836/sr=2-1/ref=sr_2_1/104-8886811-5842366
は上にあげたとおり邦訳が出てるんでそっちを読め。訳に問題はない。
あとの洋書は大体到着待ち。
</死ね>
0586デフォルトの名無しさん
NGNGwww.kaffe.org
とか…
0587デフォルトの名無しさん
NGNGところで、JAVAのVMがやはり事実上のスタンダードになりつつあるのでしょうかね?
0588デフォルトの名無しさん
NGNGでもCLRとかParrotとか、未来の可能性は閉じてはいない。
0589デフォルトの名無しさん
NGNGなんの事実上のスタンダード?
VMといえばJavaのVMってことか?
0590デフォルトの名無しさん
NGNGやり方が分かったら連絡してくれ.
0591デフォルトの名無しさん
NGNGスタンダードというか、参照・参考にするのに比較的お手軽なのは確か。
0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG0594名無し
NGNG0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNGそだね最初はNetscape社のLiveScript。でJavaが現れて
なんとなく名前をJavaScriptに変更。
http://www.howtocreate.co.uk/jshistory.html
つうかこれくらいはgoogleですぐ見つかるんだが…
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGばーか
0599コンパイラを勉強するには?
NGNGこんな僕でも、コンパイラの事を理解する事ができるでしょうか?JavaCCと言うのをやろうとしているのですが、
これをやるには、Java以外の知識よりもプログラム全般に詳しくないとできないですよね?
『おまえには、まだ無理だ。そんなんじゃJavaCCなんて理解できるはずはない。』なんてことは、皆さん思いませんか?
それとも、私ほどの経験でもJavaCCを理解する事は可能なんでしょうか?
何年かかっても良いので、最良の道を行きたいと思っています。
それには、やはりC言語などからプログラムというものを理解し、一般のコンパイラ事情を知ってから、JavaCCに行った方が良いのでしょうか?
よろしくお願いします。
0600デフォルトの名無しさん
NGNG0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG個人的にゃJavaって泥臭いとこを隠してるから一回Cでそういう所を
見た方がいい気がする。
UNIX使えるならシェル書いてみるのはどうよ。
0603デフォルトの名無しさん
NGNGなんで遠回りすんの?>602
0604デフォルトの名無しさん
NGNGただ、作ろうとしてるモンはJavaでもCでもない「別の言語」
だから他の言語との違いを知っとった方がいいかと思う。
0605デフォルトの名無しさん
NGNG持たれられた気がするな…
マクロとかだとそっちの方が早いか?
0606デフォルトの名無しさん
NGNGC yacc lex は書籍が多いから、それがいいかもね。
とりあえず C をマスターしておいて、整数だけbasicからjavaへのトランスレータとか作ってみたらどう?
でき上がったものは無意味だけど、やり方は理解できると思うよ。
0607デフォルトの名無しさん
NGNG最終的に機械語やバイトコードに落とす必要は必ずしもないのだし、
そこまでいくには道のりは遠いので、まずは構文解析できるように
なればいいのでは。
ただ、言語を作るのはただツールをいじっていればなんとかなるものでもない。
きちんとしたものを作れるようになるには知識が必要なので、しっかりした
解説を読むべし。
Java + JavaCC で書いてあるwebなり本なりが見つかればそれでもいいし、
見つからなければCを覚えて本を読む方がいい。理論がわかればツールを使うの
はJavaCCだろうがyaccだろうがたいしてかわらない。
過去ログを見ればweb上の講義ノートもあったと思う。(前スレだったかも)
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNGまだLISPでもやってた方がいいぞ。
0610コンパイラを勉強するには?
NGNG大変参考になったのですが、やはり難しそうですね。しかし、生まれつき、計算とかが
好きなものですから、話しを見ているだけで、とてもわくわくしてきます。
やはり、いきなり、JavaCCに入るのではなく、他の方から入っていく事にします。
もっといろいろ読みたいので、良ければみなさん、またいろいろ書いておいてください。
よろしくお願いします。
0611デフォルトの名無しさん
NGNGyacc lex なら、そんな難しいものじゃないから、習うより馴れろでガンガンいけばいいよ。
ただCは押さえて置かないと進むものも進まないから、Cはがんばってね。
多分なじみの薄い物で参考資料も少なく、yacc を使うにあたって必要不可欠なCの概念は union だと思います。
そこは気合で行ってくれ。
0612コンパイラを勉強するには?
NGNG0613デフォルトの名無しさん
NGNG基本的には、引数付の関数呼び出しと変数への値代入程度
で済ませたいけど、制御構造も作らざるを得ないかも・・・。
まあ、ちょうどよい勉強と思ってやってみるつもりです。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNGアプリケーション組み込み物のスクリプトだと既存という訳にはいかんよ、作るしかないです。
仮にソースが取得できたとしても、殆どがGPLに侵されたコードで再利用は不可能だからね。
0617デフォルトの名無しさん
NGNGperlもpythonもrubyもtclもGPL以外での利用を認めてるが。
0618デフォルトの名無しさん
NGNGたとえば
http://www.ruby-lang.org/ja/LICENSE.txt
とかは?
近は過激な運動家がいたりして危ないから、そういう報流すのは良くないよ〜
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGお仕事用というのだから、組み込みよりもソースの公開が問題なんじゃないの?
0622デフォルトの名無しさん
NGNGGPLと互換性のないライセンスのソフトに組み込める==ソース公開の義務がない(スクリプトエンジン以外は)
0623デフォルトの名無しさん
NGNGその解釈は結構きわどいと思うな・・・
0624デフォルトの名無しさん
NGNG手を加えたくなってもフィルタで済ます。
0625デフォルトの名無しさん
NGNG> http://www.ruby-lang.org/ja/LICENSE.txt
「または以下に示す条件で」って書いてあるじゃん。
rubyに関しては何度かMLでもそういう話があるが、結論としては
「迷惑をかけないでくれ」だけのはず。
ところで過激な運動家って何だ?
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG過激だったのか。中の人も(ry
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG【殺しの】ライセンス【道で拾った】
http://pc2.2ch.net/test/read.cgi/tech/1045006087/
0630デフォルトの名無しさん
NGNGJavaCC使うなら、LL解析法だからLALR解析法を使うyaccは勉強しなくていいよ。
ちょっとした簡単な言語のインタプリタを作ったことがかなり前にあるんだけど、
簡単なインタプリタならそんなに難しくないはず。
LL文法とBNFがわかれば、JavaCCは使えるようになると思う。
言語処理系の本を1冊借りてきて、Let's Try!
0631デフォルトの名無しさん
NGNGドキュメントが英語で分かりにくいから、
ttp://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html
ttp://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html
この辺を参考に。
大量にサンプルがついてるから、それを参考にして作るといいかも。
0632デフォルトの名無しさん
NGNGhttp://spirit.sourceforge.net/
0633デフォルトの名無しさん
NGNGという長い関数があったとして、これを
func1();
func2();
func3();
と分割するようなプログラムを作ってみたいと思ってます。
なにか参考になる情報、またはすでにそういうものがあったら教えてください。
それでは宜しくお願いします。
0634デフォルトの名無しさん
NGNGリファクタリングで検索
0635デフォルトの名無しさん
NGNGそれは手作業でやるのでは?
0636デフォルトの名無しさん
NGNGおまえは一体どう分割したいのかと(ry
まさか単純にぶった切るつもりか?
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGローカル変数を全部構造体に入れてfunc()で確保、
func1(),func2(),func3()にそいつのポインタを渡してアクセス。
真面目にやるならフロー解析が必要。
0640山崎渉
NGNG0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNG0643山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0644山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0645デフォルトの名無しさん
NGNG0646棄教者 ◆egKIKYO7cg
NGNGYacc の Perl 版です。
これで何かハックした神の報告を待つ。
0647デフォルトの名無しさん
NGNG0648名無し@沢村
NGNGリンカの解説はないか?
0649デフォルトの名無しさん
NGNG超遅いレスだけど、漏れも同じところで詰まっている。
P82までは何とか理解できたけど、LL(1)文法の理論説明になると急に難しくなる。
かなり前のページで定義したことが突然出てきたりするし。
コンピューター学科や数学科出身の人を前提にしているのだろう
漏れは情報学科出身ではないから読んでいてつらい・・・
しかも時間の空いているときに少しづつ読むような読み方では、前回読んだことを
覚え続けるのが困難。
0650649
NGNGある文法がLL(1)文法かどうかを調べるためだからとりあえず読み飛ばすことにします・・・
0651649
NGNG去年、"Linkers & Loaders" (John R.Levine著 ポジティブエッジ訳・オーム社)を読んだのですけど、
説明がかなり大雑把で実装レベルで直接役立てるのはちょっと無理な気がしました。
0652デフォルトの名無しさん
NGNGとにかく、実際に作ってみるのが○
0653652
NGNG0654649
NGNGレスありがとうございます。
私は情報工学は素人なので、斜め読みするほどの能力はありませんが、
理論から導き出される結論自体はそれほど難しいとは思っていないので
なんとか最後まで読んで見ます。
0655逆コンパイラ
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGhttp://www.itee.uq.edu.au/~cristina/dcc.html
http://www.backerstreet.com/rec/rec.htm
0658逆コンパイラ
NGNG上の一番のHPのdcc Decompiler はどこからダウンロードしますか
0659デフォルトの名無しさん
NGNGTable of Contentsの中に思いっきり「配布」という単語があるわけだが。
辞書とか翻訳サイトつかってでもContentsの一覧ぐらいは一通り嫁。
0660デフォルトの名無しさん
NGNGmemory to memory
SICD machine
chemical abstract machine
categorical abstract machine
while-if machine
0661649
NGNG字句解析と構文解析以外は普通のプログラミングですね。
結局はyacc&lexの勉強をしろということでよろしいでつか?
0663デフォルトの名無しさん
NGNG若者ならyaccは無視してantlrをやったほうがいいでしょうか?
0664649
NGNG漏れも良く分からないけどJava環境ならANTLRになるのでは?
漏れはC言語使うのでyaccが魅力的でつ
0665デフォルトの名無しさん
NGNG若者ならまずは手書きから始めるのが良いですよ。
言語にもよるけど、再帰的降下法はいちばん単純でわかりやすい。
パーサジェネレータを使う場合にも、一度手書きパーサを経験しておかないと
なにがなんだかわからない、という人が多いようです。
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG0668649
NGNG手書きの経験が必要でつか?
漏れは若者じゃないからいいや・・・
0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG入院したことにして結局うやむやにした香具師がいたな。
0671デフォルトの名無しさん
NGNG0672名無し@沢村
NGNGいいか、コンパイラはな、字句解析、構文解析、意味解析、最適化、リンカ、ローダとどれが欠けてもダメよ。わかるか?
おまいらに、コンパイラをつくる能力があるか?
0673デフォルトの名無しさん
NGNGコンパイラからアセンブリコード吐かせればOKだな。
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG大半の人が作りたいのはスクリプトのコンパイラでないの?
それなら、字句解析、構文解析、意味解析だけで何とかなるのでは。
0676デフォルトの名無しさん
NGNGバイトコードコンパイルという意味だよね?
0677デフォルトの名無しさん
NGNGそうっす
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGDelphiのよーに、コンパイラがリンクまでやってくれると便利なときがあるよ。
同じシンボルがエクスポートされた.objも、別々のユニットから{$L}で取り込めば呼び分けられるし、
リンクエラーとか名前の衝突とかも、リンカじゃなくてコンパイラのエラーになるので
原因となるソースコード上での位置がわかるし。
0680デフォルトの名無しさん
NGNG正直、最近のマシンは最適化してやらないと実力が出ないから
コンパイラ/インタプリタでの最適化は重要だし、
処理系のコード的にも非常に大きな部分を占めてるんだが。
0681デフォルトの名無しさん
NGNG追伸:
オプションなのは最適化なんてしなくていいってコトじゃなくて
様々な最適化技法がプログラムの性質によってそれぞれ有効度があり、
あまり効かなかったり却って遅くなるような場合に外したりパラメータを調節するのが目的。
(昔はデバッグを簡単にする目的もあったけど最近のデバッガは優秀だから
最適化されていてもデバッグできたりするらしいね。)
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG682が言ってるのは完全に消えた変数の話
683が言ってるのはレジスタ最適化の話
684が言ってるのは・・・・?
0686山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0687デフォルトの名無しさん
NGNGhttp://www.amazon.com/exec/obidos/tg/detail/-/0131550454/
http://www.holub.com/software/compiler.design.in.c.html
て読破したかたいらっしゃいますか?
古すぎますかね。
0688名無し@沢村
NGNG0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGmemory to memory
SICD machine
chemical abstract machine
categorical abstract machine
while-if machine
0692デフォルトの名無しさん
NGNGつーかどっから拾ってきたの?論文読めよ。
名前間違ってるのもあるし。
0693名無し@沢村
NGNGその割りには世に『コンパイラ・スクリプトエンジン』はそれほど多く出てないが…?
みんな自分だけで使ってんの?
それとも起動したと同時に終了してしまうコンソールアプリケーション?
0694デフォルトの名無しさん
NGNGはじめから世に出すつもりで作っていない。
0695デフォルトの名無しさん
NGNG設計から実装まですべてさらけだしてほすぃ
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNGって類がこのスレの対象だろ。
0698デフォルトの名無しさん
NGNG> それとも起動したと同時に終了してしまうコンソールアプリケーション?
こんなやつかW?
int main() {return 0;}
0699デフォルトの名無しさん
NGNG最適化に拘らないならXMLとXMLパーサーを使ってみるという選択は?
(APIはSAXでもDOMでもお好みで。)
文法の自由度は減るけど
ちょっとしたものなら自分でパーサー書くより楽だよ。
例えばmakeと同じような仕事をするANT(だったっけ?)の
プロジェクトファイル(だったっけ?)はXMLらしいぞー(じゃー、ゴボゴボゴボ)。
0700デフォルトの名無しさん
NGNG入力にフォーム、出力はスタイルファイル(CSSでもXSLでも)とでもすれば偽IDE環境も簡単w。
またあるいは、かつてWEB(だっけ?今文献は引越しダンボールの中なんで)という
TeX+Pascalの文芸的プログラミングに憧れた人にもXMLマークアップでプログラミング言語というのは
それなりに面白い選択かと。
0701デフォルトの名無しさん
NGNGXMLなんてクソ
0702名無し@沢村
NGNGコンソールアプリケーションって、たいがい起動したと同時に終了するだろ?
0703名無し@沢村
NGNGてか、コンソールアプリケーションって、一応処理はするんだが、起動して処理をして終了までが、あっという間だから、起動したと同時に終了するように見えるんだな。
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG何故ぇ?w
0706デフォルトの名無しさん
NGNG( ´_ゝ`)
0707デフォルトの名無しさん
NGNG素から書いたら面倒だけどyacc/lexとかツール使うと工数はxmlと殆ど変わらないと思うけど。
むしろ切り出した後のエラーチェックとか加工とかがxmlだと面倒だなぁとか感じたりするんですけど。
0708名無し@沢村
NGNGおれは、起動、コンパイル、実行、終了までが一瞬のうちに終わるスクリプト言語をつくったよ。
コンソールアプリケーションでね。
0709デフォルトの名無しさん
NGNGint main() {return 0;}
が実行できるスクリプトか?
すばらしい(藁)
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGエラーチェックはXML Schema + 検証機能つきパーサで。
切り出し&加工はDOMでやれば楽かも。
書ける言語がXML整形式の範囲に縛られるわけだから
なにがなんでもXMLとは思わないけど、文書としても利用されるような
宣言的なスクリプト(例えばモジュールの依存関係を記述するメイク・ファイルや
プロジェクトファイルみたいなのとか、環境設定とか、各種ポリシーの記述とか、
各種シーンの記述とか…。)にはいいかなと。
私自身はとあるTRPGのシナリオを記述する言語につかえる
語彙(XML世界におけるマークアップ文法のライブラリ)を
趣味で書いてみているところ。実行系はたぶんJavaで書くと思うけど。
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG確かにそれが一番便利w
設定ファイルの読み込みや簡単なスクリプトでバッチ処理するときは最強。
しかし、より高機能なものを求めてコンパイラが欲しいのだから
そのような提案は無意味
0714フォールトの名無しさん
NGNG無いでしょうか?
一応、ドシロウトではなくて、括弧の使える四則演算電卓を作った
実績があります(C言語を用いて3ヶ月ほどで開発しました)。
その辺を踏まえて、オブジェクト指向言語の実装に関する、標準的
な書籍なりペーパーなりを紹介していただけないでしょうか?
また、このような自作言語に継続的な利用者が現れることを期待
するのですが、どのような場で、どの程度の進捗状況で発表すれ
ば良いのか見当がつきません。
成功した開発プロジェクトの実施スキームについて紹介していた
だけないでしょうか?
せっかく開発する予定の言語なので、できれば世界中の開発者に
使ってもらいたい、プログラミングの概念を根底から覆す提案を
したい、と言うのが私の願いです。
0715デフォルトの名無しさん
NGNGもっと単純なコンパイラを練習として作ってみたら?
それならこのスレに情報もたくさんあるし。
0716デフォルトの名無しさん
NGNGがんがれ!!
0717デフォルトの名無しさん
NGNGTiger本じゃだめ?
0718フォールトの名無しさん
NGNG>Tiger本じゃだめ?
ISBNコードわかります?
0719デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/
ソース嫁
0720フォールトの名無しさん
NGNGWebで検索したらそれらしい本「ISBN 0-521-58388-8」
が見つかりましたが、洋書のため書店での入手が難しく、
あきらめざる得ません(トイレで読むのに丁度よさそうな
レベルの本なのに残念です)。
日本で入手容易な、翻訳本など無いでしょうか?
>>719
このプロジェクトが終了してからじっくり読んでみたいと
思います。
0721デフォルトの名無しさん
NGNGって何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。
0722デフォルトの名無しさん
NGNG著者のページ:
http://www.cs.princeton.edu/~appel/modern/
0723デフォルトの名無しさん
NGNGま、そりゃそうだが、コードで語るってのもカコイイ
・・・かも知れないw。
0724フォールトの名無しさん
NGNG>>プログラミングの概念を根底から覆す提案
>って何かな?別にプログラミング言語でなくても、日本語でも表現できるはず。
まるで、具体的な計画を持たない香具師のように聞こえてしまう
じゃないか(はぁ)。。。この場で核心となるアイディアや
技術を披露するのは、未だ一寸早いと思う。私の考えに基づいた
言語仕様や実装方法が世間に受け入れられるためには、この
パラダイムギャップを埋めるための下地が不充分です。
0726デフォルトの名無しさん
NGNGと思うなら、まずプロトタイプでも作ってみるしかないんじゃないか。
0727デフォルトの名無しさん
NGNGどうせ、他に誰か1000人くらいは考えたことがある案だから気にするな。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGデイビッド クラーク (著)
ってのもあるぞ。個人的にはお世話になりました。
0730デフォルトの名無しさん
NGNGPS3
0731ろうひ男爵
NGNG自分的には、
今後はHTのおかげで、ディスクトップレベルででも
16CPU(物理的ではなくね)とか実装される
その後、256CPUとか実装されて、
ソフトウェアによって4CPUとか使われるようになる。
オブジェクト指向でつくられたプログラムで、
オブジェクト単位でCPUが割り振られるとか。
(すでにやってそうですね)
0732デフォルトの名無しさん
NGNG> オブジェクト指向でつくられたプログラムで、
> オブジェクト単位でCPUが割り振られるとか。
CPU間のスイッチが多すぎて激しく遅くなりそうな。
0734デフォルトの名無しさん
NGNG入力先の切り替えをするとき、
AT&T lexの場合は、input()とunput()を再定義する必要がありますが、
flexの場合、YY_INPUTの再定義だけで切り替えができます。
これは、flexが文字の返却をしないアルゴリズムで動作しているとのことでしょうか?
0735直リン
NGNG0736デフォルトの名無しさん
NGNGflexの実装については知らないけど、自前で文字バッファ持っていれば
unputはいらないでしょう。
lexical analyzerの本質からいって1文字先読みは避けられません。
0737734
NGNGそうですよね。
YY_INPUTは、flex側のバッファに文字列をコピーして渡すから、
後はflexの内部バッファの問題になるでしょうね。
確かに文字の返却なしってのは無理かw
0738デフォルトの名無しさん
NGNG> オブジェクト指向でつくられたプログラムで、
> オブジェクト単位でCPUが割り振られるとか。
ここのJ3Cなんか近いかも?
http://www.nk.rim.or.jp/~jun/j3w/
0739デフォルトの名無しさん
NGNGどうしてyaccが入っているのにliby.aがないのかと小一時間・・・
findしてもどこにもないし・・・馬犬 目 ぽ..._〆(゚▽゚*)
0740739
NGNG> Linuxでは liby.a(Yacc用のダミーの yyerror,main)が提供されていません。
> そのため、自分で書く必要があります。
最初からないのね・・・
0741100人に1人
NGNG<アスペルガー症候群(自閉症スペクトラム)←脳の機能的疾患(遺伝が要因)>
●変化を嫌う
http://web.kyoto-inet.or.jp/org/atoz3/kado/book1/Williams-Asp.htm
●接し方のルールがわからず無邪気に周囲の人に対して迷惑なことをしてしまうことがある。人を傷つけるということには鈍感(相手の立場に立って考えられない)。
●パターン的行動、生真面目すぎて融通が利かない
毎朝の通学電車では同じホームの同じ場所から、同じ時間の同じ号車に乗ることに決めていたりする。パターンを好むということは反復を厭わないことでもある。
●アスペルガー症候群の子どもは(大人も)感覚刺激に対して敏感。敏感さは聴覚、視覚、味覚、嗅覚、温痛覚などのいずれの感覚の敏感さもありえる(特に視覚が敏感)。
●アスペルガー症候群の子ども(大人も)は予測できないことや変化に対して苦痛を感じることが多い。
http://www.autism.jp/l-02-03-aspe3.htm
●独り言を言うことが多い(考えていることを口に出す)
●物事をいつまでも同じにしておこうとする欲求が強く、そうでないと非常に不安。いわゆる「こだわり」。
●自発的に行動することが少なく、興味の幅が狭い
●物まねをしているような不自然な言語表現
●自閉症スペクトラム全体としては一万人に91人(およそ100人に1人)。
http://www.ypdc.net/asuperugar.htm
★自閉症スペクトラムの考え方(アスペルガーに至らない気質の偏りもある(遺伝性))
http://www.imaizumi-web.com/030413.html
★アスペルガー症候群(自閉症スペクトラム)かどうかのテスト
http://twitwi.s10.xrea.com/psy/add.htm
http://www.geocities.co.jp/Beautycare/5917/as/marksheetmake.html
0742デフォルトの名無しさん
NGNGliby.aは、あっても中身は無いも同然ですしね、昔は色々入っていたんでしょうか?
古いyaccを知っている人とかいるかな?
0743名無し@沢村
NGNGおまいらよ、いろいろコンパイラやスクリプトエンジンの構想を練ってみろ?
多いに夢を見てみろ?
そしてつかの間の自己満足にひたってみろ?
おまいらよ、夢を見るのはいいことだぞ!!
0744デフォルトの名無しさん
NGNGもっとぶっ飛んだ未来の言語はありませんか?(´・ω・`)
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNGこんなもんだっけ?msgには\n含まれてたかな?忘れてしまったが。
int main(int argc, char **argv)
{
return yyparse();
}
int yyerror(char *msg)
{
fprintf(stderr, "%s\n", msg);
}
もっともこんな手抜きのmainやyyerrorはいずれ捨てることになるんだから、
はじめからちゃんと自分で書きましょう。
0749デフォルトの名無しさん
NGNG0750739
NGNGliby.aは、740のリンク先から作成しますた。
確かに実用上は自分で書かないとだめぽ
ところで、lexにせよyaccにせよ、内部の挙動を考慮して使う必要があるのですね。
使い方を忘れると、訳が分からなくなりそう・・・
0751デフォルトの名無しさん
NGNGCPon
0752751
NGNG0753デフォルトの名無しさん
NGNGCPonって何?
0754デフォルトの名無しさん
NGNG0755751
NGNG宇宙のステルヴィアで使われているプログラミング言語です 多分 言語なのか怪しいけど
0756デフォルトの名無しさん
NGNG??????????????????????????????????????????????
0758名無し@沢村
NGNG0759デフォルトの名無しさん
NGNGありゃ言語というより環境だろ。
>>752
笑えないから。
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG丸投げはイヤンよ。
0762デフォルトの名無しさん
NGNGどこかいい説明サイトないですか?
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG>>763
emacsは、特定のアプリケーションにLispが組み込んであるというより、
全体がLispシステムという構成でユーザにLisp環境を与えてるんだから
>>762向きじゃないだろう。
Tclを勉強するのがいいと思う。そもそも汎用の組み込み言語を目指して
発生したものだから。ラッキーなら>>762はTclをそのまま活用できるかも。
0765764
NGNG組み込み用言語
↓
言いたかったのは、券売機とか洗濯機とかNC機に組み込むソフトじゃなくて、
アプリケーションに組み込むソフトってことね。後者は何て言えばいいんだっけ?
0766デフォルトの名無しさん
NGNG・・・ダサ
0767760
NGNG次の条件を満たすスタックマシンのオブジェクトコードを出力するコンパイラをlex/yaccを作成せよ。
・代入文のサポート
・if,if-else,whileのサポート
・入出力文のサポート
・ブロック構造体のサポート
・条件式のサポート
・固定変数のサポート
・int abc,xy[50];のような変数と配列の混在した宣言文が、何行でもファイルの先頭に書ける
・配列への代入、配列からの参照には、添字として数式が使える
という問題なのですが、下から2つの機能を除いたものは作ることができたのですが、
下の2つを追加するのにどこをいじればいいか全くわかりません。どなたかアドバイスお願いします。
0768760
NGNGlex
%%
"+" return(ADDOP);
"-" return(SUBOP);
"*" return(MULOP);
"/" return(DVIOP);
"(" return(LPAR);
")" return(RPAR);
"=" return(ASSIGN);
";" return(SEMI);
"{" return(LLPAR);
"}" return(RRPAR);
"<" return(LLLPAR);
">" return(RRRPAR);
"<=" return(REB);
">=" return(LEB);
"==" return(EQ);
"!=" return(NEQ);
"if" return(IF);
"put" return(PUT);
"get" return(GET);
"else" return(ELSE);
"while" return(WHILE);
"'" return(AP);
"," return(CM);
[0-9]+ {sscanf(yytext,"%d",&yylval);return(NUMBER);}
[a-z] {yylval=yytext[0]-97;return(ALPHABET);}
[ \t\n]+ ;
. {yylval=yytext[0];return(CHARACTER);}
%%
0769760
NGNGprogram :var_lists{kansu("INT",0,0);}
lists {table[0].q=hyo[number-1].add+hyo[number-1].size;
kansu("HL",0,0);for(i=0;i<codenum;i++){printf("%s %d%d\n",table[i].op,table[i].p,table[i].q);}}
;
var_lists :INT arrays SEMI
|var_lists KONMA INT arrays SEMI
;
arrays :var_decl{A=touroku(string);}
|arrays KONMA var_decl{A=touroku(string);}
;
var_decl:VARIABLE|VARIABLE KAKKO5 NUMBER KAKKO6;
var1 :/*empty*/{hyo[A].size=1;}
|KAKKO5 NUMBER KAKKO6{hyo[A].size=$2;}
;
lists :lists list
|list
;
list :VARIABLE{kansu("LA",0,sansyo(string));}
var2
ASSIGN expression SEMI{kansu("ST",0,0);}
|KAKKO3 lists KAKKO4
|if_prefix list{table[$1].q=codenum;}
|if_prefix list ELSE{$$=codenum;kansu("J",0,0);
table[$1].q=codenum;}
list{table[$4].q=codenum;}
|WHILE{$$=codenum;}
KAKKO1 condition KAKKO2{$$=codenum;kansu("FJ",0,0);}
list{kansu("J",0,$2);
table[$6].q=codenum;}
0770760
NGNG|GET KAKKO1 VARIABLE{kansu("LA",0,sansyo(string));}
var2{kansu("RI",0,0);}
KAKKO2 SEMI
|SEMI
;
if_prefix:IF KAKKO1 condition KAKKO2{$$=codenum;kansu("FJ",0,0);}
condition:expression YORIDAI expression{kansu("GI",0,0);}
|expression IJO expression{kansu("GE",0,0);}
|expression MIMAN expression{kansu("LT",0,0);}
|expression IKA expression{kansu("LE",0,0);}
|expression ONAJI expression{kansu("EQ",0,0);}
|expression TIGAU expression{kansu("NE",0,0);}
;
put_list:put_list KONMA put_parm
|put_parm
;
put_parm:expression {kansu("WRI",0,0);kansu("WLN",0,0);}
|CHARACTER{kansu("LC",0,$1);kansu("WRC",0,0);kansu("WLN",0,0);}
;
expression:expression WA expression{kansu("AD",0,0);}
|expression SA expression{kansu("SB",0,0);}
|expression SEKI expression{kansu("ML",0,0);}
|expression SYO expression{kansu("DV",0,0);}
|SA expression %prec UMINUS{kansu("NEG",0,0);}
|KAKKO1 expression KAKKO2{$$=$2;}
|NUMBER{kansu("LC",0,$1);}
|VARIABLE{kansu("LA",0,sansyo(string));}
|VARIABLE{kansu("LA",0,sansyo(string));}
KAKKO5 expression KAKKO6{kansu("LI",0,0);}
;
0771760
NGNG%%
#include "lex.yy.c"
struct{int address;char op[5];int p;int q;}table[100];
struct{char name[127];int soeji;int add;int size;}hyo[128];
int codenum=0;
int A,i,j;
void kansu(char x[], int y, int z){
strcpy(table[codenum].op,x);
table[codenum].p=y;
table[codenum].q=z;
codenum++;}
int number =0;
touroku(char a[]){
int b;
/*int c;
int start_add=0;*/
for(b=0;b<number;b++){
if(strcmp(hyo[b].name,a)==0){
printf("error\n");
return(NULL);}}
strcpy(hyo[number].name,a);
hyo[number].soeji=number;
hyo[number].add=hyo[number-1].add+hyo[number-1].size;
return(number++);}
sansyo(char d[]){
int e;
for(e=0;e<number;e++){
if(strcmp(hyo[e].name,d)==0){
return(hyo[e].add);}}
printf("no name\n");
return(NULL);}
0772名無し
NGNGここからJavaCCをDLしようとしても
The page you are looking for, /data/javacc-3.0.zip isn't here.
Sorry.
ってでてDLできないんですが
0773デフォルトの名無しさん
NGNGzipも、tar.gzも両方落とせるけど?
0775デフォルトの名無しさん
NGNG0776_
NGNG0777デフォルトの名無しさん
NGNGscheme
0778通りすがり
NGNG0779通りすがりっていうか
NGNG0780デフォルトの名無しさん
NGNGまずインデントをどうにかしてくれんと読む気にならん。
ぱっと見、文法をどうにかしろよって感じだが。
0781山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0782デフォルトの名無しさん
NGNGアクションは後回しにして、まず文法だけ集中して考えてみたら。
ふつうはまず文法だけで書いて動かしてみて、正しくreductionが行なわれるかを確認
しますよね。
var_lists :INT arrays SEMI
|var_lists KONMA INT arrays SEMI
;
これだと int v, int x; なんていうのが通ってしまうけど…
かなり混乱してます。もうちょっと整理しよう。
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG「どちらとも言えない」トークンが出てきた場合はどうすればいいのでしょうか?
例えば C の * は
1 * 2 のような乗算演算子なのか
*ptr -= 4 のようなデリファレンス演算子なのか
単純に字句解析だけしていくとわからないのです。
いくつか考えたのですが。
1.構文解析や意味解析から字句解析を呼び出すようにして、それらの処理内容を字句解析に使用する
2.TOKEN_ASTERISK のように中途半端な状態にして構文解析の段階で適切な物にする
3.とりあえず OP_MULTIPLY みたいにどっちかにしておいて、後で不適切だった場合に OP_DEREFERENCE など適切な物に置き換える
もしくは上記以外のもっと賢い方法があるのでしょうか?
よろしくお願いします。
0786デフォルトの名無しさん
NGNG1*2 の形の奴が単項演算子であるわけが無い。
*ptr の形の奴が2項演算子であるわけが無い。
よってどちらともいえないトークンではない
0787デフォルトの名無しさん
NGNG例が良くないだけで、問題は依然として解決していないと思うが?
MyClass::Member * a;
C++のこれは宣言?それとも乗算?
>>785
どれでもOK。標準はない。
俺だったら2を選ぶけど、それも参考程度にね。
0788785
NGNGレスありがとうございます。
もしかして私の「字句解析」っていう言葉への認識って間違ってるのかなと思っちゃったのですが、
字句解析って「字面からわかる範囲で」文字列をトークンに切り出していく作業だと思っていたのですが
前後のトークンの状態などまで見るべきものなのでしょうか?
つまり単項か2項かというのは前後のトークンがわからなければ決定できないと思うのですが
そういう所まで見るのが普通なのでしょうか?
(前のトークンはともかく、後のトークンまで判別に使うとするとかなり難しい事になりますよね)
一般論という感じでいいのですが、ご教授ください。
よろしくお願いします。
0789デフォルトの名無しさん
NGNG> 字句解析って「字面からわかる範囲で」文字列をトークンに切り出していく作業だと思っていたのですが
それであってる。
> 前後のトークンの状態などまで見るべきものなのでしょうか?
そうする処理系もある。
ただそれは、純粋に字句解析だけでなく、一部構文解析も含んだ処理ということになる。
> つまり単項か2項かというのは前後のトークンがわからなければ決定できないと思うのですが
> そういう所まで見るのが普通なのでしょうか?
これも処理系によりけりで、>>785のどれになるかはいろいろ。
字句解析と構文解析の境界は、厳密に分かれているとは限らない。
今みたいに曖昧な場合や、いっそ「字句+構文解析」をしてしまうこともある。
逆に、あらかじめ曖昧さが生じないように言語を設計する場合もある。
・・・あんまり役に立ってないな、俺。
まぁ、生きた例を知りたいなら、解析器や言語処理系のソースを読むのが一番。
0790785
NGNGレスありがとうございます。
なるほど、厳密にパートを仕切る必要はないんですね。
>・・・あんまり役に立ってないな、俺。
そんな事ないです。日曜プログラムなので、周りに聞く人もいなくて
参考書籍とか雑誌とかもいくつか引っ張り出してきたりしてみたんですが、
疑問が出てきちゃったら正解かどうか確認する手段がないので、
こういう風に「それで間違いない」とか「それはこういう意味だよ」って答えてくれるだけで
とても助かります。ありがとうございました。
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNGC言語のパーサーの話なら、おたずねの * に関して字句解析が気にかける必要
はありません。それらの区別は構文解析の責任です。字句解析では'*' という
トークンを返せばそれで良いのです。
では字句解析はつねに文脈を気にしないで良いのかというとそうでもありません。
たとえばC のtypedef名は TYPEDEF_NAME というトークンを返さないと正しく
構文解析ができませんので、字句解析はidentifierを見たときに記号表を見て、
それがtypedef名として登録されているかどうかを調べなくてはいけません。
typedef名であれば TYPEDEF_NAME を、そうでなければ IDENTIFIER を返す
のです。
# 実はCの構文解析ではこの後さらに、TYPEDEF_NAMEを通常のidentifierとし
# て解釈するという処理もしなければならないのですが、初心者が混乱すると
# いけないのでこのへんでやめときます。
0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG激しく同意
0801デフォルトの名無しさん
NGNGLISP自身で書けるんだぞ。そもそも記号処理は得意分野だからな。
CやJavaで組むより簡単だろう。
実装側の言語に頼る量も最小で済むんだぞ。
なぜ使わんのだ。
0802デフォルトの名無しさん
NGNG括弧悪い?アホか。
括弧の量なんて些細な事でしかない。
0803デフォルトの名無しさん
NGNG通じて無いよこの人
0804デフォルトの名無しさん
NGNG括弧読みにくいんだよ。
いつまでもマイナー言語でオナニーしてろよ、ボケ!
0805デフォルトの名無しさん
NGNGLisp厨以上に厨さを醸し出す>804
コイツ、ウザッ
0806デフォルトの名無しさん
NGNGLispじゃなくても、コンパイラやアセンブラはその言語自身でかけるが・・・
0807デフォルトの名無しさん
NGNG本当にそうなの?
0808デフォルトの名無しさん
NGNG自前でトークンを切り出すコード
(もし先頭がアルファベットならwhileで延々読み込みみたいな)の実行速度と
lexで吐き出すコードの実行速度ではどちらが早いんでしょうか?
0809デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNGlex の吐き出すコードのがマシと思われ。
0812デフォルトの名無しさん
NGNG0813名無し@沢村
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1059262203/l50
0814808
NGNG初めてlexのコード見たんですが
移植する時間も自信も・・・なので諦めました・・・
メモリも全然使えない環境ですし・・・
0815デフォルトの名無しさん
NGNG綴りの認識程度ならlex(というかDFA)は大袈裟な気がする。
僕だったら、連続するアルファベットと数字を連結して単語にし、事前に作っ
ておいたハッシュ表を索いておしまいにします。
ハッシュ表は、完全ハッシュ関数を作成するツール(GNU gperf)を使えば、
かなり小さくできるし。
0816デフォルトの名無しさん
NGNG最初で、しかも簡単な物でしたら、手で作ってみるのもいいのではないでしょうか。
それからlexを覚えた方が理解が深まりますし。
0817デフォルトの名無しさん
NGNG後々楽な気がするけど。
まあ、時間に余裕があるなら。
0818デフォルトの名無しさん
NGNG字句解析 -> 不要
構文解析 -> すでに終わってる
なので激しく楽なのは間違いない.本の章一つで
Lisp のサブセットやそのコンパイラの作成法が載るくらい.
0819デフォルトの名無しさん
NGNGLisp 言語処理系: CAMPUS LIsP, Lemon version
ttp://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml
Cコードによるわずか1000行の実装
ちなみにLispのマクロは字句解析と構文解析の間に作用するので、
別の言語のインタプリタをLisp上に作ることができる。
Paul GrahamのOn Lispという本(Web公開中)ではCommon Lisp上の
Prologインタプリタが解説されているし、
Richard Fateman教授のサイトには(おおっぴらには載せてないが)
Common Lisp上のMathematicaサブセットのインタプリタのソースが置いてある。
いずれもマクロを活用している。
おまけ bison, flexマニュアル和訳
ftp://ftp.ascii.co.jp/pub/GNU/
0820デフォルトの名無しさん
NGNGlispのマクロで満足できるならこのスレには来るわけないんだからさ。
0821デフォルトの名無しさん
NGNGこのスレで無駄に時間浪費した挙句、互換性のクソもない
コンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。
0822デフォルトの名無しさん
NGNGスレの存在そのものに疑義があるんなら立ち入ってくるなっつの。
0823デフォルトの名無しさん
NGNGlispのマクロを極めた人しかこんなことは言えないと思うのですが。
0824デフォルトの名無しさん
NGNG馬鹿だろ?
lispでマクロを極めようがどうしようが、んなことはフルスクラッチで
スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。
プロトタイプだけ作って満足するならともかく。
こういう場を読めないLispスノッブが大杉。
0825デフォルトの名無しさん
NGNGお前こそ馬鹿だろ?
lispのマクロがプロトタイプだけしか作れなくて
フルスクラッチの方がえらいみたいに考えてるところが。
0826デフォルトの名無しさん
NGNG>> フルスクラッチの方がえらいみたいに考えてるところが。
> スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。
Lispでどんあ言語でも作ることができる何て言ってるヤシは、
Lispしかやったこと無いヤシ。
0827デフォルトの名無しさん
NGNGhttp://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
では付加されないから注意が必要と書いてるけど
http://www.geocities.co.jp/SiliconValley-Oakland/3432/man/flex/flex-ja_4.html#SEC35
とかのサンプルみてるといきなりstrcpy(yylval.name,yytext)見たいな感じのコードがあるんだけど。
strcpyはソース側がNULL文字終端じゃないといけないよね。
それとも自分が何か勘違いしてるのかな?教えてください。
0829デフォルトの名無しさん
NGNGそりゃアセンブラでも作ることはできるだろう。
ようはどれだけ簡単に作ることができるかだ
0830デフォルトの名無しさん
NGNGというかこれにぶっ飛んだよ。
%union{
char name[128];
}
0831デフォルトの名無しさん
NGNGLispスノッブ大杉って,漏れには数人しか見えないが….
コンパイラやスクリプトエンジン書くのに言語やツールなんか関係ねーだろう.
フルスクラッチがいいなら Lex も Yacc も使わずに全部手でかけばいいじゃん.
0832デフォルトの名無しさん
NGNG利点
- GCがあるので、メモリ管理が楽
- リストや木などを処理し易い
- S式を入出力する手続きが用意されている
途中結果の出力や、個々の手続きの動作検証がし易い
- シンボル
シンボルを使うとシンボルテーブルを新たに作らなくてもよいかもしれない。
欠点
- lexやyaccのようなデファクトスタンダードなツールがない
guile絡みでLanguage Implementation Toolなるものがあるらしいが、
どういう位置づけのものなのかは知らない。
- 動作が遅い
ネイティブコードを吐くコンパイラもあり、速いらしい。
それでも、チューニングをし出すとCとかで組んだ方が速くなると思う。
- マクロ
Schemeは処理系によってマクロの書き方が違う。
- 資料が少ない
検索しても見つかるのは、Schemeの処理系を作る話ばかり。
On Lispに載っていたPrologインタプリタは、Prologの機能を
マクロとかを使って実現するという話ぽかった。
もしかしたら前の方の章にProlog→S式変換の話があったりするとか?
0833832
NGNG先入観も含んじゃっています。
0835デフォルトの名無しさん
NGNG> 互換性のクソもないコンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。
このスレで書いてはならない事を書いたね。
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG素直だ。
0838デフォルトの名無しさん
NGNG%unionってスタックの要素になるんだが、それを128byteとる豪儀(藁)さに。
終端はしないはず。
おお、どうもありがとう。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGとりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の
LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン
で読めるみたいだし。
0842デフォルトの名無しさん
NGNGとりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の
LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン
で読めるみたいだし。
0843841
NGNG0844山崎 渉
NGNG0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGJavaScriptを使おうとおもうのですが、組み込んで使えるものなのでしょうか?
VC6使っています。
0849デフォルトの名無しさん
NGNGちょっと探したら、こんなのみつけたけど。
MozillaのJavaScriptのページ
http://jt.mozilla.gr.jp/js/
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGまぁ、Python なんかは組み込まれてるの見かけるから漏れの感覚が古い
のやもしれず。
0852850
NGNG小さいことは気にしないのですが、いざ使ってて大きな落とし穴に落ちたら人生いやけがさして多分漏れ自殺します。
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGLuaは最初から組み込むことを前提に考えて作ったっぽいからいいかも。
ただ小さい代わりに言語仕様もライブラリも他と比べて貧弱なので。
0856850
NGNGただ、組み込み用途で使うのであれば、幾つかの型が扱えて
ifやwhileなどの制御構文が使えればOKかなぁ。。。
スクリプト側ではフロー制御みたいなことしかやらず、どうせ
アプリ側のAPI呼び出しに徹する形になるだろうから。
0857デフォルトの名無しさん
NGNG久しぶりにJavaCCを使おうと思ったら、antからビルド出来なくなっていた。
もちろん、コマンドラインからはjavaccもjjtreeも普通に使えている。
COM.sun.labs.javacc.Mainという存在しないクラスを探すのが原因らしく、
そこを"org.javacc.parser.Mainに書き換えただけで動いた。
sfに移動してから結構経っているのに、誰も気付かなかったのかな。
0858山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0859デフォルトの名無しさん
NGNG0860デフォルトの名無しさん
NGNG最近アルバイト先で使ったLSI設計ツール、Tclが組み込まれていた。
もちろん商用アプリなんだけど、Tclって商用利用に使ってもいいんですね。
いや、単に不勉強で、ちまたのスクリプトの何が商用利用(商品に組み込んだ
うえで販売)でき、何はだめなのか、よく知らなかったので、たまたまTclを
見つけて「へぇ、こういうふうに商品にもつかっているんだ」と、感心したという
だけの話なんですが。
0861デフォルトの名無しさん
NGNGどんな感じのものなのですか?
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGLISP Schemeスレなら受け入れてくれると思うよ。
自作派が多いから。
0865デフォルトの名無しさん
NGNG下のサイト見るか、boost スレ行って訊けば?
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html
■ このスレッドは過去ログ倉庫に格納されています