「コンパイラ・スクリプトエンジン」相談室6 at TECH
[2ch|▼Menu]
[前50を表示]
750:デフォルトの名無しさん
05/08/03 13:04:20
>>749
>オブジェクト指向で
限定しない方が良いよ。OO に限定するとステートパターンしか出てこないから

751:デフォルトの名無しさん
05/08/03 13:10:40
状態遷移を美しく表現する設計は興味があるな。
世の中ではどんな形なんだろう

752:デフォルトの名無しさん
05/08/03 21:01:28
オブジェクト1つが、1つの有限状態機械だと思ってる。
UMLでもステートチャート図あるし
状態遷移をオブジェクト指向で表そうとするのは適切でないような気がするけど

753:デフォルトの名無しさん
05/08/03 22:18:27
う〜ん、でも、オブジェクトを入出力とするエンジンって有り得ないですかねぇ。
事前の状態遷移定義に従って、オブジェクトAがエンジンによってBに変えられるような。

別にオブジェクト指向に拘る訳じゃないですが、オブジェクト指向を例にとると、
1つのオブジェクトが、エンジンに渡されると、2つのオブジェクトに分岐したり、
その逆に2つのオブジェクトが揃ったら、1つのオブジェクトに合流したり…
さらに、その合流待ちの状態が無限って訳にはいかないだろうから、生存時間が決まってたり。

こういうのって、昔から学術的には扱われてると思うのですが、
実際に実装するとなると、どういう定義記述方法にして、どんな内部状態を持たせるのかなぁと。
もしかして、何か美しい設計が、すでにあるのかと思った次第です。

今なら、定義はXMLになるのかなぁ…

754:デフォルトの名無しさん
05/08/03 22:40:13
>>753
まさか…oさん?

755:デフォルトの名無しさん
05/08/04 00:07:42
CodeProject に XML を利用したステート・マシンのサンプルがあったような気が・・・
気のせいだったかも

756:デフォルトの名無しさん
05/08/04 05:06:54
要求に合うかどうか判らないけど、
Object指向でPush-down automatonならFinate State Machine。
尚、定義ファイルのパースは別途必要です。

757:デフォルトの名無しさん
05/08/04 16:54:55
>>754 いいえ違います。

