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


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

『コンパイラ・スクリプトエンジン』 相談室 2



1 名前:nanashi de fault [02/05/12 02:05]
前スレ1より
>yaccやlexの使い方やら言語仕様やらの話題。

前スレ

【コンパイラ・スクリプトエンジン】相談室
pc.2ch.net/test/read.cgi/tech/981672957/

前スレアーカイブ(かちゅ用)
www.1me.jp/hp/prg_c-s_lab

前スレに張られたリンク + x
>>2-6

398 名前:デフォルトの名無しさん mailto:sage [03/01/22 03:24]
>>397
プログラムの書き方が上向き解析のスタックを
使う要領でノードを操作してる上向き風味。
オートマトンは字句解析だけ。

399 名前:デフォルトの名無しさん mailto:sage [03/01/22 23:53]
いや全然上向きに見えないなー。むしろ下向き?
どんどん部分木作ってるわけでしょ。
あとオートマトンも字句解析の一つ上で使ってるように見える。
どうでもいいけど。

400 名前:デフォルトの名無しさん [03/01/23 00:33]
400getしたわけですが、
キリ番getするための良い入門書はありますか?

401 名前:デフォルトの名無しさん mailto:sage [03/01/23 02:15]
>>400
お前が書け。


402 名前:デフォルトの名無しさん [03/01/23 18:55]
bison/flexをVC++でMFCと併用していますが、どうもパーサ走らせると終了時に
メモリリーク起こします。ダンプされたのを見てると、どうもyytextの中身っぽい
文字列が…。これってflexの仕様でつか?
>>191の言ってるスレッドセーフ云々っていうのも気になりますた・・・

403 名前:山崎渉 mailto:(^^)sage [03/01/23 20:01]
(^^)

404 名前:デフォルトの名無しさん [03/01/25 00:08]
Programming Language Processors in Java: Compilers and Interpreters
www.amazon.com/exec/obidos/tg/detail/-/0130257869/
この本読んだ人はいますか?いたら感想聞かせてください。

405 名前:デフォルトの名無しさん mailto:age [03/01/31 23:19]
最適化するのにポインタって邪魔ですか?

406 名前:デフォルトの名無しさん mailto:sage [03/02/01 00:58]
>>405
ポインタというか aliasing が邪魔。



407 名前:デフォルトの名無しさん mailto:sage [03/02/01 08:47]
>>404
amazon のレビューを見る限り、非常に好意的だけど何か不満な点でも?

日本人で実際に読んだ人に背中を押してほしいと言うことですか?

408 名前:デフォルトの名無しさん mailto:sage [03/02/02 01:30]
>405
なんの最適化か知らないけど、追跡がしにくい。
実装する側の思考をすればわかると思うけど。
アドレスの同一判定までしてるコンパイラってあるのかな。

409 名前:デフォルトの名無しさん mailto:sage [03/02/09 01:08]
>408
一応、解析して指されている対象を絞り込む技法はあります。
解析コストと精度でトレードオフはありますが。

実行時のアドレスの同一性を考えるのではなく、
あるポインタ型変数についてその変数に代入するように
プログラム上でメモリ割り当てた部分の集合を計算します。
なるたけ集合が小さく絞れれば精度が高いと考えます。
解析に当たっては各手法の間で
関数呼び出しをまたいでの解析をするかしないか、
関数(メソッド)内のコントロール/データ・フローにどこまで配慮するか、
オブジェクト指向言語でメソッドの呼び出しの際のオブジェクトに配慮するか、
などの様々なオプションがあります。

こうやって得られたPoints-toグラフは関数(メソッド)やスレッドなどからの
Escapeを調べたりするのに使えます。

興味のある方はPoints-to analysisとかAlias analysisというキーワードで
ググって見てください。

410 名前:デフォルトの名無しさん mailto:sage [03/02/11 08:25]
Lex and YACC primer/HOWTO
www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html
訳されている。


411 名前:デフォルトの名無しさん [03/02/16 18:41]
lex/yaccの初心者です。
lex/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];};
%%


412 名前:411 mailto:sage [03/02/16 18:42]
続き
==========================[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();}