>>755
URLリンク(www.codeproject.com)
キャ━━(*´∀`*)━━ !!!!!
と思いましたが、よく見ると、これ、現状のコードとスタート地点同じ気がします…
この先、アクティビティ図とか、ペトリネットレベルまで拡張していくと、
ごちゃごちゃしてきて、もっと美しい設計無いのかと思った次第です。
だから、この先にある、汎用性のあるものが知りたいと…
我侭で申し訳ありません。

>>756
有限状態オートマトンの汎用エンジンに、興味あります。
Radiumさんの過去ログに記述ありました。月末の2日分です。
URLリンク(www.radiumsoftware.com)

このEventStudioというものが、なんか実現してるっぽいです。
URLリンク(www.eventhelix.com)
少し詳しく読んでみたいと思います。


758:デフォルトの名無しさん
05/08/05 23:48:44
boost::fsm...

759:デフォルトの名無しさん
05/08/06 22:01:29
>>750
StatePatternで何か不都合があるのか?

760:デフォルトの名無しさん
05/08/07 00:27:31
URLリンク(www.eventhelix.com)

これは、どの辺がいいの?解説求む。

761:デフォルトの名無しさん
05/08/17 09:13:09
Windows上で、JITで生成したnative codeを、
DLL形式でファイルに保存して実行するのではなくて、
メモリに保存して実行する方法を教えてください。

762:デフォルトの名無しさん
05/08/18 02:30:07
誰かC++の関数スタックを活かしながらSchemeの継続を実装する方法を教えてください。
……できそうにないのはわかっているけど、あきらめるのはちょっとくやしい……

763:デフォルトの名無しさん
05/08/18 03:50:57
>>762
大域脱出のみに使われるような継続であることがSchemeのプログラム
を解析して証明できる場合なら、setjmp/longjmpでいけるんじゃね?
Schemeコンパイラ関連の文献読むと、色々ヒントが書いてあるよ。

764:デフォルトの名無しさん
05/08/19 00:42:56
やっぱり脱出方向だけにしてsetjmp/longjmpぐらいしかないか……

真面目に継続使いたかったら(自前でstack作ったりして)継続を管理するしかないのかな。
……Commandパターン使って少しでも手を抜くとするか……

765:デフォルトの名無しさん
05/08/19 03:04:24
>>764
SchemeをCPSでCにコンパイルする方式。
URLリンク(home.pipeline.com)

C関数はreturnしないので、スタックはヒープとして使う。
いっぱいになったらcopying GC。


766:デフォルトの名無しさん
05/08/19 23:28:22
自作言語に正規表現libをなんとかして融合しようと思ってるんだけど
リテラルとして組み込むと内部で正規表現objectと文字列リテラルの切り分け
みたいなのが別途必要っぽいし、ライブラリとして組み込むと呼び出し手順が
複雑になって結局使われないんじゃないかとか色々考えても良さげな方法が
みつからなかった。

つーかrubyみたくperlの真似して/〜/にすると//という1行コメントと勘違いする
かもしんないし、/はそもそも割り算に使ってるし。
独創的な構文にしすぎてメンテする俺自身忘却するようなの作っても
それはそれで意味ないし別に/〜/でもいいけどよ、出現位置によってトークンの
意味が変わるのって言語として変な気がするんだけどおまえらどうですか?


767:デフォルトの名無しさん
05/08/19 23:53:09
馬鹿の考え休むに似たり

768:デフォルトの名無しさん
05/08/19 23:54:27
正規表現を捨てて、MLのようなパターンマッチ構文導入がトレンド(大嘘)

769:デフォルトの名無しさん
05/08/20 01:38:30
>>766
個人的には Perl6 のパターンマッチングが好きだ。


770:デフォルトの名無しさん
05/08/20 01:57:23
コメントが//なら
|〜|にする。

771:デフォルトの名無しさん
05/08/20 07:53:05
とりあえずm4みたいにリテラルの前後変更できるようにしてさっさと組んじゃえば。


772:デフォルトの名無しさん
05/08/20 09:12:02
>>766
独自の記号から作ってもいいんじゃない?
「この言語で開発するときのフォント」って感じで
フォントと文字コードの定義から言語にしちゃうの。

そうすれば、紛らわしい記号に悩むことないし、
今まで2文字使っていた演算子も1文字ですむし
区別もはっきりするし、いいことずくめ

昔と違ってPCの性能はあまるぐらいなんだし
フォントぐらい共有しない独自のだって大丈夫だよ

773:デフォルトの名無しさん
05/08/20 12:57:10
orz〜orz
にしようよ

774:デフォルトの名無しさん
05/08/20 13:07:40
>>772
APLって知ってる?
独自記号の演算子だらけの言語。
MLやBBSなんかにコードをコピペできないとかいろいろ不便すぎて、
結局普通の文字コードの範囲で表現するほうがいいというのが結論。

例えばこのスレにもコードを貼れないよ。


775:デフォルトの名無しさん
05/08/20 15:41:01
>>774
そっか、そういうのがあるのかぁ。

でもその結論が出た時点とも今は違うんじゃない?
あ、Unicodeのワイド文字なら使ってもよさそう。

HTMLのエンコードみたいに<とかで内部表現しとくとか。

776:デフォルトの名無しさん
05/08/20 15:51:47
1. ワイド文字を持ったフォントを使ってるとは限らん
2. コペ時に表現が変わったら読みづらくてかなわん。
 昔のSmalltalk(Squeakは今でも)はフォントがいじくられてて、
 代入記号に←を使っていたが、コペると_になってダサダサだった。

777:デフォルトの名無しさん
05/08/20 16:15:04
日本人なら積極的に漢字を使おうぜ。
『置換「 」を「 」に。』
これでどうだ!
なんかひまわりの二番煎じっぽい気もする。

関係ないけど、'コペる'って斬新だな。
どこか間の抜けた響きで気に入った。

778:デフォルトの名無しさん
05/08/20 16:31:39
コペる21

779:デフォルトの名無しさん
05/08/20 20:11:25
最近、変数名、関数名、クラス名とかに漢字遣ったほうがわかりやすい気がしてきた。

780:デフォルトの名無しさん
05/08/20 20:26:16
補完やってくれるなら。
IMEのネックがあるかぎり漢字は受け付けないなあ。
名前考えるの面倒とは思うけど。

781:デフォルトの名無しさん
05/08/21 00:09:23
>>766
使うひとのことを考えて、できればリテラルで。
JavaやPHPのようにライブラリとしてしまうと、正規表現を文字列で指定しなきゃならん。
そうなるとエスケープがすごく面倒で、使う人にとってよくない。
リテラルとして言語仕様に組み込めば、おまえがしんどいだけで、使う人はハッピー。

構文はPerlやRubyをまねしたほうがよい。
使ってもらうことを考えたら、よほどの利点がない限りは他の言語と同じにしたほうが、使う人にとって敷居が低い。
おまえの独自言語のウリは正規表現にあるわけじゃないだろ、きっと。
ウリになる部分は独創的にしてかまわんが、ウリにならない部分はオーソドックスにしとけ。

コンテキストによって記号の意味が変わるのは、確かに悩ましいところだが、お前が苦労すればいいだけのこと。
使う人に苦労をさせるな。勉強しろ。
それでも「昔の仕様をひきづって変なコードになるのはイクナイ!」と思うなら、そうだな、「@/rexp/」とか「./rexp/」にでもしとけ。
まあRubyはPerlをまねただけで、Perlはsedをまねただけで、sedはviやedをまねただけで、edは割り算記号なんかなかったから問題なかっただけなんだけどな。よく考えたらそんな昔の仕様を今でもひきずるのはおかしい気がしてきた。


782:デフォルトの名無しさん
05/08/21 00:18:13
>>781
同意。
例えば正規表現リテラルが #/rexp/ の言語処理系も実際あるわけだし。
このくらいだと違和感なく使える。

783:デフォルトの名無しさん
05/08/21 12:05:31
スラッシュの代わりに別の文字を使えるようにするのも忘れるなよ〜
これ便利だから

784:デフォルトの名無しさん
05/08/21 23:38:39
主な括弧の場合は対応する閉じ括弧で終われるようにね


785:デフォルトの名無しさん
05/08/21 23:44:59
>>765
これを実装したSchemeコンパイラは公開されてるんでしょうか?


786:デフォルトの名無しさん
05/08/22 01:43:41
>>766
プリプロセッサで関数呼び出しに置き換えちゃうとか

787:デフォルトの名無しさん
05/08/22 02:52:36
プリプロセッサだと実際の行番号がわからんという不具合を抱えることになる
まあやり方次第かもしれないけど

788:デフォルトの名無しさん
05/08/25 03:42:41
>>785
Baker本人はもちろん実装してるんでしょ。
ほかにこんなのもあるようです。
Chiken Scheme Compiler
URLリンク(www.call-with-current-continuation.org)

しかしすごいドメイン名。



789:デフォルトの名無しさん
05/08/25 12:04:31
あるかどうかじゃなくて公開されているかどうかでは?


790:デフォルトの名無しさん
05/08/25 23:53:57
>>789
リンク先見てから言ってくれ。




791:デフォルトの名無しさん
05/08/26 01:39:26
リンク先を見ろという前にchikenが785の質問に合致するかどうかを説明すべきでは?




792:デフォルトの名無しさん
05/08/26 05:00:15
この話の流れで実は合致しないというオチだったらびっくりだな。

793:デフォルトの名無しさん
05/08/26 08:19:29
>>791
いたれりつくせりを要求してんな

794:デフォルトの名無しさん
05/08/31 22:12:59
おまいら日経ソフトウェアがきましたよ
URLリンク(software.nikkeibp.co.jp)


795:デフォルトの名無しさん
05/08/31 22:38:04
>Part4 Javaで作るオリジナル言語
>  〜やさしいLispインタプリタの作り方

オワタw

796:デフォルトの名無しさん
05/08/31 22:50:42
JavaでLISPなんて泥臭い部分全部端折ってるじゃん

797:デフォルトの名無しさん
05/09/01 00:02:08
testや最適化という一番泥臭い部分が残ってます。

798:デフォルトの名無しさん
05/09/01 01:26:34
test?はよくわからんが、最適化なんて枝葉だからどうでもいい

799:デフォルトの名無しさん
05/09/01 01:35:23
>>798
世の中のコンパイラ屋さんが泣いています

800:デフォルトの名無しさん
05/09/01 12:22:04
lispでtestって無茶簡単なような

801:デフォルトの名無しさん
05/09/01 16:18:08
>>799
いや、雑誌の件はインタプリタだから(w
正直java製のLISPインタプリタでタイトルに「簡単」とか書いてあると、
読まずに中身が解ってしまう気がするのは俺だけじゃないと思う。
バイトコードにコンパイルするとかならもの凄くおもしろそうなのに。

802:デフォルトの名無しさん
05/09/02 08:14:28
>>801
コンパイルは雑誌記事ではちと荷が重くないかい?
特集で3回くらい組まないと、紙面ではあるていどちゃんと説明できないだろうし。


803:801
05/09/02 14:23:52
>>802
確かに、雑誌では重いのは大変よくわかります、はい802氏の言うとおりです。
でもLISP(Schmeの方がより良いと思いますが)のネイティブ(バイトコード含む)へのコンパイルと最適化って
書籍では見かけた事が無いのですよ(国内しか調べてません、英語文献があれば教えてくれると嬉しい)
で、結局皆どこを見に行くかと言うとACMとか、各大学の論文とかなんですよ。
情報工学出じゃないと検索すら泣ける結果が多いから、日本語で書籍で出せば結構なインパクトあると思うのですがね。

中田先生の書籍は関数型言語より手続き型言語の物だけだしorz


804:802
05/09/02 17:25:05
>>801
コンパイラについて体系立った形で書籍として提供されれば、漏れも買うな。
しかし、話の流れは雑誌だし。
Lispのコンパイラについては、昔々にKCL(古っ)のソース読んだりして独学したけど、
あれは出力がCだし。

最近の処理系では、
URLリンク(dmoz.org)
なかんじなのだろうか。いくつかコンパイラもあるようだから、ソース読んでみるかね。



805:デフォルトの名無しさん
05/09/03 14:23:24
>>803を読む限り、Lispに特化した最適化や高度な最適化というより、
関数型言語のコンパイルと最適化の基本を知りたがってるように感じた。
もしそうならLispに限ることないんじゃないかな。
多分mincamlとか見るといいと思う。
URLリンク(min-caml.sourceforge.net)

806:デフォルトの名無しさん
05/09/03 15:57:02
>>805
そこでAppel先生ですよ

807:デフォルトの名無しさん
05/09/03 23:50:18
オイオイ、好い加減LISPの話はよせ。
おまえらつられすぎw

リンゴタソ、ハァハァ


808:デフォルトの名無しさん
05/09/03 23:53:42
>オイオイ、好い加減LISPの話はよせ。
なんで?
きみが嫌いなだけか?
理由でも書いてくれると話が広がるんだが。

809:デフォルトの名無しさん
05/09/04 00:41:31
もともとは日経プログラミングの記事の話題なんだっけ

810:デフォルトの名無しさん
05/09/04 01:01:50
質問です。
デザインパターンのInterpreterパターンはLL(1)文法しか
記述出来ないのでしょうか?
LALR(1)文法をInterpreterパターンで実装することは可能でしょうか?



811:デフォルトの名無しさん
05/09/04 13:20:17
>>808
だから807は広げたくないんだろw

812:デフォルトの名無しさん
05/09/04 18:47:46
807=811
コテハン名乗ってくれ
透明化するから

813:デフォルトの名無しさん
05/09/04 19:11:24
つNG word: w

814:デフォルトの名無しさん
05/09/04 19:41:39
ついでに、LALRも金句らすい


815:デフォルトの名無しさん
05/09/04 19:52:42
>>810
可能だよ。
Interpreter パターンの LL(1) 解析部を LALR(1) に改造すれば良い。
再帰下降方にする事だって出来る。

しかも Interpreter パターンであることに変わりは無い。

816:デフォルトの名無しさん
05/09/04 21:25:29
Interpreter パターンと Visitor パターンを混ぜて
どうこうするのって妙にわかりにくいというかしっくりこないと
いうか
オブジェクト指向の中に無理やり詰め込んでるような気がするのは
俺だけだろうか??

817:デフォルトの名無しさん
05/09/04 21:29:56
つ[スレリンク(tech板)l50]

……っていうかお前マルチやんか

818:デフォルトの名無しさん
05/09/04 21:56:59
つりんごタソ

819:デフォルトの名無しさん
05/09/04 22:08:26
>>815
ありがとうございます。
まずはLL(1)で簡単なものを作ってみて
その後LALRに変えていこうかと思います。

820:デフォルトの名無しさん
05/09/08 20:45:28
アフォ?
なんで、llからlalrにかえんのw


821:デフォルトの名無しさん
05/09/08 20:58:17
出来ないことを出来るようにするため

822:デフォルトの名無しさん
05/09/09 01:41:01
>>820
馬鹿かお前?

823:デフォルトの名無しさん
05/09/09 05:41:33
理由を書かないお前が馬鹿なのは明白ですw

824:デフォルトの名無しさん
05/09/09 11:24:47
本人じゃないから本当のところはわかんないけど、
LLでは扱えない構文を導入するのかもしれないし、
単に勉強のためなのかもしれない。
そんなことも思いつかずにアフォ呼ばわりするお前の成績は不可。

825:デフォルトの名無しさん
05/09/09 12:51:03
要するに、何も特定できないのに横からしゃしゃり出てきて
煽ってるだけってことですね。みっともないw

826:デフォルトの名無しさん
05/09/10 00:27:02
つーか普通にLLだと左再帰の問題があるだろ?

827:デフォルトの名無しさん
05/09/10 00:34:45
粘着にレスするのいいかげんやめようよ……

828:デフォルトの名無しさん
05/09/10 08:59:05
そうだな。以降>>827は放置で。

829:デフォルトの名無しさん
05/09/10 09:35:36
C++の名前空間ぽくしようと思ったけど
面倒くさすぎてやめた
やぱモジュール形式かな

830:名無しさん@そうだ選挙に行こう
05/09/10 20:27:29
>>829
ひとりごとは、他でやってくれ。


831:名無しさん@そうだ選挙に行こう
05/09/10 21:14:14
敵幹部「名前空間にひきずりこめ〜」
宇宙刑事「うわ〜」

832:名無しさん@そうだ選挙に行こう
05/09/10 22:24:33
>>831
何その間抜け時空

833:名無しさん@そうだ選挙に行こう
05/09/11 01:05:32
よーしスーパーササニシキだ

834:デフォルトの名無しさん
05/09/12 00:11:02
質問です。文法がLR(1)かどうかというのを、状態遷移図を完全に書かずに判断できますか?
たとえば、

S→V$
V→(L) | x
L→V | V;L

という文法があった場合、直感的にはLR(1)文法であると思われますが、理由が説明できません。
証明のためにLR(1)項集合の状態遷移を全部書くと結構な量になりそうです。
すべての状態遷移を書かずに証明する方法は無いものでしょうか。

835:デフォルトの名無しさん
05/09/12 09:39:12
>状態遷移を書かずに
ここを楽にしたいならyaccにでも食わせたら?
正確にはLR(1)じゃないけど

836:デフォルトの名無しさん
05/09/12 22:56:28
>>835
天才w

うまいやり方ですね。
LISP房には思いつかんでしょうなw


837:デフォルトの名無しさん
05/09/12 23:03:10
またLISPを目の敵にした馬鹿出現ですか?

838:デフォルトの名無しさん
05/09/12 23:05:29
だーかーらー
そうやって脊椎反射するから、わいてくるんだってば
いい加減スルーしようよ

839:デフォルトの名無しさん
05/09/12 23:05:48
NGワード:w

840:デフォルトの名無しさん
05/09/12 23:07:29
毎日いるみたいだな
LISP下手に導入して失業したか

841:デフォルトの名無しさん
05/09/12 23:08:59
834ですが、誓って836ではありません。

やっぱり正確なLR(1)であるかどうかを判断するには、
実際に状態遷移を書いてみるのが正攻法なのですね。
怪しそうなところだけ手でチェックして、見つからなければ…
自分でチェックプログラムを作るのがよさそうですね。
ありがとうございました

842:デフォルトの名無しさん
05/09/13 02:45:54
形式数学なら、大学のソフトウェア資材に証明チェッカとかいう
くだらないソフトあるはずだからそれでしらべてみ。
あとは普通に1階述語論理でかけるべ?

843:デフォルトの名無しさん
05/09/13 16:17:21
つ834==836


844:デフォルトの名無しさん
05/09/15 16:32:08
URLリンク(mono.kmc.gr.jp)


845:デフォルトの名無しさん
05/09/16 00:44:06
↑ブラクラ

846:デフォルトの名無しさん
05/09/16 02:07:56
>>845
少なくともそういうデマ系の嘘はやってはいけない事だと思うがどうよ。

847:デフォルトの名無しさん
05/09/16 02:16:36
URLだけ貼り付けるのも悪質

848:デフォルトの名無しさん
05/09/16 11:07:58
>>846
そんな無駄口たたくなら、お前が説明した文書でもかいたらどうだ?



849:デフォルトの名無しさん
05/09/16 11:38:40
なにこの小学生レベルの居直りw

850:デフォルトの名無しさん
05/09/16 12:10:03
なんだとコラ
小学生に失礼だ!

851:デフォルトの名無しさん
05/09/17 00:21:04
↑クソスレ

852:デフォルトの名無しさん
05/09/17 00:23:50
はいはいろりすろりす

853:デフォルトの名無しさん
05/09/17 01:24:13
←ブラクラ

854:デフォルトの名無しさん
05/09/17 01:32:57
おまえらつられすぎw
まるでLIS(ry


855:デフォルトの名無しさん
05/09/17 03:19:13
Targetを指定したディレクトリに作成できません

SRC=/topdir/src

/topdir/obj/hoge.o : $(SRC)/hoge.c
cc -g -c $(SRC)/hoge.c

makeするとカレントディレクトリにhoge.oが作成されてしまします。
/topdir/obj/配下にhoge.oを作成したい場合どおすればよいのか
アドバイスお願いします。

856:デフォルトの名無しさん
05/09/17 03:19:45
Targetを指定したディレクトリに作成できません

SRC=/topdir/src

/topdir/obj/hoge.o : $(SRC)/hoge.c
cc -g -c $(SRC)/hoge.c

makeするとカレントディレクトリにhoge.oが作成されてしまします。
/topdir/obj/配下にhoge.oを作成したい場合どおすればよいのか
アドバイスお願いします。

857:デフォルトの名無しさん
05/09/17 03:48:09
コンパイル後にmvで移動させちゃえば?
つか、なんでここで聞く?

858:デフォルトの名無しさん
05/09/17 04:05:40
/topdir/obj/をカレントにしてください
/topdir/obj/にシムリンク貼ってください
/topdir/obj/配下にお届けください
呼んでる-g -cの意味を教えてくれたらお礼に教えます


859:デフォルトの名無しさん
05/09/17 14:40:38
おまえ、Lis*erか?
gcc -o で指定しる!



860:デフォルトの名無しさん
05/09/17 15:03:29
池沼がわいてるな

861:デフォルトの名無しさん
05/09/17 21:57:48
下向き構文解析を手でがりがり書くときに、
シンボルテーブルに追加する変数のスコープって
どうやって管理してる?
Cライクなヤツを勉強がてら作ってるんだけど
俺は宣言された変数とかをそれが宣言された関数名とネストのレベルで
テーブル検索できるようにしたけど・・・

あと、シンボルテーブルってグローバルに一個持っておく感じでも
よいの?


862:デフォルトの名無しさん
05/09/17 23:32:48
>>861
変数表(グルーバル) -> 変数表(スコープA) -> 変数表(スコープB)

こんな感じでスタックを使うのはどうだろう?

863:デフォルトの名無しさん
05/09/17 23:35:44
グルーバルって寝ぼけているなorz
グローバルです。

864:デフォルトの名無しさん
05/09/18 00:22:47
グローバルのみハッシュ表みたいなのでO(1)で管理すれば効率よくなるはず。
名前空間あるとやっかいだけど。

865:デフォルトの名無しさん
05/09/18 03:19:52
ちっと前Cっぽいの実装したけど全部のブロックにIDつけると楽だったよ。
[0]void f[1](int a)[2]{ for(;;)[3]{...}; while(1)[4]{...}}
int main[5](int argc, char** argv)[6]{ ... }
わかりづらいけどこんな感じね([n]がID)。
で、記号表を同名登録可能にして、登録のときは名前=>ID,情報として、
検索のときはHITした集合から可視スコープのIDで絞り込む。
可視スコープはスタックで管理してね(上の例ではwhileの中なら[4,2,1,0]、
whileから出たら[2,1,0])。

あと、まっとうな言語なら記号表は1個でいいと思うよ。
Cは構造体とかが別ネームスペースだから複数あったほうが実装しやすいけど。

866:デフォルトの名無しさん
05/09/18 06:15:58
class Table {
 Table(Table parent);
 Object get(String ident) { 自分が持ってなければ親を検索 }
}

// 再帰的下向き構文解析
void statement(Table t) {
 varDecl(t)かblock(t)かexpr(t)か……を呼び出す
}
void varDecl(Table t) {
 tに登録
}
void block(Table t) {
 t = new Table(t);
 ブロックの終わりまでstatement(t)を呼び出す
}
 :

867:デフォルトの名無しさん
05/09/18 06:26:34
>>865
(名前,ID)=>情報
ではなくて?
構文解析終わったブロックの情報を捨てないんだとすると、
最後のほうでは、i を検索すると大量にヒットする予感。

868:デフォルトの名無しさん
05/09/18 14:22:28
Cで開発された、Cのコンパイラのソースで、サンプル的なものってあります?

869:デフォルトの名無しさん
05/09/18 14:25:40
>>868
手当たり次第のスレで聞きまくってるな

870:デフォルトの名無しさん
05/09/18 14:31:17
>>869
いや、初めてここで聞いてるんだが

871:デフォルトの名無しさん
05/09/18 14:37:35
>>868
gcc

872:デフォルトの名無しさん
05/09/18 15:35:14
gccはいいサンプルですね。

873:デフォルトの名無しさん
05/09/18 16:00:28
gcc 肥大化しすぎて わけわかめ

874:デフォルトの名無しさん
05/09/18 16:14:36
読むとこなんてすぐわかるだろうが
何のためのモジュール化だっちゅーの

875:865
05/09/19 00:12:52
>>867
確かにそっちの方がずっと効率いいですね。
今度からそうしますわ

876:デフォルトの名無しさん
05/09/23 10:02:46
                                 _i―-..、
                             _.. ---- ..,,/i,.ゝ''、 `''、
                  ._   ,..r冖''″     .匸、 .ljニ;;-..,.l,
                    ,''| .|ヽ/                ゙''ヒ|、\`''ミ.l、
                    匸 コ         i ''、 .l.l  .l.l\.ヽ ゙.lL
                 l゙ .!ッ″      ''li,゙''i、ll, .''n llli 丿!ヽ.ヽ..l  .l゙''‐
                 ! /  / !.i l.、   ll,.l.l! !,,-,,./|,/ ,lヽ / ..'','',  '',
                   |│ l ! |、 ''li'',i、  !. .;;'''''';;;;`ll l, ゙/゙''ミ/、 !l、 !
                :| l ! | lヽ,,''ミ゙=... |   `,;;;;′. ! l ,! .! ゙l  │
                 ! .liリ.レ. ゙lii|" 、'';;;l           | .|" │ .|  l,|
   Compileマダー?     .| .l |.|  .}.l''v゛"'''' /       '''' .,! .|  .! ,!  l,!
            _   ,,. l! |l゙  !│.l   ~ −''    /] !  ,!. .il  .!′
        ./゙r''" .゛  .`l" ヽ..l リ .''l, .l ! /-、、     ._ ;;二八 .l   ! /.| .l
    †丶 /」川!; .ハ.、i ||.「 l l,   ll, U !  .`゙''ニ;;アレ゛ ,, ー.l,!  .l/ .l゙ /
  彡ヾミ;.,|.!゙` !,.ゞ゙⌒巛|| i;.} .l.  .lく.lLミ''''ー''゙,゙..ー゙ネ.!ー'' ̄´゛     l /
†ヽ. 彡''ミ;.|. `l l. ̄. ̄ l,l''゙l.〃  ヽ  l.゙l/''l广''"゛  C/C           .iゞ
~\\  ''ミ;`ヽlケcYc"ノヽ{゙     \ .l,      /
  \\..''ミ;,;;lΛ_ .人 __,}"|      `''、,ヽ     ノ|
    \\/;,,/〔/ i .l ,,,, . i.l       `''ゝ
      .○'' /二''lミ.''く、 .゛.ゝ
      . i‐゙/゙''.;;;;;ゝ''゙''゙テ〜.!
      . ゙‐''l′  .|''⌒''''/┘
        `--.'' `- -.′