413 名前:デフォルトの名無しさん [03/02/22 14:17]
再帰下降構文解析で実験的にコンパイラを作っているのですが、
関数のオーバーロードの実現方法がわかりません。
引数だけのオーバーロードなら、再帰下降の各関数が返す関数呼出しノードがひとつに絞れそうな気もするのですが
返り値もオーバーロード可能にしようとすると、もうどうやっていいものか。
何かいい方法はありませんか?

考えている仕様:
int A();
string A();
void B(int);
があって B(A) としたら上のほうの Aが呼ばれるようにしたい。
もうひとつvoid B(string); があれば曖昧エラーを出す。

414 名前:デフォルトの名無しさん mailto:sage [03/02/22 14:37]
>>413
それは無理じゃないの? だってさ、
void B(int);
void B(string);
の2つが定義されたらどうするの? つまりマッチングをどっちで取るの?




415 名前:デフォルトの名無しさん mailto:sage [03/02/22 14:43]
>>414
413の最後の行に書きましたように、曖昧エラーを出したいと思います。
勿論実用的には、解決を行えるように、明示的に型を指定する構文が必要になるでしょうが…。

他の言語でも、F(int, double)とF(double, int)があったときにF(1,1)なんて呼ぶと曖昧エラーになるので
返り値でも曖昧エラーを出すことは多分許容範囲内だろう、と。

416 名前:デフォルトの名無しさん mailto:sage [03/02/22 14:55]
追記。Adaでも可能なので、無理ってことは無い筈です。



417 名前:414 mailto:sage [03/02/23 08:29]
スマン 俺が間違ってた。
 再帰下降という事は、
  代入する変数の型
  関数の型
  先行演算子の型
 が先に判るわけだから、それをグローバルにとってスタック上に保存しながら使ったら?

 

418 名前:413 mailto:sage [03/02/23 16:27]
>>417
ありがとう。ええと、それですと

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)が選ばれたことが確定

こんなイメージ…ですよね?合ってます?

419 名前:414 mailto:sage [03/02/23 16:50]
>>418
それは実装上厳しいんじゃない?
Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ

420 名前:デフォルトの名無しさん mailto:sage [03/02/23 19:25]
>419
え、特に問題なさそうだけど?
>Aの引数を解釈してる時に、Bが出た時点で、曖昧にした方がいいと思うけどなあ
なんでそう思ったの?


421 名前:413 mailto:sage [03/02/23 19:44]
まず一旦、型を特定しない構文木を作ることにしました。理由は、

string* A();
int* A();

*(A()) = 10;

再帰下降だと、A()を解析している時、その後代入されるのが整数なのか文字列なのか、
それ以前にそもそも代入されるのかどうかもわからないため。
(代入もされず値としても使われないなら曖昧エラー出さないといけませんし)

取り敢えず構文木を作るとこまで書きました。これから>>418の実装に挑戦します。
もっと手っ取り早い方法があればいいのですけれど。

422 名前:デフォルトの名無しさん mailto:sage [03/02/24 18:11]
スレ違いな質問かもしれないのですが、スクリプト言語のインタープリターを作ってみたいのですが、これを作るには、
コンパイラーの勉強が役に立つのでしょうか?

なにからやればいいのかさっぱり分からないので、なにか指針でもアドバイスお願いします。

423 名前:422 mailto:sage [03/02/24 18:27]
>>175 さんが同じような質問をしてた。
Perl や PHP のような大規模な言語ではないのだけど、コンパイラに関する資料が役に立つみたいですね。
まぁ、またーりとがんばってみます。

424 名前:デフォルトの名無しさん mailto:sage [03/02/25 19:03]
「UNIXプログラミング環境」で (lex + yacc を使った) 簡単な言語処理系の
作り方が紹介されてますよ。コードも web 上にありました。


425 名前:ろうひ男爵 [03/02/27 17:55]
>>422
どの程度のことがやりたいんですか?

バッチファイルみたいな物
ワープロなどの実用ソフトのスクリプト言語
ADVなどのシナリオスクリプト
ゲームの敵移動ルーチンのスクリプト