877:デフォルトの名無しさん
05/09/29 01:00:47
並列化コンパイラを作ることになりました。
コンパイラについては全くわかりません。
>>5にあるような本を読んで勉強しようと思います。
どのほんがおすすめですか?

878:デフォルトの名無しさん
05/09/29 01:06:07
>>877
大学の授業か?したから2冊目以外全部読んでみれば?

879:デフォルトの名無しさん
05/09/29 01:06:18
なんで突発的に並列化コンパイラ作りたくなる奴が多いんだろうか。

880:デフォルトの名無しさん
05/09/29 02:27:40
>>878
並列だと院か卒論だと思うが卒論にしては遅いので院か?


881:デフォルトの名無しさん
05/09/29 08:47:57
院にもなって>>877はありえないと思うがどうか

882:877
05/09/29 12:38:48
卒論です。

883:デフォルトの名無しさん
05/09/29 12:48:49
こっそりで良いから、どこの大学のどの研究室か言ってみ?

884:sage
05/09/29 13:59:47
いえません

885:デフォルトの名無しさん
05/09/29 16:14:13
今の時期卒論で並列ってきつくね?
俺だったら泣きそう。


886:デフォルトの名無しさん
05/09/29 16:17:49
もう間に合わないだろう。
そっとしておいてやれ。