426 名前:413 mailto:sage [03/02/27 20:45]
一応書いておくか…>>421は無理でした。
代入の右辺と左辺のどちらを先に解釈するかという問題が残ります。
(421の例で右辺もoverloadされた関数呼び出しだったら、どちらを先に解釈することもできない)

マジにやろうとすれば、後は、可能性を全部列挙してマッチングを行うぐらいしか無いかも。
Adaコンパイラのソースが見たい…(gccのAdaならもしかして見える?)

まあ、自分のやりたかった範囲ではできたので、わたくし的にはOKなのですが。
元々は配列のCopy On Writeをオーバーロードで解決したかったので。

*(A(1)) = 10; // int * A(int); が呼ばれ、メモリ領域を複製する
B = *(A(1)); // int const * A(int); が呼ばれ、複製はしない



427 名前:422 mailto:sage [03/02/28 11:16]
>>425
> ワープロなどの実用ソフトのスクリプト言語
たぶんこのあたりかと。

マクロ記述言語の部分だけを取り出して、シェルスクリプトみたいに、
インタラクティブに遊んでみたいなぁーと思って。

実用ソフトのスクリプト言語といっても、emacs lisp や VBA みたいに大掛かりなものでもありません。
1000行くらいで言語全体を一通り説明できてしまうくらいの小規模な言語です。

というか、その前にCを勉強しないと、どうしようもないみたいですね。

428 名前:ろうひ男爵 [03/03/01 20:23]
>>427
C言語でなくても書けることは書けますが、
再帰が出来る言語の方がらくですよ〜。
(全部配列でやると大変です)

昔のBASIC見たいに、
変数を宣言無し、
関数を無くしてサブルーチンのみ、
PRINTなどの実行命令は、随時追加していく、
ブロック化の為(制御命令)には、
IF-ELSEIF-ELSE-END
WHILE-BREAK-END
SWITCH-CASE-BREAK-DEFAULT-END
{}は使わない

等のシンプルな言語なら、ベタで組んでも
1000どころか200行ぐらいで出来ますよ〜。

429 名前:デフォルトの名無しさん mailto:sage [03/03/02 14:53]
ろうひ男爵さんはもしかして大学教員ですか?
初心者の質問に丁寧に答えて下さっていますが。

430 名前:デフォルトの名無しさん mailto:age [03/03/02 17:55]
札幌市立中央図書館からドラゴンブック借りてきたので age

431 名前:札幌市立中央図書館職員 mailto:sage [03/03/02 17:58]
>430
ちゃんと返せよ

432 名前:デフォルトの名無しさん mailto:sage [03/03/02 18:00]
>430
書き込みとかすんなよ。

433 名前:デフォルトの名無しさん mailto:sage [03/03/02 20:07]
ああ北海道いきてえ

434 名前:デフォルトの名無しさん [03/03/03 01:15]
>>429
いえ、単なるプログラマーの会社員です。
そういっていただけると嬉しいですが、
自分程度の知識だと、このスレの強者にはかなわないっす。


>>430
2〜3週間は借りることになるのでは?
自分は風呂場で1回読むのに2ヶ月かかりました。
がんばって読破してくださいね〜。

435 名前:430 mailto:sage [03/03/03 04:10]
>>431
はい。期日までにちゃんと返します。

>>432
はい。綺麗な本なので、汚さないように気をつけます。

>>433
ぜひお越しください。

>>434
2週間の期間では、ちょっと読破できそうにないかも。
連続で借りることも出来るけれど、それをするくらいなら
自分で買う主義です。まだ、買うかどうかはわからんけど。
とにかく、勉強します。

436 名前:デフォルトの名無しさん mailto:sage [03/03/03 11:02]
>>434
借りた本を風呂で読んではいけません。




437 名前:ろうひ男爵=434 [03/03/03 21:58]
>>436
こりゃ失礼。
自分は自腹で買いましたよ〜。
昔、X68000の本とかでほしいときには無くなってたことが多々あったので必ず買ってます。
最近は、トッパンの本を買いあさりました。

438 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:03]
いいかげんsageを覚えてくれ。>ろうひ男爵その他
それとさ、ここあんたらの日記サイトじゃないんだから、
あんま関係ない話振るのもやめてくれ。