887:デフォルトの名無しさん
05/09/29 17:17:11
学部時代ちゃんと勉強してきたやつなら、まだ3ヶ月もあるから
卒論レベルの並列Cコンパイラ程度は書けるだろうし、
実際似たようなことしたやつは何人もいる。
また、卒研を冬学期になってから始める大学も多い。

だが、>>877のような書き込みしてるやつには無理だろうな。

888:デフォルトの名無しさん
05/09/30 16:40:37
てか、車輪の再発明みたいなことしても・・意味なくねぇ?

889:デフォルトの名無しさん
05/09/30 16:48:38
>>888
さすがに作るだけじゃなくて、なにかあるんじゃない?

890:デフォルトの名無しさん
05/09/30 19:47:58
卒論という事以上のなにかが?

891:デフォルトの名無しさん
05/09/30 19:57:04
おまいら学部生の卒論に夢持ちすぎ…

892:デフォルトの名無しさん
05/10/01 00:34:54
血や肉となりゃいいんでないの?

893:デフォルトの名無しさん
05/10/01 01:34:11
大学に行ってコンパイラ作りを学んで
将来はマイクロソフトか日立・富士通などに
入って世界に通用するエースコンパイラーに
なりたいと思ってます。

そうなるにはどれくらいの実力が必要でしょうか。
何の資料も見ずに鼻歌交じりでCコンパイラを
書けるくらいでないとだめでしょうか。

894:デフォルトの名無しさん
05/10/01 01:35:18
とりあえず、某ランドが出てこなかったのは致命的

895:デフォルトの名無しさん
05/10/01 01:40:58
>>893
とりあえず>>1-6あたりの事が知識として持っているか

896:デフォルトの名無しさん
05/10/01 06:04:12
>>893
まずは学力上げて良い大学いけるようにしろ。


897:デフォルトの名無しさん
05/10/01 09:08:11
むしろコンパイラになりたいらしい

898:デフォルトの名無しさん
05/10/01 09:12:20
>>893
あんた素人じゃないだろw

899:デフォルトの名無しさん
05/10/01 12:04:42
Cコンパイラは鼻歌交じりに書いたけど
無職です

900:デフォルトの名無しさん
05/10/01 15:28:41
8bit時代にCコンパイラをアセンブラで書いたけど
フリーターです

901:デフォルトの名無しさん
05/10/01 17:00:06
OpenMP仕様に基づいて自動並列化するコンパイラは書いたけど
ニートです

902:デフォルトの名無しさん
05/10/01 17:26:58
真実が混じってそうでマジコワスww

903:デフォルトの名無しさん
05/10/01 17:35:02
ちなみにわたくしは茶色の長髪ですが、包茎です。

904:デフォルトの名無しさん
05/10/02 00:53:14
すいません、ちょっと教えて欲しいのですがJavaScriptでセッションに値を格納したり
セッションから値を取ってくると言った事はできるのでしょうか?
ググッてもサーブレットやphp、JSPなどがヒットしてJavaScriptで出来るかどうかがよくわかりません。
例えばこんな感じです