439 名前:デフォルトの名無しさん [03/03/03 22:04]
自治厨見参記念age

440 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:05]
独り言は夢・独り言板でどうぞ。
life.2ch.net/yume/

441 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:08]
FORTHって作りが簡単だそうですが、どれぐらい小さく作れますか?
参考になりそうな比較的小さい処理系ってありませんか?

442 名前:デフォルトの名無しさん mailto:sage [03/03/03 22:14]
あれ、forthスレってなかったっけ?

443 名前:デフォルトの名無しさん mailto:sage [03/03/04 00:37]
>>441
昔アセンブラで作ったときはたしかコア部分は30バイトくらいだった。
もちろんそれ以外にprimitiveが必要だけど。

444 名前:ろうひ男爵 mailto:sage [03/03/04 01:24]
>>438
すまんのう。
外で書いて他のでsage忘れました。

445 名前:デフォルトの名無しさん mailto:sage [03/03/06 18:24]
forthって暗黙の操作みたいなのが多いから、
一目ソース見ただけでは何してるのかわかんないと思うけど、
どうよ?

446 名前:デフォルトの名無しさん mailto:sage [03/03/06 20:45]
慣れると会館なのかも試練
とりあえず、手続きの構造化というのを初めて知ったのはForthだった。
今でもかなり小さな関数に分けてしまう。



447 名前:デフォルトの名無しさん mailto:sage [03/03/07 11:37]
>>445
CLikeScript -> ForceWord コンパイラとか



448 名前:デフォルトの名無しさん [03/03/09 23:12]
rubyみたいなスクリプト言語で、非オブジェクト指向なやつって
ありますか???


449 名前:デフォルトの名無しさん mailto:sage [03/03/09 23:21]
>>448
Perl

450 名前:デフォルトの名無しさん mailto:sage [03/03/09 23:23]
Luaとかは?
マイナーだけど、コンパクトだから読むにはいいかも。

451 名前:デフォルトの名無しさん [03/03/09 23:54]
lua って癖が強くないですか???


452 名前:デフォルトの名無しさん mailto:sage [03/03/09 23:57]
>>448
bash,csh とかは?
Ruby みたいかどうかは知らないけど、、、

453 名前:デフォルトの名無しさん [03/03/09 23:57]
あと、開発が止まってますか?
なんか新しいのが無い???


454 名前:デフォルトの名無しさん [03/03/09 23:58]
>>449