<script>var a ="あ";</script>

この変数aをセッションに格納したいのですが

905:デフォルトの名無しさん
05/10/02 01:00:06
>>904
なぜここでその質問したのか聞かせてもらおうか

906:デフォルトの名無しさん
05/10/02 01:10:16
なぜといわれてもjavascriptで板を検索しても該当スレがないので
スクリプトという文字がスレタイに入ってるこのスレを除いてみると
javascriptについての話題がいくつかあったので質問させてもらったのですが

907:デフォルトの名無しさん
05/10/02 01:12:44
凄い論理だ。マジレスすると、クッキー使って何とかするべし。

908:デフォルトの名無しさん
05/10/02 01:21:27
クッキー?・・・・・・要は使えないってことですか・・・

909:デフォルトの名無しさん
05/10/02 01:22:29
>>906
多分。スレ内javascriptで検索して幾つか引っかかったから良くも見ずに質問したんだろうが。
ここはプログラミング全般の質問やらをする場所じゃなくて、コンパイラやスクリプトを作る為の情報を交換するスレだよ。

910:デフォルトの名無しさん
05/10/02 01:39:02
ついでに言うと、サーブレット・PHP・JSP とも、サーバ側で処理されるが、
JavaScript はクライアント側で処理されてる。つまり根本的に仕組みが異なる。

911:デフォルトの名無しさん
05/10/02 06:45:43
>>908
JavaScript に cookie を読み書きする API がある。
スレ違いもいいとこなのでこの話はこれで終わりで。

912:デフォルトの名無しさん
05/10/02 09:54:07
つか板違いだなWebProg板池

913:デフォルトの名無しさん
05/10/02 11:01:12
>>906
小学生じゃないんだから、そんなアホな理屈が通るとでも思っているのか

914:デフォルトの名無しさん
05/10/02 11:18:46
サーバサイドJavaScriptってのもあったような気はするけどな。
>>904 がその話をしとるとは思えんし、JavaScriptがどこで動くかも
知らんような奴に満足にWebアプリが書けるとも思えんな。

>>909
>コンパイラやスクリプトを作る為の情報を交換するスレだよ。

だからボクはスクリプトを作ろうとしているのに! とか思ってそうな悪寒。
ここはJavaScriptなどのプログラミング言語で何かを作るための相談室じゃなく、
JavaScriptなどのようなプログラミング言語の処理系を作るための相談室だよ。

915:デフォルトの名無しさん
05/10/02 17:20:13
なんだこのスレ・・・・www
クッキーなんて間抜けなことほざいてるから軽く流したんだが
それに輪をかけて偉そうな住人には思わず苦笑しちまったよwww

916:デフォルトの名無しさん
05/10/02 17:50:34
>>915
まあその中でも君のレスが一番偉そうだけどな

917:デフォルトの名無しさん
05/10/02 18:08:11
>>916
よくある質問者の逆切れだよ。スルーしる

918:デフォルトの名無しさん
05/10/02 19:29:34
>>917
JSPスレでも馬鹿さらしてた池沼だった。


919:デフォルトの名無しさん
05/10/02 19:35:37
自演乙w