ruby参照してるんだから、真珠は無いだろう〜(w


455 名前:デフォルトの名無しさん mailto:sage [03/03/10 00:20]
LuaはPubyやPerlより癖がないと思うけど。
つか言語仕様が小さい。アプリ組み込み向けだし。

開発は・・・使うためでなく読むためなら別にどうでもよい(藁

456 名前:デフォルトの名無しさん [03/03/10 00:43]
luaって有名なのかなぁ?
なんか、時々(ほんの)聞くけど。。。




457 名前:デフォルトの名無しさん mailto:sage [03/03/10 00:57]
亜種亜流を含めて 4000 以上プログラミング言語があるらしいけど、
メジャーな言語なんてほんの一握りだからねえ。

458 名前:デフォルトの名無しさん [03/03/10 01:00]
そんなにあるの〜、ビツクリ!

漏れも作ろうかなぁ。。。Uma


459 名前:デフォルトの名無しさん mailto:sage [03/03/10 01:01]
組み込みならluaみたいなの採用するよりはlisp系にするけど。

460 名前:デフォルトの名無しさん mailto:sage [03/03/10 01:29]
最近sourceforgeのgameカテゴリとかlinux game tomeとか眺めてるんですが
内部でluaやpythonを使ってるのをちょくちょく見かけます。schemeもあったな。

ちょっと前だと例えばQuake(初代)では速度の要求される3Dエンジン部分をC/ASMで、
キャラ固有動作とかダメージ計算とかのゲーム/シナリオ部分をC-likeな独自言語でやってたわけですが、
そういう局面で既存のスクリプト言語がつかわれってるぽい。

461 名前:デフォルトの名無しさん mailto:sage [03/03/10 08:56]
ruby最高!

462 名前:デフォルトの名無しさん mailto:sage [03/03/10 14:10]
>>461
どこがどのように?


463 名前:デフォルトの名無しさん mailto:sage [03/03/10 15:26]
あまり組み込み向けにはお勧めでないところ

464 名前:デフォルトの名無しさん mailto:sage [03/03/11 01:18]
>>462
日本発だから!

465 名前:デフォルトの名無しさん mailto:sage [03/03/11 08:48]
C++並に仕様がでかくなると、yacc の y.output 見て error を全て潰す(yaccの
エラーメッセージがでないようにする) のが大変だ。

466 名前:デフォルトの名無しさん [03/03/13 23:21]
新しいスクリプト言語を作りたいんだけど。。。

これって大変ですか?





467 名前:デフォルトの名無しさん mailto:sage [03/03/13 23:28]
>>466
> これって大変ですか?
最初からそんな感想を抱いているようでは、新言語を作るのは無理だと思われ。

468 名前:デフォルトの名無しさん mailto:sage [03/03/13 23:42]
言語処理系は作るだけなら、実は大して難しくない。
式の展開さえ出来れば、あとは出来たも同然。

問題は「使える」言語にしようと思うと、ライブラリの整備が
大変な事。

469 名前:デフォルトの名無しさん [03/03/13 23:56]
>>468

なるほど、参考になった。
rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ。。。


470 名前:デフォルトの名無しさん mailto:sage [03/03/14 08:46]
ライブラリ整備が面倒なら、
COMコントロール使えるようにしとけば VBAのコントロールそのまま使えるから楽だよ。

あるいは、ゲーム用ならHSPのDLLを使えるようにしとくとか

471 名前:デフォルトの名無しさん mailto:sage [03/03/14 10:54]
>rubyなども、結局はライブラリが揃ってるから使われるんだよねぇ
rubyは美しすぎる言語仕様(少なくとも日本人の感性からすれば)が大きいと思う。

472 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:16]
それは信じない(w

比較相手がPerlなら同意だが

473 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:24]
>>472
ネタニマジレスカコワルイ

474 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:41]
bisonが出力した y.tab.c を g++ でコンパイルすると パースエラーが出るんですが
回避方法はないのでしょうか?

VCではコンパイルできるのですが( ファイル名は y.tab.cpp に替えてコンパイル)。

475 名前:デフォルトの名無しさん mailto:sage [03/03/14 11:50]
どういうエラーだよ。

476 名前:デフォルトの名無しさん mailto:sage [03/03/14 12:58]
>>469
rubyは愛国精神からよく使われるのです



477 名前:デフォルトの名無しさん mailto:sage [03/03/14 13:21]
>>476
確かに、rubyの場合、
「まつもと?ふーん日本人がやってるんだ。ちょっといじってみよかな。」
と思って始めたっての、俺の場合はあるよ。

で、逆に思ったんだけど、アメリカ(のようなコンピュータ大国の)人が、
「ふんふんよさそう。ん?なんか変な名前の作者だな。
おぃ{スカンジナビア製,インド製,日本製,韓国製,中国製...}かよっ!」
とか感じてやめちゃうことってあるのかな?それとも多民族国家だから
そんなの全然キニシナイ!のかな?

478 名前:デフォルトの名無しさん mailto:sage [03/03/14 13:55]
日本製は、自動車やソニー等のこともあって、
他の国の製品とは若干扱いが違う。
それに助けられているかも。

479 名前:デフォルトの名無しさん mailto:sage [03/03/14 15:51]
そもそも、Rubyってのは真っ赤な日の丸から連想して
名付けたらしい。
大日本帝國言語ルビー万歳!

480 名前:デフォルトの名無しさん mailto:sage [03/03/14 17:36]
日本語対応の点で安心できるってのはあるなぁ

481 名前:デフォルトの名無しさん mailto:sage [03/03/14 17:46]
>>479
Pearl の次の誕生石だから。
寝たに混じれ酢。

482 名前:デフォルトの名無しさん mailto:sage [03/03/14 18:00]
bison (GNU Bison) 1.875をつかっているのですが、
yyerrlab1:
#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'
といってコンパイルが止まってしまいます。

ふみゅ〜ん。

483 名前:デフォルトの名無しさん [03/03/14 19:26]
スクリプトエンジンってbison やlex/yacc 等が
いるのですか???

素朴な疑問でスマソ


484 名前:デフォルトの名無しさん mailto:sage [03/03/14 19:35]
>>477
英語が通じそうにないから敬遠するというのはあるかも

485 名前:デフォルトの名無しさん mailto:sage [03/03/14 20:40]
>>483
再帰下降でガンバレばいらないと思うよ。


486 名前:デフォルトの名無しさん mailto:sage [03/03/14 20:49]
;



487 名前:デフォルトの名無しさん mailto:sage [03/03/14 21:04]
Delphi版 ギコBasicの アーカイブ一覧
www.geocities.co.jp/SiliconValley-Oakland/8522/data/059.lzh
www.geocities.co.jp/SiliconValley-Oakland/8522/data/giko.ico
www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikob064.lzh
www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobas.dcr
www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc02.lzh
www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc03.lzh
www.geocities.co.jp/SiliconValley-Oakland/8522/data/gikobc04.lzh
www.geocities.co.jp/SiliconValley-Oakland/8522/data/LucasTest.txt
www.geocities.co.jp/SiliconValley-Oakland/8522/data/mformula.txt
www.geocities.co.jp/SiliconValley-Oakland/8522/data/Script.txt
www.geocities.co.jp/SiliconValley-Oakland/8522/data/ugikoscr.txt
www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt


488 名前:デフォルトの名無しさん mailto:sage [03/03/14 21:48]
ギコBasicで2chブラウザ作れますか?

489 名前:デフォルトの名無しさん [03/03/15 01:23]
微妙に英文ライクで空白込みの名前も可、というオブジェクト指向言語を作りたい者です。
経験者の方にお聞きしたいのですが、下のサンプルコードのようなものですと、パーザを実装するのは難しいのでしょうか?

//宣言部
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".

490 名前:デフォルトの名無しさん mailto:sage [03/03/15 01:36]
しるか

491 名前:デフォルトの名無しさん mailto:sage [03/03/15 01:51]
(´-`).。oO(その言語でプログラムを書くのが難しいと思われます。。)

492 名前:デフォルトの名無しさん mailto:sage [03/03/15 01:53]
つーか自分でBNFでも書いてみろよ。>489

493 名前:デフォルトの名無しさん mailto:sage [03/03/15 03:48]
プログラムを自然言語ライクに書けるようなのが出来たとしても、
greeting を greeding と間違って書いてもちゃんと認識
してくれるようなシステムを作るのは難しい。


494 名前:デフォルトの名無しさん mailto:sage [03/03/15 09:17]
C言語版、C++版ギコBasicもよろしく

C言語版
page.freett.com/gikob/gikobw00047.zip

C++版
page.freett.com/gikob/gbtl-beta3.zip

495 名前:デフォルトの名無しさん mailto:sage [03/03/15 09:32]
>間違って書いてもちゃんと認識

勝手にそんなことされると意図と違って認識されたときにものすごく発見困難なバグの原因になりそうだ

496 名前:デフォルトの名無しさん mailto:sage [03/03/15 11:06]
Ada95@gccってば、エラーメッセージ中でスペルミス指摘してくれるのだが、そういうのじゃなくて?



497 名前:デフォルトの名無しさん mailto:sage [03/03/15 11:15]
>>489
例えば事前にstring nameという定義があったりすると、
private string name x. とか書かれると、「string name」「x」なのか「string」「name x」なのか曖昧なので、
識別子に空白を含められるようにするなら、区切りの記号か予約語を入れるようにしないと。

普通ならPascalっぽく ":" 使うところだけど、英文ライクということなので、isなりasなり入れれば?
private property greeding head is string = "hello,". とか。

もっとも、曖昧さも含めて楽しむような仕様にするなら、それはそれで。

498 名前:デフォルトの名無しさん [03/03/15 20:57]
そんな言語、情報処理にはむかんなぁ(w

まぁ、曖昧な処理にはいいかも?(w







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

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

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