920:う゛ぉいど
05/10/02 22:21:38
と言うことにしたいのですね。


921:デフォルトの名無しさん
05/10/02 22:23:45
うん。

922:デフォルトの名無しさん
05/10/02 23:29:01
# りんごタンの本は初心者にはお勧め!
# ただし、あまり深く突っ込まないことw

ところで、中田先生の本だけど、最適化がメインってなってるけど、
そうとも思えないんだけどなぁ。コンパイラ全般についてうまく書かれて内科医?

923:デフォルトの名無しさん
05/10/03 08:49:48
>>922
Yes。
目次はこんな感じ。
URLリンク(www.k.hosei.ac.jp)

924:デフォルトの名無しさん
05/10/05 22:32:39
BNF記法って似てるんだけど色々な書き方があって悩む。
これぞスタンダードっていう書き方はどれですか?

925:デフォルトの名無しさん
05/10/05 22:50:39
BNFのスタンダードはとっても簡単。::=と|と<>しかない。


926:デフォルトの名無しさん
05/10/05 22:54:19
>>924
つ[RFC 2234]

927:う゛ぉいど
05/10/05 23:51:51
>>926
だがおのおの拡張したBNFはそれなりに便利だと言う罠があるのであるよ。

ようするに自分の言語仕様を記述しやすいように皆が改変するからいかんのである(w


928:デフォルトの名無しさん
05/10/05 23:52:33
やべ、昔ちゃちゃ入れた時の名前が記憶されてるでやんの(がーんw


929:sage
05/10/06 00:35:34
>>922
次スレでは、テンプレ変更した方がいいな。


930:デフォルトの名無しさん
05/10/06 00:40:10
相談室ということで、相談させてください。

実は、何処のコンパイラを使うかで妻と喧嘩してしまって、
もう何年も夫婦生活がありません。
フェ○もしてもらってません。どうすればいいですか?


931:デフォルトの名無しさん
05/10/06 00:44:29
>>930
離婚して古の言い伝えどおりに
「女房と畳は」以下略


932:デフォルトの名無しさん
05/10/06 01:38:02
>>930
君にはこっちの方が役に立つかも

スレリンク(tech板)

933:デフォルトの名無しさん
05/10/06 10:24:28
>>876
リンゴたんに中田氏 ハァハァ

934:デフォルトの名無しさん
05/10/06 13:52:50
gccとnasmでコンパイルしたものをくっつけて一つにして実行したいんですが
makefileにどう書けばいいですか?

935:デフォルトの名無しさん
05/10/06 13:57:08
>>934
URLリンク(pc7.2ch.net)

936:デフォルトの名無しさん
05/10/06 21:00:15
四則演算の算術式を処理するコンパイラのサンプル的なものはありますか?
ちなみに、言語はCです。

937:デフォルトの名無しさん
05/10/06 21:09:57
ありません

938:デフォルトの名無しさん
05/10/06 21:14:48
最近、学校の宿題の丸投げと思われる
レベルの低い質問が多くて萎えるな。
なんかこう、とんでもないコンパイラを作ってる
大物からの高度な質問はないもんかな。

939:デフォルトの名無しさん
05/10/06 21:22:12
がんばれ。いいだしっぺ。

940:デフォルトの名無しさん
05/10/06 22:15:53
大物はこんな場所に(ry

941:デフォルトの名無しさん
05/10/06 22:34:01
>>936
スクリプトでよければこの辺とかどうよ?
URLリンク(kmaebashi.com)

942:デフォルトの名無しさん
05/10/06 23:01:05
>>923
日本語で読めるコンパイラ系の技術書で、これ以上のものってありますか?


943:デフォルトの名無しさん
05/10/06 23:04:16
りんご畑

944:デフォルトの名無しさん
05/10/07 04:41:57
ありません

945:デフォルトの名無しさん
05/10/07 18:10:18
>>940
ワロタw


946:デフォルトの名無しさん
05/10/07 21:23:19
なんか、何だかんだといっても、
隠れ?リンゴファンは結構いるみたいだなw


947:デフォルトの名無しさん
05/10/07 21:37:53
>>946
そりゃAppleマニアは][以降結構いるわけであるからして(違

948:デフォルトの名無しさん
05/10/08 18:03:49
それに比べ、Rub(ry


949:デフォルトの名無しさん
05/10/08 20:05:37
新しい言語は新しいパラダイムの中で産まれる。

古い言語=抵抗勢力

みたいなもの。


950:デフォルトの名無しさん
05/10/08 20:35:27
Lingoは古い言語だろ。

951:デフォルトの名無しさん
05/10/08 22:02:12
りんごタソに、ルビーの宝石をプレゼントしたい。


952:デフォルトの名無しさん
05/10/08 22:03:02
>>950
関係ないけど、ビンボーとかいう言語なかった?
ちょっと思い出した。

953:デフォルトの名無しさん
05/10/08 22:24:29
limbo じゃなくて?

954:デフォルトの名無しさん
05/10/08 23:56:37
あっと、それだったかなぁ?
Plan9とかいうOSに乗ってたような気がする。


955:デフォルトの名無しさん
05/10/09 07:24:08
limbo -> Inferno
Alef -> Plan 9
でも、使ったことない・・・
いや、それ以前にわざわざ使う必要のあるOSなのか?
それも、デスクトップOSとして・・・

956:デフォルトの名無しさん
05/10/09 20:26:53
>>955
TNX ビンボーでなくリンボーか、しかもos
も違ってた、

ひとの記憶なんてあてにならんな。すまそ>>ALL


957:デフォルトの名無しさん
05/10/10 23:59:34
中田先生の書籍なんだけど、テンプレにかいてあるやつの他に
あと 2 冊、本屋にあったんだけど?

テンプレの本が、あとの二冊を含むようなイメージでいいのですか?
(時期的にも、あとだし、量的にも多いし。。。)


958:デフォルトの名無しさん
05/10/11 08:30:09
中田先生の本を読んだだけの初心者ですが、質問させてください。
JavaCCでECMAScriptの文法を仕様書にしたがって書いたのですが、
そのままでは多数のエラーが出て使えませんでした。

左再帰に関しては中田先生の本にも書いてあったので回避出来たのですが、
"Choice conflict involving two expansions at ..."
などのエラーの回避の仕方がわかりません。
ConflictについてはJavaCCでLOOKAHEADを使って回避しましたが、
本当にそれで正しく回避できているかどうかの自信はありません。

質問はそのエラーについてではなく、一般的な文法の書き方についてです。
実際に文法を書く人が知っておくべき常識は一体どこで身につければよいでしょうか?
和文英文問いませんので、何か参考資料があれば是非教えてください。よろしくお願いします。

959:デフォルトの名無しさん
05/10/11 08:44:56
>>942
日本語の本だとトップは中田本かドラゴンブックかだと思う。
>>957
いいよ。

960:957
05/10/11 18:32:27
>>959
ありがとうございます。
テンプレの本を購入&読破して

なんとか、技術を身に着けたいと思います。


961:デフォルトの名無しさん
05/10/11 20:09:41
>>958
conflictは文法が曖昧だということを意味するので、
エラーメッセージから文法のどの部分が曖昧なのかを調べ、
それを書き換えて曖昧さを除けばいいわけですが。

そもそも、LL文法とLR文法の違いは理解していますか?



962:デフォルトの名無しさん
05/10/11 20:22:01
>>961
それは理解している、と思っています。少なくとも本に書いてあるレベルでは。
ただ、左再帰みたいに曖昧さはこうやれば毎回確実に解消できる、
もしくはある程度パターンが決まっていて普通はそのどれかに変換できる、
というようなものがあるのではないかと思ったのです。

一応コンフリクトの部分は自分で解析してまず問題ないと思う形に書き直しましたが、
書き直した形が書き直す前の形と確実に一致している自信がなく、
すべてのパターンのテストの方法もいまいちわかっていないので質問しました

963:デフォルトの名無しさん
05/10/11 20:49:14
>>962
つ 書き直す前と後で受理する入力列が等しいことを構造帰納法で証明

964:デフォルトの名無しさん
05/10/12 21:42:40
りんごたんは何の仕事してるの?
コンパイラのプロ?


965:デフォルトの名無しさん
05/10/12 22:21:23
りんごたん、りんごたんてよく出てくるけど、なんのこと?

966:デフォルトの名無しさん
05/10/12 22:34:37
>>965
URLリンク(apple.jpn.ch)

967:デフォルトの名無しさん
05/10/12 23:26:46
>>965
中田先生のお弟子さんが書いたコンパイラ本の中でたとえ話が全部りんご農家で語られているからです。


968:デフォルトの名無しさん
05/10/12 23:34:28
あーつまんね

969:デフォルトの名無しさん
05/10/12 23:55:30
いろんな意見があると思うけど、普通の本やに並んでるというのは
凄いとおもうよ。ある意味、中田先生でもできなかったこと。


970:デフォルトの名無しさん
05/10/12 23:58:31
中田氏とりんごの話したい奴は別スレ立ててくれ
うざい

971:デフォルトの名無しさん
05/10/13 00:42:33
>>967
それか。俺もそれ買ったわw

972:デフォルトの名無しさん
05/10/13 01:48:45
>>969
中田先生の本は学術書に入るから普通の本屋においてあるはずもないでしょうに(w


973:972
05/10/13 01:49:53
おいてあたらその本屋尊敬すると思う(というか専門店かと瞬間思うに違いない


974:デフォルトの名無しさん
05/10/13 13:52:35
専門家の皆さんに質問です!
浮動小数点定数を正規表現とCF文法で表すとどうなりますか?

975:デフォルトの名無しさん
05/10/13 15:14:54
>>974
宿題は!
自分で解こうね?

976:デフォルトの名無しさん
05/10/13 19:00:36
大物はこんなところに(ry


977:デフォルトの名無しさん
05/10/13 21:10:46
Rubyだと、中田本とか約にたたないの?


978:デフォルトの名無しさん
05/10/13 22:45:39
Rubyは機能を優先しすぎて破綻してて最適化どころじゃないからな

979:デフォルトの名無しさん
05/10/14 08:15:50
じじい避けには丁度いいw


980:デフォルトの名無しさん
05/10/14 19:23:52
いまからは最適化なんて過去の話題になるんだろうなぁ。。。


981:デフォルトの名無しさん
05/10/14 19:59:36
980を超えたので、新スレッドを立てました。

「コンパイラ・スクリプトエンジン」相談室7
スレリンク(tech板)

です。

982:デフォルトの名無しさん
05/10/15 00:14:33
まあ、その、なんだ
埋めようか

983:デフォルトの名無しさん
05/10/15 01:51:29
埋め

984:デフォルトの名無しさん
05/10/15 02:15:56
梅は〜、咲いたか〜、桜ぁ〜はまだかいな。


985:デフォルトの名無しさん
05/10/15 02:36:33
無駄に埋めるな
980超えれば時間がくれば自動的に落ちる

986:デフォルトの名無しさん
05/10/15 06:32:15
>>985
それはしらなかったが、そうだとしても無駄に埋めると何か逆効果があるの?

987:デフォルトの名無しさん
05/10/15 06:37:31
1000まで行かないと外部の有力な過去ログサイトに収集されない

988:デフォルトの名無しさん
05/10/15 08:15:17
>>987
どこ?それ。

989:デフォルトの名無しさん
05/10/15 09:42:09
うめ

990:デフォルトの名無しさん
05/10/15 18:38:57
りんご


991:デフォルトの名無しさん
05/10/15 19:04:44
1000ならビルゲイツの財産は俺のもの

992:デフォルトの名無しさん
05/10/15 19:51:06
たけ

993:デフォルトの名無しさん
05/10/15 20:05:11
じま

994:デフォルトの名無しさん
05/10/15 21:53:00
かん

995:デフォルトの名無しさん
05/10/15 22:13:07
チャンカン

996:デフォルトの名無しさん
05/10/15 22:18:33
次の人>>986に答えて


997:デフォルトの名無しさん
05/10/16 01:17:30
おまいらの貴重な人生を無駄にしている

998:デフォルトの名無しさん
05/10/16 01:32:43
てst

999:デフォルトの名無しさん
05/10/16 01:33:04
てst

1000:デフォルトの名無しさん
05/10/16 01:33:58


1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4953日前に更新/221 KB
担当:undef