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


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

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



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

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

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/
3 pc5.2ch.net/test/read.cgi/tech/1070089173/
4 pc5.2ch.net/test/read.cgi/tech/1100097050/
5 pc8.2ch.net/test/read.cgi/tech/1106129164/ (前スレ)
関連リンクは多分 >>2-10 あたり

53 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 00:00:13 ]
アホなら黙ってりゃいいのに。


54 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 02:18:35 ]
>>52
機能がないことがその証拠ってのもおかしいだろ。機能がないからほとんどの人間が気づいていないだけ、という可能性も十分あるわな。
いろんな記号を多用するような言語(スクリプト言語では多いよな)なら、コンテキストによってlexerの動作を変えたいという要求はすごくある。
それが今までのツールじゃ難しかったか面倒くさかったから、言語の機能が増えるたびに予約語も増える傾向にある。

55 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 03:05:04 ]
>>52
> 人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
ここに全く同意できない。
開発する人間とって曖昧な、落とし穴の多い実装になりそうだ。
↑これなら納得するし説得されてやる。


56 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 04:44:45 ]
>>55
>開発する人間とって曖昧な、落とし穴の多い実装になりそうだ。
んで、だからこそそれをサポートする>>39の提案が意味を持つわけだね。

57 名前:デフォルトの名無しさん [2005/05/11(水) 20:41:25 ]
WindowsでC++モドキを作ってて、UNIXに移植する段階でこの問題が出た。

WindowsのC++処理系のほとんど(全て?)はtry catchの例外機構を
SEHで実装してるけど、
UNIXでは何使って実装するもんなの?まさかsetjmp/longjmpとか?


58 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 20:54:31 ]
g++を見たほうが早いような

59 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:01:17 ]
たぶんアセかな。
そのアセ自体が何してるのか知らんが。

60 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:07:35 ]
>>57
言いたいことはわからんでもないが,SEHとはtry/catchのような構文によるエラー処理の
総称では?
SEHをCで実装する場合、setjmp/longjmpもしくは2返戻値によるのが普通かな。

61 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:09:26 ]
確かに
> try catchの例外機構をSEHで実装してるけど、
という言い方は変だよな。



62 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:10:15 ]
>>57
つまり、そのまさか。

63 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:12:12 ]
>>60-61
知ったかぶんなよ。
WindowsにはSEHという機構がOSに組み込まれてるの。

64 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:19:39 ]
>>63
そんなことは分かってる

65 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:20:25 ]
ちなみに例外がアプリケーション側で補足されず、そのままスルーすると出る
デフォルトのダイアログ(ご迷惑をお掛けしています〜)は、
OS側にこの機構があるおかげです。
UNIXの糞ダンプと違って、そのままデバッガに飛ぶなりできます。。。

66 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:22:08 ]
>>64
いや、おまえ判ってない。
ぜんぜんわかってない。

67 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:23:08 ]
>SEHをCで実装する場合、setjmp/longjmp
なんせこんなこと言ってるし

68 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:25:45 ]
じゃあ糞UNIXはsetjmp/longjmpで糞チェインを自分で作らないと駄目って事で。

69 名前:デフォルトの名無しさん [2005/05/11(水) 21:28:21 ]
言語語ってるやつが、WIN使いとはなw
ワロタ


70 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:29:36 ]
え、どこが面白いの?

71 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:31:13 ]
>>69
そんな奴おらんだろw




72 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:33:25 ]
Windowsの高度な技術議論についてけずUNIXerの頭が崩壊したらしいなw

73 名前:デフォルトの名無しさん [2005/05/11(水) 21:34:28 ]
それで、UNIXでは本当にsetjmp使うんですか?
なんか信じられないけど。
まあgcc読んできますが。

74 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:39:00 ]

SEHとはこれのことだろ。
www.microsoft.com/japan/msdn/library/ja/jpdndeepc/htm/deep051099.asp?frame=true
www.microsoft.com/japan/msdn/library/ja/jpdndeepc/htm/deep060399.asp?frame=true

75 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:42:23 ]
>>65
サーバでそんな事してたらアホだろ

76 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:42:36 ]
なんでsetjmp使うことに驚く。別にUNIXでなくても普通に使ってるぞ。

ところで上でもめてるようだが、SEHという言葉には

・win32固有の機能(よく__try, __exceptで利用するものね)
・try〜catch的なエラー処理構文(on error goto等との対比で)

のふたつの意味があり、Microsoftでもその両方を文脈に応じて使いわけている。

77 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:45:19 ]
>>75
Windowsにはサービスというものが(以下略
ほんと糞UNIXerは使えねえなw

78 名前:デフォルトの名無しさん [2005/05/11(水) 21:46:00 ]
UNIX使いの使えなさ加減にワロタ

79 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:46:44 ]
>>76
文脈から理解できなかったアフォの言い訳だなw

80 名前:デフォルトの名無しさん [2005/05/11(水) 21:48:08 ]
UNIX使いのアホさ加減にワロタ

81 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:49:08 ]
やけにスレ伸びてるかと思ったら
UNIX嫌いのバカが一匹いるだけか



82 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:49:50 ]
UNIX使いの煽りってたいしたことないのなw

83 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:50:15 ]
>>77
一生モニタのお守りしてるつもり?

84 名前:デフォルトの名無しさん [2005/05/11(水) 21:50:18 ]
UNIX使いの煽りの低レベルさにワロタ

85 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:51:11 ]
windows最高。microsoftは神。

86 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:51:14 ]
>>83
無知がでしゃばるなって。
サービス登録すれば勝手に再起動とか色々できるわけですよ。

87 名前:デフォルトの名無しさん [2005/05/11(水) 21:51:42 ]
UNIX使いの無知さ加減にワロタ

88 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:52:06 ]
はやくunixにもwin32が移植されるといいね。

89 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:52:40 ]
win32万歳。seh万歳。

90 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:54:02 ]
>>86
ヘェ、凄い凄いw

91 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:54:13 ]
windowsは究極のos



92 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:54:33 ]
UNIXを馬鹿にしないでください
2chのサーバだってUNIXですよ?

93 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:54:44 ]
windowsに足りないものは何もない

94 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:55:51 ]
余分なものは山ほど(ry

95 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:56:07 ]
みんなで崇めようwindows

96 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:56:26 ]
>>92
おれが馬鹿にしてるのはUNIXでなくてここにいるUNIX使いだってばw

97 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:56:59 ]
>>96
おい、レベル下がってるぞ
もっと面白い事言ってくれよ

98 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:57:00 ]
こんなに愛されて…windowsも幸せ者だな

99 名前:デフォルトの名無しさん [2005/05/11(水) 21:57:29 ]
UNIX使いの早とちりにワロス

100 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:57:47 ]
そうだwindowsで行こう

101 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:58:38 ]
世の中windowsが標準です



102 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 21:59:52 ]
つまらん

103 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:00:33 ]
  _  ∩
( ゚∀゚)彡 windows! windows!
 ⊂彡

104 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:00:38 ]
UNIXにもプロセスが死んだらコアダンプというものがあって、
デバッガを自分で起動できますが何か?

105 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:02:20 ]
unixさんが好きです。でもWindowsさんの方がもっと好きです。

106 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:03:53 ]
お前ら、まとめてこっちへ行っちゃえ。

最高に頭悪そうな発言してください in ム板 (V)
pc8.2ch.net/test/read.cgi/tech/1115386557/

107 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:06:38 ]
ためになるお話でした。

108 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:10:48 ]
いまさらWindowsで動かない処理系はクソだと思ってる俺様がきましたよ

109 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:12:14 ]
もうみんな帰っちゃったよ

110 名前:デフォルトの名無しさん [2005/05/11(水) 22:40:37 ]
>>108
馬鹿の見本みたいな奴だなw


111 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:41:58 ]
windowsが好きで好きで仕方がない



112 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:42:57 ]
>>110UNIXだけだとサーバの日陰者アプリしか作らないじゃん

113 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:44:00 ]
windowsを愛することにかけては誰にも負けない

114 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:44:42 ]
>>112
UNIXでも最近まともに動いてるサーバはWebぐらいだよ。
正直ApacheやJavaのおかげと言っていい。
他の用途では正直使い物にならない。

115 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:44:50 ]
windowsのためなら死ねる

116 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:46:41 ]
まだDBがあるさ。
Oracleとかのおかげだけど。

117 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:47:07 ]
削れるものは何もない。加えるものは何もない。それがwindows

118 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:48:25 ]
何も足さない、何も引かない

119 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:48:53 ]
Windowsの49日ルールがある限りUNIXは生き残れる!

120 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:50:01 ]
そんなにいいのかwindowsは。明日買ってこよう。

121 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:50:10 ]
そろそろ違う所でやってもらえませんか?>UNIX関係
一応誘導しておきます。

UNIXプログラミング質問すれ Part5
pc8.2ch.net/test/read.cgi/tech/1105723117/

UNX板
pc8.2ch.net/unix/



122 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:50:51 ]
凄いな。俺も買ってこよう。

123 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:52:31 ]
でもこんなにいいwindows、高いんじゃないの?

124 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:56:59 ]
無料Linuxが1円の価値だとすると、プロ仕様はその約3万倍ぐらいです。
でもほとんどのお店で売ってるPCに何故か付いてきます。
何故でしょうね。
この謎を解き明かしてみるのも面白いかもしれませんよ。

125 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 22:57:10 ]
それが奥さん、聞いてくださいよ。
なんとたったの28,350円(価格コム調べ)
kakaku.com/prdsearch/detail.asp?PrdKey=03107010192

さらに今お買い上げいただくと

126 名前:42 mailto:sage [2005/05/11(水) 23:16:31 ]
なんかスレッドが伸びてると思ったら... なんだこりゃ。

で話を戻すけど、
>>55
>> 人間にとっても曖昧な、落とし穴の多い言語になりそうだ。
>ここに全く同意できない。

根拠もなしにんなこと言われてもなあ。実際Rubyは落し穴の多い言語になってるし。
i.loveruby.net/ja/rhg/contextual.html

で、Rubyのlexerには状態が9種類あるようだけど、parserから設定するのは
4種類だけだ(EXPR_BEG, EXPR_END, EXPR_ENDARG, EXPR_FNAME)。
だったらlexerにsetterを4個付ければ済む話。
たいした手間じゃないし、勝手に他の状態にされる危険もないし(カプセル化の基本)。

>>54
>機能がないからほとんどの人間が気づいていないだけ、
>という可能性も十分あるわな。

本気でそう思ってるんならパッチでも何でも作って公開すりゃいいじゃん。止めないよ。

>>57
ちなみにだが、Rubyの実装ではsetjmpもlongjmpも使いまくってるよ。
# ありゃひでえ。

127 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 23:41:25 ]
初期のいったんCのコードを吐くやつはsetjmo,longjmp使いまくりだったじゃん

128 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 09:48:50 ]
>>57-
例外が発生しない場合のオーバーヘッドを0にする手法がある。
setjump/longjumpだと、tryに入ったときにsetjumpして、
例外が発生したらlongjumpすると思うけど、
setjumpを省く代わりに、例外が発生したらスタックを遡りながら、
例外を起こしたコードのアドレスから対応するcatchを特定する。

129 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 11:37:43 ]
何がひどいのかよくわかりません

130 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 12:18:26 ]
とにかくRubyがひどいんでしょう

131 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 12:41:16 ]
Rubyのソースが酷いのはRuby使い(信者除く)も認めてるらしいので
具体的に酷いところを挙げてみてほしいなぁ



132 名前:三遊亭円楽 mailto:sage [2005/05/12(木) 14:42:43 ]
座布団ageようとおもって山田君駆動レコードをスタックに積んだのだが
何故、windowsやらunixやらですれがのびるんだね。

133 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 19:05:56 ]
構造化例外処理のメジャーな手法は、
setjmp法、>>60の2返戻法、>>128の例外表法
の3つかな。
個人的には、変換後最適化が色々適用できる2返戻法が好きかも。
定量的な比較はしてないが…

134 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 19:59:16 ]
>2返戻法
これの説明だれかしてください
意味わかんねえよ

135 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 20:30:02 ]
(通常の戻り値,例外オブジェクト)
だとググらずにカキコ

136 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 20:40:49 ]
>setjmp法、>>60の2返戻法、>>128の例外表法
つーか>>133説明してくれよ
そもそもそんな〜法なんて言い方あるのかも


137 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 20:50:25 ]
"2返戻値法" はググるで引っ掛かった
千葉 雄司という人の造語?

ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-13308-7

138 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 21:26:46 ]
fw8.bookpark.ne.jp/cm/ipsj/search.asp?flag=6&keyword=IPSJ-TPRO4301009&mode=

735円だって

139 名前:デフォルトの名無しさん [2005/05/12(木) 22:05:10 ]
>>130
そうではない。
古いいまのパーサやスキャナの枠組に入らないだけ。

「古いブドウ酒は、新しい皮袋に馴染まない」

とは、まさにことこと。
新しい言語は、古い開発パラダイムを駆逐する。


140 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:15:18 ]
>>139
信者乙。

141 名前:130 mailto:sage [2005/05/12(木) 23:27:10 ]
>>139
ごめん、あれは42に対するいやみのつもりだった。



142 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:41:11 ]
さっぱり意味不明

143 名前:デフォルトの名無しさん [2005/05/12(木) 23:46:43 ]
>>142
古いタイプの人間?


144 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:47:24 ]
>>42

145 名前:42 mailto:sage [2005/05/13(金) 00:16:26 ]
>>131
>具体的に酷いところを挙げてみてほしいなぁ

だから挙げてるじゃん。
(eval.cにおいて)setjmp, longjmpを使いまくってること、
parserがlexerにむやみにちょっかい出すこと。
まあ後者は言語仕様の問題だが、それを実装するために、
グローバル変数で通信してるってのはどうかと思う。
eval.cとparse.yが汚いってのは作者も認めてたと思う。

>>141
いやみったって、意味わかんねえんだけど。
むしろparserとlexerがきれいに分かれない言語の方が、古い言語っていうイメージが
あるけどね。俺は。

146 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 00:23:32 ]
その実装のせいで処理系のユーザにとってどういう不具合が出てくるかが知りたい。
処理系自体がどういう実装になってようが、処理系のユーザにはあまり関係ないよね。

147 名前:42 mailto:sage [2005/05/13(金) 00:41:42 ]
>>146
そりゃ実装が汚いからってユーザに不具合が出るとは限らんわな。
だから俺そんなこと言ってないし。

なんか粘着に絡まれてるなあ...


148 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 00:42:27 ]
i.loveruby.net/ja/rhg/contextual.html

スペースの入れ方で解釈が変わる言語ってどうなのよ?

149 名前:ヽ(´ー`)ノ ◆.ogCuANUcE mailto:sage [2005/05/13(金) 00:43:42 ]
>>146
> 処理系自体がどういう実装になってようが、処理系のユーザにはあまり関係ないよね。
それを言っちゃうとこのスレの存在意義がなくなってしまうのだが。

150 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 00:50:48 ]
>>148

a[i] = 1 # a[i] = (1)
a [i] # a([i])

前者はインデックス代入であり、後者はメソッド呼び出しの括弧を省略して引数に配列の要素を渡している。

また次のような場合もある。

a + 1 # (a) + (1)
a +1 # a(+1)

このあたりの仕様は一部の地域でやたらと嫌われているようだ。


つうかわざわざこんな仕様にした作者の意図を激しく聞いてみたい

151 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 02:42:38 ]
別にそれらをそういう風にしたかったわけじゃなく、
メソッド呼び出しの括弧を省略できるようにした結果だろうね。



152 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 02:47:39 ]
>>149
そんなことない。
効率的な実装で処理系が速くなるならユーザにも意味はあるし、
言語仕様や意味論の話題だってあるだろう。

153 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 02:49:33 ]
なんでルミナスのウッドシェルフに35*120がないんだ…
構成考えた後に気づいて鬱…orz

154 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 02:49:59 ]
誤爆すまん…orz

155 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 03:19:28 ]
>>151
なんというか・・・そのために文法が複雑になり、パーサーが複雑になり・・・って
そこまでするほどのメリットなのかそれ?

156 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 03:19:51 ]
パーサーじゃなくてスキャナだな・・・orz

157 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 04:45:37 ]
粘着してる奴が粘着されてるとか言ってりゃ世話ないな。


158 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 07:00:58 ]
lex、yaccに手を入れるより新しく作った方がいいんじゃないかと誰も言わないのはなぜ?



159 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 07:04:32 ]
それ以前の問題だからじゃないか?

160 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 11:12:25 ]
>>158
何が不満だ?

161 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 11:50:49 ]
>>160
不満じゃなくてな、変数隠蔽とか以前の時代のソフトに今時の概念入れろとか言うのって不毛じゃないのかって事
そんなメンテナが泣きそうな事するくらいならいっそ1から作るとしたらどうするかって話する方がよかないか?

最近の処理系ならちゃんと備わってたりするし(メジャーじゃないけどさ)




162 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 12:28:46 ]
なぜかRubyばかり槍玉にあげられてるけど、
Perlのlexer/parserってあんな言語でも実は綺麗なの?

>>155
もちろん主観の問題だけど、Rubyの1ユーザとしては
引数が0個か1個の場合は括弧省略したいかな。
ary.sortとかary.push 1とか。
あと、a [i]やa +1なんて現実的には書かなくない?

163 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 12:37:10 ]
>>162
そんなんだったらsmalltalk風の呼び出しの方がきれいだと思う。


164 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 13:01:14 ]
>>163
smalltalkを知らない俺様にもわかるように
5行で説明してくださいおながいします

165 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 13:15:39 ]
anObject hoge: arg1 page: arg2 fuga: arg3.

166 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 13:25:01 ]
>>162
>Perlのlexer/parserってあんな言語でも実は綺麗なの?

知らないけどPerlが汚いからといってRubyが汚くないという話にはならないでしょ

>もちろん主観の問題だけど、Rubyの1ユーザとしては
(中略)
>あと、a [i]やa +1なんて現実的には書かなくない?

いや、だからメソッドの括弧省略のために作者自らわざわざスキャナを複雑にしてるんだよね、
それほどまでにメソッドの括弧省略にメリットがあるのかなと思ってさ・・・
あと現実には書かなくてもやっぱりスペースの位置だけで動きが変わるのは混乱の元だと思う。

167 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 13:36:47 ]
>>165
セレクタとかある時点で比較対象になってなくない?

>>166
なんでRubyばっかり槍玉にあがるのかな、って。
RubyがRubyが言ってるのみると、
アンチRuby厨の戯れ言にみえてしょうがないんだよね。

メリットがあるかどうかはやっぱり主観によるけど、
混乱の元だと思う人がいるのは理解はできる。

168 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 13:59:34 ]
>>167
そんなにRubyの話ばかりされるのが嫌なら他の話題を振ればいい

169 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 14:38:09 ]
>>167
lexとyaccが協調動作することの是非や方法の話題はおもしろいのに
いちいちRubyの場合ばかり持ってきてRubyを叩くアンチがうざいのには同意。
そしてそれにいちいち反応するRuby信者もうざいぞ。

170 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 14:50:12 ]
つか、TMTOWTDIを目指してる言語の字句構文解析が複雑なんて
神が文法設計しないかぎり、当たり前じゃないの?

171 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 17:55:12 ]
>>164
嫌です



172 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 18:31:44 ]
>>162
> あと、a [i]やa +1なんて現実的には書かなくない?
ギャハハ、腹痛ぇw


173 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 18:56:53 ]
なんか先日の重複スレ以来あれてるなぁ。



174 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 19:12:20 ]
なんかこの分野の議論ってすぐ「勝負」になるんだよね。

「俺の方が深く理解してるぜ。お前は全然分かってない。大馬鹿野郎だ」

みたいな。仲良くやっていきたいものだが。

175 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 19:15:15 ]
>>174
2ちゃんねらって、誇れるものをあまり持たない人が多いような気がします。
だから、そうなるのでしょうね。

176 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 19:36:23 ]
結果として複雑になったのならともかく自らわざわざ複雑にしてしかもそれに見合うメリットが見当たらないのはどうかと

177 名前:42 mailto:sage [2005/05/13(金) 20:46:09 ]
>>162
>Perlのlexer/parserってあんな言語でも実は綺麗なの?

最初にRubyを出したのは俺だけど、Perlを出さなかったのは、Perlは
あまりにソースが読みにくくて読むのを断念したからだ w
だから、parserがlexerにどれくらいちょっかい出してるのかも知らない。
「Rubyソースコード完全解説」に相当する日本語解説もないしね。

別にアンチRubyってわけじゃないよ。>>150だって、推測だけどたぶん
ふだんはCとかJavaとかC++とかC#とか使ってて、たまたま>>126のリンク見て
びっくり仰天なんじゃこりゃ、と思っただけだと思うよ。
なんでもかんでもアンチだの信者だのにしたがる方こそ病んでないか。

ところで、メソッド呼び出しの括弧が省略できるのは、
「引数がひとつもないとき」は明らかなメリットがあるよな。
ひとつでも引数があるのなら、括弧ぐらいつけりゃいいじゃん、と
俺は思うけど。文末のセミコロンもね。

>>174
というわけで俺はアホだから、>>47
>むしろ変数で情報を渡すよりカプセル化に有益なんでは。
>それ以後%startと整合性をとる必要を生じる

という発言の趣旨を>>52以来ずーっと教えて欲しいと思ってるんだが。

178 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 21:11:42 ]
俺も括弧くらい付けりゃ良いじゃんと思う

文法は厳格かつ単純な方が好きだな
if-then-else の else が省略出来ないとか、四則演算に優先順位が無いとかでも問題無し

179 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 21:54:46 ]
LISPがオススメ
究極の汎用プログラミング言語

180 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 22:00:28 ]
もうお前ら、forth でも使ってりゃいいよw

181 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 23:32:47 ]
括弧を省略できるってのは結構大きいよ。

>>178
単純で、四則演算に優先順位が無くてもOK

あなたにオススメの言語はHSPです。よかったね。



182 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 23:33:32 ]
HSPは言語ではありません。
以後、HSPの話題はゲ製板で行ってください。

183 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 23:36:34 ]
HSPに対する反応はぇぇぇぇぇぇぇぇぇ!

>>182

そんなあなたにオススメの言語はHSP3です。

コレは優先順位つくらしいよ。よかったね。

184 名前:デフォルトの名無しさん [2005/05/13(金) 23:36:55 ]
言語といえば、LISPりんごですよ!


185 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 23:41:33 ]
LISP も HSP も大して変わらないよ。

ものは試しに、
LISP
↑この横棒を少し上に持ち上げてご覧

直ぐに HSP に変わるから。


186 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 23:45:57 ]
文法の話とかしだすと宗教戦争になるから駄目だな(わら


187 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 00:16:37 ]
評価するならヒューマンインターフェース的な評価手法を採るべきだ

188 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 06:23:37 ]
日本語で懇切丁寧に解説してあるのを読んで「ソースコードを読んだ」と威張り、
ソースコードを読めないとコーディングの汚さのせいにし、
Rubyを読んだ程度でさも様々な言語のソースコードを読んだように振舞う42の
いるスレはここですか?


189 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 06:57:53 ]
Rubyのソースが糞なのは、言語仕様側も少なからず影響してるからなあ・・

190 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 06:58:42 ]
あ、すまん。
糞なのは、は言い過ぎた。
汚く見えるのは、に読み替えてね。
つい本音が出てしまった。

191 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 07:06:35 ]
Rubyは入門者用のソースの解説本があるから、ソースを覗いた人は一番多いんじゃないかい。
悪口いいっぱはともかく、言語の規模考えても、準拠ポイントとしてはちょうどいいんじゃないか。



192 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 07:19:18 ]
なんでわざわざ入門者用に糞ソース読む本が出たんだろうね。
本という形態だとすでにバージョン的に無意味になってる部分も多いだろうし。
Rubyの動作原理ならともかく、糞ソース読む練習に良いとか?

193 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 07:23:59 ]
>括弧を省略できるってのは結構大きいよ。

なんつーか、ad hoc 感ブリバリで好きになれないな

194 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 07:53:49 ]
現実問題、実用レベルに達した処理系で
「ソースが糞」じゃないプロジェクトなんてあるの?

195 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 07:55:25 ]
>>192
> Rubyの動作原理ならともかく、糞ソース読む練習に良いとか?

あの本、能書きにはそれっぽく書いてある。だけど実際の本文は
「わかった奴が教えを垂れる」スタイルなんで、あんまり
ソースの読み方の参考というのにはならない。

前提となる知識が先に書いてあるのは別にいいんだが、何をとばして何を読む
ってのが説明の都合で決まりすぎで、ソースの読み手から見た判断という視点
じゃない。



196 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 10:40:28 ]
>>185
ホントダw
I-I S P

197 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 10:41:29 ]
偶然の一致がこれほど恐ろしいとは

198 名前:42 mailto:sage [2005/05/14(土) 12:19:46 ]
念のため書いとくけど、Rubyのソースが全編糞とは俺は思ってないからね。
eval.cのsetjmp/longjmpの乱用と、parserとlexerがグローバル変数で
状態を共有してるのがひどいと言ってるだけ。他はまあ、普通のCソースだと思う。

>>188
>ソースコードを読めないとコーディングの汚さのせいにし、

Perlのソース読んだことあるかい?

199 名前:42 mailto:sage [2005/05/14(土) 12:39:23 ]
補遺:
setjmp/longjmpの乱用についても、実行形態を考えるとやむを得ないところは
あるんだよな。
いっそバイトコードインタプリタにでもした方がよかったんじゃないかとも
思う。そうするとGCも今のコンサバGCじゃなくなって、もはや原型をとどめなく
なりそうだが。


200 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 15:42:13 ]
プププププ このスレおもしれー。
Perlのソースコードが汚いって?
少なくともRubyが***自力で***読めてPerlが読めない理由はねえよ。
てめえのおつむが足りないってことを精一杯開陳しつつしかも自分では
認めないって、最悪じゃね?

しかもいっちょまえに批評家気取って、はーゲラゲラゲラ
しかもえらそうなくせに何言ってるかわかってなさげなトンチンカンぶりがラブリー


201 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 15:44:11 ]
>>200
ソースは汚いと思わないが、build課程はかなりひどい物の一つだと思うぞ。




202 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 17:01:52 ]
Perlのは暗号だからな、読む気にもならん

203 名前:42 mailto:sage [2005/05/14(土) 19:50:57 ]
そもそも俺は自分はアホだと再三言ってるんだがねえ。
何がそんなに気に入らないんだか。

>少なくともRubyが***自力で***読めてPerlが読めない理由はねえよ。

へえ。

Rubyのソースが間違いなく***自力で***読める人のご意見。

jp.rubyist.net/magazine/?0001-Hotlinks
| Perl のソースコードは印象的だよね。すごい。読めない。
| マクロの嵐で、よくわからない識別子が山のように出てきて、
| いったい何? みたいな、すごい略語でさぁ。ほんとに、名前重要。]
| この識別子は、何を表しているのか、何をしようとしているのか、
| わかんないんだよ。

204 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 20:02:36 ]
そりゃ自分で書いたコードなんだから読めるだろ。
それが論拠になると本気で思ってる? 痛い奴。


205 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 20:20:43 ]
>>203
>>53


206 名前:デフォルトの名無しさん [2005/05/14(土) 22:53:41 ]
>>194
その通り!
めずらしく、いい書き込みだなw



207 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 23:33:01 ]
だから、Perlが汚いからといってRubyが汚くないという話にはならないの
ことあるごとにPerlをもちだしてくる信者はいい加減にしろ

208 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 23:44:40 ]
Ocamlのソースは綺麗だったよ
実用レベルなのか知らないけど

209 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 00:04:59 ]
>>208
高速な事は事実。

210 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 01:17:27 ]
OCamlのソースはコアのインタプリタ以外OCamlで書かれてるからね。
Cで処理系書いてる限りソースが糞になるのはやっぱり避けられないのかも?

211 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 01:22:45 ]
LISPも、というか関数型言語は綺麗なソースが多い気がする。
それぞれの言語自身で記述する風習みたいなのがあるからかね。



212 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 02:02:08 ]
関数型言語に限らずbootstrapしてない言語処理系なんて
表現能力のなさを露呈してるようなもんじゃないかな。
WindowsをUnixで作ってるみたいな。
SubversionのソースをCVSで管理してるみたいな。
もちろんスクリプト言語のように目指すところが違えば話は別だけど。

213 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 03:37:32 ]
>>211
SBCL は C の部分が汚くて悶絶した

214 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 03:45:28 ]
そうか? 普通に読めたけどなあ。SBCL。



215 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 03:59:02 ]
読めるけど、エラー処理省いてたり、マジック文字列埋め込んでたり、バータリ的な所が
けっこうあったよ。-Wall 付けてビルドするとやたら Warning が出るし。
たまにクリーンアップのパッチが提出されてるけど、マージされてるのか疑問。

216 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 07:41:04 ]
すれ違いですまんが、「バータリ的」って何?


217 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 07:44:34 ]
場当たり的

218 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 08:24:59 ]
>>217
サンクス。

人の名前かと思ったんでワケワカラン様になってた。


219 名前:デフォルトの名無しさん [2005/05/15(日) 11:39:02 ]
>>212
ブートストラップの意味おしえて


220 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 11:40:28 ]
>>219
ストローストラップの弟

221 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 13:08:41 ]
コンパイラ業界でのbootstrapは、
コンパイラが自分自身のソースをコンパイルすること。
(だよね?



222 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 13:38:45 ]
話の流れを折ってすいませんが、
Engineering a Compiler
www.amazon.com/exec/obidos/tg/detail/-/155860698X/
ってどんなもんでしょうね?


223 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 14:56:04 ]
>>222
☆☆☆☆★
初学者はドラゴンブック嫁って事になってるの?メリケンでもいまだに。ちょっと安心していい?

224 名前:219 mailto:sage [2005/05/15(日) 17:24:53 ]
>>221
TNX!


225 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 17:38:46 ]
ネタにマジレスかもしれないが、ストローストラップって誰?
ひょっとしてストラウストラップのこと?
ストローストラップって発音することがあるの?

226 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 17:44:52 ]
アメリカ<=>イギリス

227 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 17:45:00 ]
ttp://www.research.att.com/~bs/bs_faq.html#pronounce

228 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 18:05:33 ]
ステューステュオップ

229 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 18:08:30 ]
いい声してるなあ

230 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 18:11:32 ]
>>228
耳腐ってんのか?



ステゥーステュオァプ

231 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 18:21:41 ]
「C++でお勧めの本ありますか?」
「ステゥーステュオァプでも読んどけ」
「……宇宙人?」



232 名前:デフォルトの名無しさん [2005/05/19(木) 14:36:35 ]
練習で、生成系を使わずにCのプリコンパイラを作ろうと思っているのですが、
ソースコードの意味解析をやる必要があるかどうかが直感的にわからなくなってしまいました。
#define文は型検査をする必要はないので、いわゆる意味解析の必要ってない気もするのですが、
プリコンパイルはそれはそれで一つの言語であるので、どこかで意味解析が必要になりそうな気もします。

実際に必要なのかどうなのか、簡単な理由と共に教えてもらえないでしょうか?
どうぞよろしくお願いします。

233 名前:232 mailto:sage [2005/05/19(木) 15:30:19 ]
プリコンパイラってなんだ…プリプロセッサですね…

234 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 16:26:45 ]
なんで既存のプリプロセッサを読まないんだろう……


235 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 16:30:36 ]
俺様と同じように言葉だけ覚えてほとんど理解できてない感じのレスだな。
そんな俺様が勘で答えてやろう。

C言語本体としての意味解析はいらない(と思う、というか構文解析もできないだろう)。
マクロ言語としての意味解析はいるかもしれない。
ただ、Cのマクロ言語は本当に簡単な言語なので、
構文解析まで通れば意味解析はほとんど何もすることが
ないかもしれない。ひょっとしたらあるかもしれない。

236 名前:235 mailto:sage [2005/05/19(木) 16:32:40 ]
あ、あれ?既存のプリプロセッサを読めとか
そういうレベルの話なの?
やっぱり全然見当違いのレスしちゃったかも。
ごめん、なかったことにしてくれ。

237 名前:232 mailto:sage [2005/05/19(木) 17:22:08 ]
>>234
直感ですが、cppやgccのpre-processorのコードは高速化のために最適化されていて、
私みたいな知識のない人間が追うには辛いのではないかと思っていました。
反省して読んでみることにします。

>>235
まさにそういう感じです<言葉だけ覚えてほとんど理解できてない。
理解するために簡単そうに見えるプリプロセッサを作ろうと思ったのですが、
作る前に色々と考えていたら意味解析のセクションが必要なのかどうかがわからなくなって…
とりあえず、プリプロセッサの意味規則がどんなものかを考えることが重要なのですね。

まだ紙の上で考えている状態なので、具体的にどのような構文木を出せばよいのか、
そこのところで悩んでいる途中で出た疑問でした。
わかっていない私にわかりやすく説明してくれてありがとうございました。

238 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 21:07:54 ]
情処かどっかで
世の中のCのプリプロセッサはバグだらけ
みたいな論文を見たような気がする。

239 名前:232 mailto:sage [2005/05/19(木) 21:50:18 ]
仕様はかなり細かいみたいですね<プリプロセッサ
(あくまで参考として:ttp://www.sra.co.jp/wingnut/gcc/cpp-j.html)

240 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 22:15:21 ]
>>232
小さいCPP(1ファイルに収まるくらいのやつ)が入ってるよ
www.lsi-j.co.jp/freesoft/


241 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 02:20:54 ]
このスレにはソースを読めばなんでもわかると思ってるやつしかおらんのか。



242 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 03:23:19 ]
ソース読まない奴は無能

243 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 05:55:55 ]
仕様書にはいつもソース読めと書いてます。
結局ソース見るのが一番早い。

244 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 09:44:15 ]
>>243
10行くらいならね。

245 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 17:22:18 ]
JavaやVBAのパーサを書いて見たいんですが、どっかにgrammarでも落ちていないですか?

246 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 17:44:30 ]
Javaならあるよ。VBAは知らない。
java.sun.com/docs/books/jls/

247 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 18:57:23 ]
レスサンクスです。
早速構文チェッカーでも書いてみます。
やはりC++より構文規則は見た目きれいですね。
C++の構文はどこもかしこもオプションだらけでよくJavaプログラマが汚いという意味がよくわかりました。
私もC++パーサを書いたあと、しばらくはC++でプログラムしなくなりました。

248 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 21:23:32 ]
>>238
たぶんこれだろ。
lc.linux.or.jp/lc2002/papers/matsui0920p.pdf
www.ipa.go.jp/jinzai/esp/15mito/mdata/11-6.html

249 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 22:49:23 ]
>>247
その意見には激しく同意した上で、なおかつC++が最高の言語だと思う自分がいる

250 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:17:35 ]
なんか、俺はプログラミングするたびに違う言語使ってる気がする。
統一したほうがいいのだろうか。

251 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:24:33 ]
またScheme処理系作っちまった
やめられない



252 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:27:55 ]
同じ物ばかりつくって飽きないの?

253 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:35:07 ]
もうとまらねーよ

254 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:39:04 ]
>>252
Scheme処理系は何個あっても困らないからねえ

255 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:54:16 ]
JVMで動くCOBOLを作ってみてくれ。

256 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:55:17 ]
お前ら、もっと斬新なことしてくれよ
実装なんか興味ないからさ。

257 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:18:36 ]
タガログ語プログラミング言語とか。

258 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:33:11 ]
>>251
公開キボンヌ

259 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:33:48 ]
面白いこと=トロイ
な頭の俺をどうにかしてください


260 名前:デフォルトの名無しさん [2005/05/21(土) 01:35:50 ]
>>256
そんなあなたに「りんg(ry」


261 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:50:59 ]
プログラムを2つ与えると、その実行結果が等価になるか判断する処理系作って。
用途は、たとえば自分でソートのプログラムを作ったけど正しいか自信が無いときに、
単純で遅いが明らかに正しいソートプログラムと比較させる。
全自動は無理だと思うから、人間が色々手伝ってもかまわない。
「入力の長さnの帰納法」とかヒントをあげると、少なくてもn=1のときは
単純にn=1が保証されるものとして最適化するだけで判定できそうな気がする。



262 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:54:55 ]
>>261
どうやらスレ違いぽいな

完璧なプログラム
pc8.2ch.net/test/read.cgi/tech/1041126217/


263 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:35:34 ]
>>251さん、リクエストします。
JavaScriptでScheme処理系を書いてください


264 名前:デフォルトの名無しさん [2005/05/21(土) 10:38:57 ]
>>261
しかも、内容が馬鹿っぽいw


265 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 10:59:05 ]
一般的にはムリって
計算論で結論出てなかったっけ?

266 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:05:29 ]
>>261
少なくとも、理論上無理。そんなことができるなら、世の中もっと幸せになってる。

267 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:51:13 ]
>>251
>>263をR5RS準拠でヨロスク

268 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 14:49:33 ]
プログラムが停止するかどうかすら判定できない、じゃなかったかなあ。

269 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 15:08:56 ]
>>268
「有限時間内で」が大事。

270 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 15:25:18 ]
>>261は最初から「全自動では無理」と言ってるんだが…
理論上無理とか言ってるやつは
proof assistantというものが存在することすら知らんのだろうな。
いずれにせよ>>262の言うとおりスレ違いだろう。

271 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 16:19:22 ]
>>251
後学の為に是非公開してくださいませんか。宜しくお願いします。



272 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 00:51:20 ]
schemeの処理系なんて、重厚長大で完璧めざしてるR5RS準拠から
読みやすさ重視orお遊びのトイプロジェクトまで、山ほどあるぞ。

273 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 07:48:12 ]
>>271
R5RS規格書は50ページ程度と言われてるけど内容濃いしね
省かれた暗黙仕様もあるから準拠しようとすればそれなりに工数掛かる

>>267
おれが今回作ったのは継続もなくスタックベースでそもそもRxRS前提に書いてない
throwみたいに親側へ飛ぶだけだし、スタックオーバーフローもする
ちゃんとしたのは別にあるんだけど、デカくなりすぎた
そこそこの速度で動く&俺言語やアプリへの組み込みが目的だった
俺言語2k行ぐらいで最低限の最適化だけやったいい加減なやつ
速度はguile1.7.2と同じぐらい。。。guileは速度捨ててるね

274 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 08:52:51 ]
>>273
おー、俺言語大好き人間って結構いるんだな
俺はSelf系つかprototype系好きなんで何個も作ったけど、Schemeは一度も作ったコトないや



275 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 16:33:47 ]
俺言語への組み込みScheme?
どんなものか想像できない。

276 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 16:49:51 ]
よくあるパターンは、scheme式をbuiltin型として使えるというものかな。
prologを組み込むと時々便利。

277 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 16:39:26 ]
Scheme in javascriptやin rubyを作ってるんだけど、
何かの仕様に準拠しないと達成感がない。

でもRxRSの複素数とかくだらないの実装するのは面倒くさい上に、
母言語(javascriptとか)の数値表現がそのまま使えなくなって
滅多に使わないのに全体的に遅くなりそうなあげく、利便性まで下がる。

同じことで悩んだor悩んでるやついる?

278 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 18:49:26 ]
>>277
つcoercion semantics

279 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 19:22:56 ]
Coercin semantics?ってsubtypeに基づく変換とかのアレですよね。
Schemeに型はないんですが、soft-typingしろってことでしょうか。

誤解があったかもしれないので捕捉。
Scheme in javascriptってjavascriptで書かれたScheme実行エンジンを意図してました。
i = scheme_eval("(+ 1 2)");
みたいに実行できるようなの。これでiには普通の3が代入されるか、
自分で定義したclass SchemeNumberのインスタンスが入るか、が問題です。
前者が嬉しいけど、複素数とかの対応はどうするべきかな、と。

280 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 22:06:51 ]
>>275
俺言語との通信やプリプロセッサの拡張とか
funclist.scm:((f 1) (g 2) (h 3))
俺言語:
#s (define func-list (with-input-from-file "funclist.scm" read))
#s(for-each (lambda(x) (puts x "() { printf(\"myname:" (car x)
"\\n\"); return " (cadr x) "; }")) func-list)
register_func() {
#s(for-each (lambda(x) (puts "scm_add_proc(\""(car x)"\", (scm_proc_t)"(car x)", 0);"
" printf(\"defined:"(car x)"\\n\");")) func-list)}
main() {
register_func();scm_write(scm_eval_string(#ss`(+ ,@(map(lambda(x)(list(car x))) func-list))));;scm_newline();}

f() { printf("myname: f \n"); return 1; }
g() { printf("myname: g \n"); return 2; }
h() { printf("myname: h \n"); return 3; }
register_func() {
scm_add_proc("f", (scm_proc_t)f, 0); printf("function defined:f\n");
scm_add_proc("g", (scm_proc_t)g, 0); printf("function defined:g\n");
scm_add_proc("h", (scm_proc_t)h, 0); printf("function defined:h\n");
}
main() {
register_func();scm_write(scm_eval_string("(+ (f) (g) (h))"));scm_newline();}

function defined:f
function defined:g
function defined:h
myname: h
myname: g
myname: f
6


281 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 22:09:36 ]
>>279
おれだったらevalの結果をそのままwriteできるようにする。
結果が数値だけとは限らないので。
scheme_write(scheme_eval(scheme_read()));
もしくは
scheme_write(scheme_eval_string("(+ 1 2)"));
経験的に特に明示しない限りschemeならschemeの型で持ちまわる方が都合良い。




282 名前:デフォルトの名無しさん [2005/05/23(月) 23:45:06 ]
>>280
イラネw


283 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 23:50:14 ]
綾本って思いっきり中田さんの授業配布プリントに
説明を加えただけにしか見えないのだが。

284 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 23:55:31 ]
そう言われても俺には確かめようが無い

でも中田先生の教科書は(・∀・)イイ!!

285 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 00:41:48 ]
>>281
>schemeならschemeの型で持ちまわる方が都合良い。
処理系の作成者としては当然その通りで、気持ちもわかるんだけど、
処理系のユーザとしては不便だと思うんだよね。
いちいちscheme_number_from_javascript_number(1)とかしなきゃならんのは。
どうにかならんかな、みんなどうしてるかな、って疑問でした。

286 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:28:26 ]
三日ほどかけて、生まれてはじめてコンパイラを作った
900行ほどのTinyBASIC以下のダメ言語だけど
とりあえず、エラトステネスの篩が動いてる

しかし、明らかにヘボい機械語を吐いているのに
エラトステネスでVC++とほとんど実行速度に差が無い
うちのマシンがefficeonだからかなあ?
やっぱコンパイラは速いね

287 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:36:05 ]
私も、インタプリタをつくり、コンパイラに拡張したことがあります。
言語つくりを学ぶとかなりプログラミングの理解度が高まることが実感できました。
少し高度だけど、プログラミングを生業にするなら、1度はチャレンジすることをお勧めします。
決して損とは思いません。

288 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 02:49:35 ]
勉強といっても三日だし
しかも半分は、STLとVC++の使い方の勉強だった気がするw
残りはVC++のデバッガーに機械語を教えてもらってたかんじ

しかし、カウンタのインクリメントでさえpushとpopを二回ずつりながら
へぼへぼと計算するうちのヘボコンパイラと
inc eacだけで済ませそうなVC++が
ほとんど実行速度に差が無いのは解せないなあ

289 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 07:35:11 ]
測定の仕方が悪いか、コンパイラにバグがあるか。

290 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 17:27:21 ]
計測は、無負荷状態で、

clock_t c = clock();
Sieve();
cout << double( clock() - c ) / CLK_TCK << end;

こんなかんじ

一億までの素数を全部求めた場合の所要時間は、
efficeon 1.6GHzで、VC++が30.5秒程、へぼ言語が31.5秒程

計算結果は、VC++とへぼ言語で一緒にしかならないから
コンパイラのバグで不当に速い可能性はうすい


ちなみにへぼのカウンタ変数のインクリメントのコードは↓、我ながらひどいもんだw
mov eax, i
push eax
mov eax, i
mov eax, [eax]
push eax
mov eax,1
pop ebx
add eax,ebx
pop ebx
mov [ebx],eax

VC++は↓、まとも
mov edx, [i]
add edx, 1
mov [i], edx


291 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:23:34 ]
エラトステネスのふるいだと
メモリアクセスがネックになるんじゃないかな。
伝統にのっとってfactやfibで。



292 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:35:32 ]
同感.後taraiを回すとか.

どうでもいいが,>290のVCのコードでループカウンタにレジスタが割りついてないのが気になる.

293 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 19:42:20 ]
スタックマシン向けのコード生成法っぽいな?

294 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 20:43:05 ]
>>293
つかスタックマシンのコードをx86へ分解してるだけだと思うよ。
コードジェネレータで頭ひねらずに済むから処理系を作ってる途中では有用だろうし。



295 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 21:49:05 ]
>>290
とりあえず mov eax, i は lea eax, i だとして、
それぞれのコードを1億回ループするのを適当に計ると

へぼ: 1613771636
VC++: 1119915436

クロック掛かる。1.6GHz に換算すると

へぼ: 1.0秒
VC++: 0.7秒

程度の違いだな。

296 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 21:50:51 ]
>>295
失礼。 mov eax, i でよかった。

297 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:08:35 ]
>>295
クロック数って そんなに正確に測れるんですか?

シミュレーション?
CPU のマニュアルから計算したやつ?

298 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:17:21 ]
sieveではスカラ最適化はほとんど利かないと思う。
しかし1億で30秒は遅い気もするが…>290でループ変数が
レジスタに載ってないあたりを見ると、元ソースの問題かな。

299 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:29:07 ]
>>297
発想が逆だ


300 名前:デフォルトの名無しさん [2005/05/24(火) 22:29:21 ]
ヘボ言語のソースがみたい。

(ふるいのソース、処理系そのもののソースじゃなくて)


301 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:48:54 ]
>>300
array sieve[1000000]

i = 0
init:
sieve[i] = 1
i = i + 1
if i <= 1000000 then jump init

i = 2
loop1:
if sieve[i] = 0 then jump skip
j = i + i
loop2:
sieve[j] = 0
j = j + i
if j <= 1000000 then jump loop2
skip:
i = i + 1
if i <= 1000 then jump loop1

i = 2
fin:
primes = primes + sieve[i]
i = i + 1
if i <= 1000000 then jump fin


1000*1000; "未満の素数が"; primes; "個あります\n"




302 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:50:36 ]
うわインデントが

array sieve[1000000]

i = 0
init:
 sieve[i] = 1
 i = i + 1
if i <= 1000000 then jump init

i = 2
loop1:
 if sieve[i] = 0 then jump skip
  j = i + i
  loop2:
   sieve[j] = 0
   j = j + i
  if j <= 1000000 then jump loop2
 skip:
 i = i + 1
if i <= 1000 then jump loop1

i = 2
fin:
 primes = primes + sieve[i]
 i = i + 1
if i <= 1000000 then jump fin


1000*1000; "未満の素数が"; primes; "個あります\n"


303 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 22:58:42 ]
どうでもいいが、primesが初期化されてないような希ガス。
初出の変数は0?

304 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 23:01:49 ]
うす

labelに使われてない変数は初出時に0

305 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 01:00:41 ]
あれかね、今時のCPUはx86のコードを内部的にRISCな命令に変換したりするから
(efficeonならなおさらだ)、その段階でスタック操作がレジスタに割り当てられて、
内部的には似たようなコードで実行されてたりするのかね。

だとしたらすげー。

306 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 01:39:20 ]
いま、Athlon XPで試したら
速度全くといっていいほど変わらない
信じられない
Pen4ではどうなるのか知りたいなあ

307 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 12:07:51 ]
factやfibでも同じような速度なの?
だとしたらマイクロオペコードすげー。

308 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 15:48:09 ]
いや、関数呼び出しは実装してないんで
ローカル変数実装するのが、(ちょっとだけ)面倒だから
まじめに比較したい人がいるなら、ソース出すけど

309 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 18:38:40 ]
普通に1から1億までを足すプログラムとかで十分差がでると思うが。

310 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 18:40:29 ]
最適化しないと変わらないんじゃない?

311 名前:300 [2005/05/26(木) 00:06:05 ]
>>302
ソースTNX!
へぼ言語どころか、めっちゃ気に入りそう(ハート)

あんた、センスあるねぇ。。。




312 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 02:47:24 ]
i = 1
r = 1
fact:
 r = r * i
 i = i + 1
if i <= 1000000 then jump fact
"1000000! = "; r; "\n"

多倍長じゃないとか気にするな。
ただのベンチマークだから。

313 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 03:31:29 ]
めんどくさいから、誰かやって
もう飽きたし・・・
ttp://rerere.sytes.net/up/source/up6309.zip

314 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 19:17:26 ]
>>305
んなわけない
sieveみたいな2重ループ程度じゃ適当に作っても差はあんま出ない
>>313見た限りでは関数作れないっぽいけど
同じやり方でループのネスト深くしたり、fiboとかアッカーマン関数で
比較したりすると倍以上差が出てくるよ
VMとかインタプリタに比べれば問題ない差だろうけどね


315 名前:デフォルトの名無しさん [2005/05/26(木) 22:17:47 ]
>>314
ヤッターマン関数って何?
ぐぐっても出てこんかったorz


316 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 22:32:08 ]
>>315
アッカーマン関数でもヤッターマン関数でも出てくるけど?

317 名前:デフォルトの名無しさん mailto:sage [2005/05/26(木) 22:54:33 ]
ポチっとな

318 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 00:20:48 ]
Fibonacciの関数呼び出し程度では大した差はでない
Ackermannはコンパイラが末尾再帰を認識するかどうかでかなり差が出るはず
普通の処理でも変数の数や間接参照とかが増えてくれば違ってくる

319 名前:デフォルトの名無しさん [2005/05/27(金) 01:08:54 ]
Borland C++ Conpilerについての質問です

c:\bcc32\Bin の中に

bcc32.cfgを作って
-I"c:\Bcc32\include"
-L"c:\Bcc32\lib"
と書きます

ILINK32.cfgを作って
-I"c:\Bcc32\include"
-L"c:\bcc32\lib"
と書きます

www.kumei.ne.jp/c_lang/bcc/bcc_05.htm
ここのソースをコピペしてコンパイルします
bcc32 -W menu01.cpp のほうはうまく行きました
brc32 menu01.rc menu01.exe って入力しても、windous.hが見つからないとエラーでます
brc32 -i c:\bcc32\include menu01.rc menu01.exe とディレクトリを指定してやったらコンパイルできました

このようにディレクトリを指定せずにコンパイルさせる設定ってどこでするのでしょうか?

320 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 02:13:26 ]
【初心者歓迎】C/C++室 Ver.17【環境依存OK】
pc8.2ch.net/test/read.cgi/tech/1115958601/

321 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 02:39:07 ]
>Fibonacciの関数呼び出し程度では大した差はでない
これどういう意味?



322 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 05:46:16 ]
fibでも関数値のメモ化のあるなしで大きく違ってきそうだが。

323 名前:remi@id5214.bbs.盗撮倶楽部 mailto:sage [2005/05/27(金) 14:32:00 ]
はじめまして れみです。

向こうのbbsで質問したところ、こちらで聞いたほうがより高度な技法を
教えていただけると紹介いただき、まかりこしました。

のぞき穴最適化技法についてお知恵をお借りできませんか。
尚、使用レンズ口径は3.00mmです
よろしくお願いします


324 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 15:09:36 ]
そのレンズを通して見える範囲でソースコードを手でチューニングすればいいです。
見える範囲が終わったら視野を移動するかスクロールします。
ファイルの最後までいったらおしまいです。お疲れ様でした。



325 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 18:52:21 ]
どういう誤爆だ?
業者にしてはまったく意味が無い。
誰かAIのテストでもしてるのか?

326 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 18:54:35 ]
スコープについて聞いてるんじゃないか?

327 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 18:57:13 ]
うまい

328 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 19:04:44 ]
>>322
すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ

メモ化すれば当然速くなる

329 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 20:24:00 ]
ackermann関数は変数が何個の値参照なん?

330 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 20:50:02 ]
mann個

331 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 20:52:11 ]
>>329
lispの例題とかで見たこと無い?
ものすげーえげつない再帰呼び出しのテストだと思ってくれ。



332 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:35:57 ]
>>331
すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ

333 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:41:48 ]
こんな感じ?

extern yattarman(){
printf("アフォ\n");
}


334 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:50:56 ]
ack(m,n) = n+1            if m = 0
       ack(m-1, 1)       if n = 0
       ack(m-1, ack(m,n-1))  otherwise

335 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 21:53:10 ]
>>334
すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ

336 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:06:19 ]
ここはお前の話をみんなで静聴するスレじゃないぞ。
各人がしたいように話を転がしていくだけだ。

337 名前:デフォルトの名無しさん mailto:sage [2005/05/27(金) 22:08:15 ]
仕切り厨の自己否定乙ww


338 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 00:28:16 ]
>>337
すまんが、そういう話じゃない
関数呼び出しのテストにしても変数が1個や2個の値参照程度では
違いは出にくいということ

339 名前:デフォルトの名無しさん [2005/05/28(土) 03:12:13 ]
>>333
そう、それだ!


340 名前:デフォルトの名無しさん mailto:sage [2005/05/28(土) 04:15:37 ]
>>333
extern coffee(){ 
printf("ボケ\n"); 


extern lighter(){ 
printf("ゴルァ\n"); 



341 名前:デフォルトの名無しさん [2005/05/28(土) 23:34:48 ]
アメ、コーヒー、ライター?




342 名前:デフォルトの名無しさん mailto:sage [2005/05/29(日) 01:10:17 ]
ヤッターマン

343 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 04:52:17 ]
そろそろN88BASIC作ろうと思うんだけど、どう?

344 名前:デフォルトの名無しさん [2005/06/04(土) 12:18:56 ]
N05BASICの誤りでは?
どんな畑になることやらw


345 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:04:29 ]
>>344
???

346 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 21:16:13 ]
>>345
しぃーっ!見ちゃだめ!

347 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 22:01:33 ]
bison -v で出力される *.output と言うファイルの書式の解説って
マニュアルには含まれてないと思うのですが、ありますか?


348 名前:デフォルトの名無しさん mailto:sage [2005/06/04(土) 22:05:10 ]
>>347
人が見て理解できれば十分だと思うけど……


*.output ファイル自体をいじるとか、そういうことを考えているの?

349 名前:デフォルトの名無しさん [2005/06/04(土) 22:34:23 ]
>>348

state 100
nls -> '\n' . (rule 200)

とかあった場合、この点(.)は何を意味するものなの?


350 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:02:52 ]
オライリーの本読め。解説してあったと思うが。

なくてもそれくらい見当つかないんじゃ困るとは思う。


351 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:12:32 ]
lex&yacc でイイデツカ?




352 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 00:22:29 ]
うん。


353 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:26:05 ]
>>344
それ以前に2000年問題に対応してください

354 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 03:35:03 ]
>>344==353

355 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 11:17:47 ]
>>349
LALR(1)

356 名前:351 mailto:sage [2005/06/05(日) 18:39:22 ]
>>352
ありがとう。

>>355
LALR(1) の標準記法とかあるのですか?


357 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 18:47:49 ]
>>356
標準かどうかしらんが
LALR(1)を勉強した人なら一瞬で分かる。

358 名前:デフォルトの名無しさん [2005/06/05(日) 19:46:23 ]
>>353
畑は1年単位のサイクルの筈。


359 名前:デフォルトの名無しさん mailto:sage [2005/06/05(日) 23:06:16 ]
>>344==353==358

360 名前:デフォルトの名無しさん [2005/06/06(月) 08:56:20 ]
並列化コンパイラを作ることになったんですが、
なにをどうすればいいかわかりません
良い本、サイトなどあれば教えてください

361 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 09:14:01 ]
TAに泣きつけ。



362 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 10:51:43 ]
並列化のための補助文法を言語的に持っているという意味?
それとも複数の演算素子にコードを割り振る方?


363 名前:360 [2005/06/06(月) 17:05:12 ]
そもそもコンパイラそのものがわかっていないので
1から勉強できるようなものがあると助かるとです

364 名前:デフォルトの名無しさん mailto:sage [2005/06/06(月) 18:37:44 ]
360は早稲田の学生

365 名前:デフォルトの名無しさん [2005/06/06(月) 19:54:03 ]
>>363
まずは、りんご畑系の本を勧める。


366 名前:360 [2005/06/07(火) 02:28:10 ]
>>364
駅弁です

>>365
リンゴ畑とは?

367 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 23:42:17 ]
予約語と識別子との区別を、字句解析時に行ってしまうのがいいのか、構文解析時になってから行うのがいいのか悩んでいます。
字句解析時に行ったほうがわかりやすいような気もするけど、構文解析時に行ったほうが柔軟になるし(予約語と同じ名前のメソッド名を定義できるとか)。
みなさんはどうしてますか。

368 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 23:52:07 ]
作ろうとしている言語の文法を合うように
決めればいいんじゃない?

つまんない意見でごめんな

369 名前:デフォルトの名無しさん mailto:sage [2005/06/07(火) 23:59:39 ]
ほぼ同意。

ps.りんご畑だとパーサだったかな?


370 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 00:12:20 ]
typo
×文法を合うように
○文法に合うように


371 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 01:10:48 ]
>>367
>予約語と同じ名前のメソッド名を定義できるとか

そもそもこんなことができると紛らわしいからよした方が…
ワインバーグが「プログラミングの心理学」のどっかにそんなことを書いていたはず。




372 名前:デフォルトの名無しさん [2005/06/08(水) 01:17:01 ]
>>371
古い概念にとらわれるな


373 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 10:02:30 ]
>>372
歴史に学べ

374 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 10:04:01 ]
>>367
ifという名前のローカル変数を作ってしまってif文が使えない
とかいうことになるので、字句解析でやっといた方がいいんじゃないかな。

375 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 10:41:04 ]
素人な質問だけど、構文解析どう書くの?
IDENT expr IDENT block IDENT block
で$1と$3と$5がそれぞれ"if" "then" "else"であることを
アクションでチェック?現実に実現可能なもの?

376 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 12:25:52 ]
構文木を識別子以外のものに基づいて組み立てれば無問題。括弧とか。



377 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 12:26:47 ]
>>360
育男ちゃんに代打ちしてもらえばいいじゃん

378 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 13:08:32 ]
文法の、どこに error を噛ませれば良いのか分からんですたい

379 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 13:39:49 ]
エラーが発生したらなかったことにしたい単位のところ。
全てが式の言語なら式。Cみたいのなら文か関数。
例外処理のcatchのようなもんだ。


380 名前:デフォルトの名無しさん [2005/06/08(水) 20:52:34 ]
それよりも的確な場所でエラーを検出することができるかどうかだよ

極端な言語で言えば、LISP系はソースコードの何行目でエラーが出た、
とかの検出が困難。
S式として妥当ならreadが通ってしまう。
readに通した時点で行の情報は失われる。

よく知らないけどLISPのエラー検出の最小単位って関数かな?
エラー検出とかのためにリストがどの行のものか保存するLISP処理系ってある?


381 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 20:56:29 ]
VCのコンパイラって/Pオプションでプリプロセッサを通した結果がとりだせるじゃないですか
bccではそのようなコンパイルオプションってないですか?



382 名前:367 mailto:sage [2005/06/08(水) 21:04:00 ]
ご回答いただいた皆様、どうもありがとうございます。
そもそもの動機は、事前にすべての予約語を予測することができない(あとで必ず新しい予約語を追加したくなる)ので、
せめて識別子がくることが明確にわかっている場所でなら、予約語でも識別子として使えるようにしておけば、
新しい予約語を追加したときに、多少なりとも影響を小さくできるかなと思ったからです。
また個人的には「switch」や「end」をメソッド名として使えたらなーと思うことがあったので、メソッド名であることが明らかなら
予約語でもメソッド名にできるようにしたかったのです。(Rubyだとそれができるみたい)

しかーし、発想をかえまして、予約語になんらかのプレフィックスをつけることにしました。
PHPやPerlでは、変数名と予約語がかぶらないように変数名のほうにプレフィックスをつけますが、
それとは逆に予約語にプレフィックスをつければ、変数名やメソッド名とかぶらなくてすむんじゃないかと。
ifやwhileにプレフィックスをつける言語なんてきわものっぽいですが、なんか気に入ったのでこれでいくことにします。

スレ汚しすみませんでした。

383 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 21:06:52 ]
>>379
いや、俺が気になるのは、それが全てのエラーを正しく捕まえてくれるのかと、無限ループが起きないかどうかです
……多分、yyerrok の挙動の理解が甘いような気がするんだけど

根元に error を仕込みたいですけど、エラーリカバリ後のゴミが結構引っかかります orz

384 名前:デフォルトの名無しさん [2005/06/08(水) 21:54:44 ]
もれが気になるのは、ねーちゃんのケータイかどうかってことだ。


385 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 21:59:44 ]
>>384
どっからそういう話になるんだ?
誤爆?


386 名前:デフォルトの名無しさん mailto:sage [2005/06/08(水) 22:12:00 ]
www.sidhe.org/~dan/presentations/Parrot_Implementation.pdf
Parrotの実装について

387 名前:デフォルトの名無しさん [2005/06/08(水) 23:24:31 ]
予約語と識別子の区別はなんとでもなると思うが、
後から追加した予約語の文法定義はどうやって追加するの?
ってあたりが気になった。

388 名前:デフォルトの名無しさん mailto:sage [2005/06/09(木) 20:22:41 ]
>>380
gaucheとか、エラー時に行番号を表示してくれるから何かやってるんじゃない?


389 名前:デフォルトの名無しさん [2005/06/09(木) 23:54:13 ]
>>380
>>388
構文木のノード毎に、行数を覚えておけば済むでしょ


390 名前:デフォルトの名無しさん mailto:sage [2005/06/10(金) 00:05:29 ]
>>389
(´,_ゝ`)プッ

391 名前:デフォルトの名無しさん mailto:sage [2005/06/10(金) 00:49:48 ]
gaucheってランタイムエラーのときも行数表示するん?



392 名前:デフォルトの名無しさん mailto:sage [2005/06/10(金) 00:50:19 ]
  「人権擁護法案」を知って下さい。どう考えるかは 貴方次第です。

法務省 第154回国会(常会)提出主要法律案 人権擁護法(案)
www.moj.go.jp/HOUAN/JINKENYOUGO/refer02.html

ズームイン朝でおなじみ、 辛坊治郎さんのコラムです。
ttp://shinsho.shueisha.co.jp/toranomaki/020724/index.html

こちらは櫻井よしこさんのコラムです。
ttp://blog.yoshiko-sakurai.jp/archives/2005/03/post_324.html

櫻井よしこ 人権擁護法案緊急リポ(SAPIO 6月22日号6月8日発売)
www.uplo.net/www/vip14260.jpg
www.uplo.net/www/vip14261.jpg
www.uplo.net/www/vip14262.jpg
www.uplo.net/www/vip14263.jpg

他にもこのような方々が危険性を危惧しています。
西尾幹二
ttp://nitiroku-nishio.jp/blog/
西村幸祐
ttp://nishimura-voice.seesaa.net/

タックルと報道2001とチャンネル桜の動画。
nur.ath.cx/no0/50/tset/no0050292.zip


参考資料 国連の勧告といわれる物

国内機構の地位に関する原則(パリ原則)
www.moj.go.jp/SHINGI/010525/refer05.html


393 名前:デフォルトの名無しさん mailto:sage [2005/06/10(金) 09:18:46 ]
>>391
するよん。バックトレースにも表示される。

394 名前:デフォルトの名無しさん mailto:sage [2005/06/10(金) 13:02:02 ]
>>367
字句解析で識別するしかない。

予約語のない(キーワードと同じ変数名が使える)言語としてはPL/Iがある(あっ
た、というべきか)。が、たとえ予約語のない言語でもキーワードは字句解析
で識別しないとダメだろう。

そのような言語では、具体的にはこういうふうにする。

stmt: IF expr THEN ....(略)

expr: Identifier

Identifier: IDENTIFIER | IF | THEN ...

むろんCのような文法ではこれはconflictをおこすので無理だが、
PL/Iならなんとかなるかもしれない。もっともPL/IがLR(1)で記述できるかど
うかは不勉強にして知らない。もっと長い先読みが必要かもしれない。


395 名前:りんごタン mailto:sage [2005/06/11(土) 11:18:27 ]
>>394

> むろんCのような文法ではこれはconflictをおこすので無理だが、
> PL/Iならなんとかなるかもしれない。

どういうことですか?

PL/1 自体、リアルでは使ったこと無いんですが(つまり、本の知識のみ)
conflict の発生に大きな違いがでますか?


396 名前:デフォルトの名無しさん mailto:sage [2005/06/11(土) 12:39:18 ]
>>394
LISP みたいに () で囲むというような規則を厳守すれば、キーワードの識別は意味解析まで遅らせられる気がしますが

397 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 10:53:24 ]
llvm.cs.uiuc.edu/pubs/2004-Spring-AlexanderssonMSThesis.html

RubyComp: A Ruby-to-LLVM Compiler Prototype (Anders Alexandersson, M.S. Thesis)

Abstract:

Dynamic programming languages are not generally precompiled, but are interpreted at run-time.
This approach has some serious drawbacks, e.g. complex deployment,
human readable source code not preserving the intellectual properties of the developers and
no ability to do optimizations at compile-time or run-time.

In this paper we study the possibility to precompile the Ruby language, a dynamic object-oriented language,
into Low Level Virtual Machine (LLVM) code for execution by the LLVM run-time,
a compiler framework for lifelong optimization of an application.
The result of the project is a Ruby compiler prototype, describing the infrastructure and overall design principles
to map the highly dynamic properties of the Ruby language into low-level static constructs of the LLVM language.

The LLVM framework supports different hardware platforms, and by using LLVM as the target of compilation
the benefits of that portability are gained.


398 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 13:34:32 ]
ほう。
漏れ自身はRubyは全然使ってないんだが、
世界中にファンが居るんですね。

動的言語としてのRubyの言語仕様のうち、
コンパイルしにくい要素って何なのでしょうか

399 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 17:17:28 ]
eval?

400 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 17:23:55 ]
(´・ω・`) エヴァってても関係無いがな

401 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 17:38:48 ]
evalとリフレクション?

>>400
ないの?
lisp系以外でevalのある言語のコンパイラってある?
perlccやexerbのようなのでなく。



402 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 17:53:24 ]
Lisp 以外のネイティブコンパイラは知らないけど、
Lisp と同じようにすれば良いかと
(スタンドアローンは要件に無かったから)

403 名前:デフォルトの名無しさん [2005/06/12(日) 18:29:58 ]
LISP房とRUBY房ほど、有名な房はいないなW


404 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 18:31:03 ]
房?

405 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 19:38:28 ]
JavaとかC++は??

406 名前:デフォルトの名無しさん [2005/06/12(日) 20:48:33 ]
>>403
2大棒


407 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 21:30:37 ]
>>398
コンパイルしにくいというよりは、staticに決めにくいということでは?
メソッド呼び出しをstaticにすることなんか絶対にできないし、
クラス定義でさえ実行文だから、staticにクラスを作成しておくこともできないし、
ローカル変数と引数なしのメソッドの見分けもつかないし。
staticにできることといえば、事前に構文解析してツリーつくるぐらいだけじゃねえか?

408 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 22:13:27 ]
>>407
Rubyは知らないが、アンタの話がピント外れなのはよく判る。

409 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 22:34:09 ]
>>408
スレ的にピントをぼかしてるのはおまい様ではないのかえ?


410 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 22:37:21 ]
>>407
>staticにできることといえば、事前に構文解析してツリーつくるぐらいだけじゃねえか?

そう、exerbはまさにそれ。
でもevalがあるからパーサが不要というわけじゃない。
結局スクリプトにインタプリタをくっつけただけ(に毛が生えた程度)

411 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 23:01:58 ]
>>410
でもその”毛”は結構デカイんだよな(w




412 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 23:06:40 ]
剛毛

413 名前:デフォルトの名無しさん mailto:sage [2005/06/12(日) 23:13:18 ]
>>402
lispのevalってコンパイラではどんな風に実装されてるの?
多分S式に特化した工夫があるんだよね。

>>411
作るのは大変だろうけど、そんなに実行効率変わるもんなの?

414 名前:デフォルトの名無しさん [2005/06/12(日) 23:33:12 ]
おれは、どちらかというとパイパン派だけどな


415 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 00:13:17 ]
>>409
ほっといてやれよ、408が知らないのはRubyだけじゃないだろ。

416 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 00:51:55 ]
LISPのevalがする仕事ってのは入力リストを
コードと見なしてマクロ展開しながら評価してくだけ。
S式になってる時点で字句解析が済んだリストの状態ってことだから、
たとえば動的に作成した引数リストを渡したいだけならreadしたものを
そのままapplyに渡せたりするので、少し工夫すればevalを使う
必要はあんまりない。
ほとんどコンパイル済みのクロージャとかで間に合う。
この辺rubyとかperlのevalの事情とはだいぶ違う。

417 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 01:18:37 ]
よくあるようなschemeコンパイラが出力するネイティブコードには
1) プログラム全体のS式(パースなどはされてるかも)
2) S式を評価するインタプリタ(eval)
に加えて、最適化用に
3) defineされた関数をコンパイルしたネイティブコード
があらかじめ含まれてる、って理解でいいかな。

しかし一部のschemeコンパイラ(chezとか)の異常な速さには、
もっと秘密がありそうだw

418 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 01:30:09 ]
は? 1を含む必要が理解できないんだが。


419 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 01:44:14 ]
>>417
ChezやGaucheなどの速い部類のschemeは
read後のevalの代わりにcompileフェーズが入る。
もちろんマクロはcompile直前に全て展開される。
read→compile→run(→write)

420 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 01:59:54 ]
>>418
あ、schemeはリフレクションみたいにプログラムをデータとして扱うことはできないのか。
じゃquoteされてるとこだけでいいのかも。(自信なし)

>>419
あー、JITか。なるほどなるほど。サンクスです。
Rubyも爆速コンパイラ作ってJITやhotspotすればいいんだな。(無理)

421 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 02:01:09 ]
>>416
むしろevalが出てくるLISPコードは下手糞が書いたものか、
自分で評価周りを拡張するとかの特殊用途ぐらい。



422 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 02:02:31 ]
>420
誤解があるようだけど
schemeのS式もLISPと同じくプログラム=データですよ。

423 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 02:09:49 ]
いったんdefineされた関数の定義を、S式として取り出して扱うこともできるんでしたっけ。
(define (f x) x) の f から '(lambda (x) x) を取り出すみたいな。
だとしたら>>417の1がいるかな、と思ったんですが。

424 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 02:46:12 ]
>>423
かなり昔のLISPの本を読んだね?
今はdefine定義された関数を評価するとクロージャという
Schemeオブジェクトとして抽象化される。
クロージャからデータ(コードの印字表現)は基本的に取り出すことはできない。
コンパイルすると不要な情報は消えてしまうし、できたとしても処理系依存で実装される。
もちろん取り出せる処理系もある。
まあ、これ以上詳しくはschemeスレで聞くか、適当な入門サイトでも見た方が。

425 名前:398 [2005/06/13(月) 12:14:36 ]
下らん。もう一回言うね。

  >>397の研究内容を踏まえて、
  動的言語としてのRubyの言語仕様のうち、
  コンパイルしにくい要素って何なんだろうね。

426 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 13:26:07 ]
>>425
は?今まで言われてきた通りじゃないの?

>the main difficulty of compiling Ruby is the fact that the program can
>be updated during run-time

とあるから、論文の著者自体は>>407を問題視してると思われ。
つか、論文あるんだから読めよ。

427 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 13:43:04 ]
>>424
なるほど、ありがとうございました。
schemeというとプログラム=データだってよく聞くんですが、
その本質の意味や利点をいまいち理解できてないんですよね。
入門サイトに行ってきます。

428 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 14:05:56 ]
>>426
ちょっと目を通した。
>>407そのまんまの話で、proof of conceptという事でがっくり。
今後に期待といった感じか。

429 名前:398 mailto:sage [2005/06/13(月) 18:15:38 ]
>>426
論外だな。もう一回言うね。

  >>397の研究内容を踏まえて、
  動的言語としてのRubyの言語仕様のうち、
  コンパイルしにくい要素って何なんだろうね。

430 名前:398=428 ◆Nj.Bk96Vy2 [2005/06/13(月) 18:21:49 ]
>>429をスレ荒らしと判定。レス削除依頼を出します。

431 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 19:47:55 ]
>>429
そもそもrubyはコンパイルできないじゃん
しにくいという以前に、できない言語なんだよ



432 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 20:41:35 ]
英語読めないんだね

433 名前:デフォルトの名無しさん [2005/06/13(月) 21:28:11 ]
>>431
はぁ?
そんな言語ありませんが?

アフォですか?


434 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 21:44:05 ]
コンパイルの定義で揉める巧妙な書き込みがなされているな

435 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 21:44:44 ]
Rubyは存在しないらしい、という学説がここに提唱されました

436 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 22:35:40 ]
具体的な根拠も書かずに煽るだけの輩がいるからねぇ

437 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 23:19:26 ]
>>436
発狂?

438 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 23:23:15 ]
Rubyの開発周りはキチガイだらけだからね

439 名前:デフォルトの名無しさん mailto:sage [2005/06/13(月) 23:25:50 ]
なんだ荒らしか

440 名前:ptr->433 mailto:sage [2005/06/14(火) 00:13:09 ]
要は、コンパイラが作れないような言語はないってことでしょ?


441 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 00:31:05 ]
インタプリタが作れる言語ならコンパイラは原理的には作れるね。
コンパイルするメリットがあるかどうかはともかく。



442 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 01:18:12 ]
eval

443 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 03:51:04 ]
下らん。もう一回言うね。

  >>397の研究内容を踏まえて、
  動的言語としてのRubyの言語仕様のうち、
  コンパイルしにくい要素って何なんだろうね。


444 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 03:57:46 ]
>>443をスレ荒らしと判定。レス削除依頼を出します。

445 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 07:50:41 ]
>>425をスレ荒らしと判定。レス削除依頼を出します。

446 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 07:59:05 ]
うへ、プ板版のkouei35みたいなやつが居るな。
こういう奴がいると強制ID制度ほしくなるな。


447 名前:デフォルトの名無しさん [2005/06/14(火) 10:36:44 ]
>>434
件の論文は、中間コードへのコンパイルの事だと思うのだけど。Ruby-toLLVM compiler
こっちではネイティブコードへのコンパイルを想定してる様な雰囲気ですよね。

>>428
sRubyについて調べてみては?

448 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 10:54:58 ]
なんだRubyの人って説明不足で揉めるような書き込みが大得意なんだな。
最初からLLVMって書いてあるのに。

449 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 11:02:24 ]
>>447
> sRubyについて調べてみては?

えぇ〜と、なんか前聞いた覚えあるんだけどこれかな?

thekode.net/misc/sruby.pdf
Robert Feldt, sRuby - A Ruby dialect for low-level programming

450 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 11:15:29 ]
これだからRubyがからむと嫌なんだ・・・

451 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 11:51:46 ]
中間コードへのコンパイルもネイティブコードへのコンパイルも
本質的に他言語への翻訳でしょ。

コンパイルの定義で揉めるというのは、
「インタプリタとスクリプトをくっつけて単体実行可能にしたもの」
を出力するのはコンパイルと言えるか否か、という話じゃないの?

>>450
まあでも、字句解析構文解析のかみ合わなくて不毛な話題よりは
今の方が面白いよ。



452 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 18:30:27 ]
下らん。もう一回言うね。

  >>397の研究内容を踏まえて、
  動的言語としてのRubyの言語仕様のうち、
  コンパイルしにくい要素って何なんだろうね。


453 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 19:03:05 ]
そんなに何度も繰り返すなら、
まずはコンパイルしにくくない要素のコンパイルをあなたが説明してね。


454 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 19:55:33 ]
ここまでくると荒らしだな

455 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 20:22:40 ]
>>450
lispもなw


456 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:15:48 ]
Lisp で荒れる理由: アンチが厨だから
Ruby で荒れる理由: ユーザが厨だから

457 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:18:31 ]
>Lisp で荒れる理由: アンチが厨だから

Lispユーザーが平気でこう言うあたりが、荒れる真の理由かねw

458 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:39:52 ]
まあ日本のLisp人口の多数派は40前後のおっさんだからね。

459 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:45:03 ]
Lispは40年前に生まれた言語だから、生まれた時から、Lispってる計算になる

460 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:46:43 ]
>>458
こういう FUD を平気で言うあたりがアンチが厨だという証拠w

461 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:50:00 ]
年齢が40前後がなんでFUDになるのだろう。



462 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:55:53 ]
この公式はどうだろう
アンチLISP=Rubist

アンチRuby=LISPer

463 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 21:58:23 ]
>>460は数少ない現役厨房Lisperか。大事にせにゃw

464 名前:デフォルトの名無しさん [2005/06/14(火) 22:02:58 ]
>>462
すなわち、こういう事のようだな(↓)

LISPシンパ≒Rubyシンパ


465 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 22:18:29 ]
………………………… き り す て …………………………

466 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 22:20:02 ]
lispもなw

たったこの一言が原因で、しつこく粘着して
しっかりと荒らすんだから、ある意味すごい

467 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 22:28:37 ]
………………………… Reset …………………………

468 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 22:46:48 ]
このスレでLispとRubyの話題は禁止ということで

469 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 22:55:05 ]
………………………… >>468 を は つ げ ん き ん し …………………………

470 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:11:53 ]
荒れてる原因はRubyでもLispでも信者でもアンチでもないと思うんだが…
単に話が理解できないバカが原因だろ?

471 名前:デフォルトの名無しさん [2005/06/14(火) 23:11:57 ]
3大禁句(↓)

Li(ry
Ru(ry
りん(ry




472 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:14:03 ]
>>458
ってことは、煽りでなくて若者には人気がないってことですか?(LISP)
素朴な疑問としてなんでなんでしょうね?

(書籍が少ないから?)


473 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:15:10 ]
>>470
はげどう

474 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:19:01 ]
>>472
↓で同じ質問をして、身をもって知ってみてはどうか?
pc8.2ch.net/test/read.cgi/tech/1115901841/

しかし粘着がまだいるな

475 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:24:31 ]
>>472
書籍って言語解説書のこと?
そんなもの必要なの??
要らないと思うなぁ。

476 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:27:03 ]
>>472
Lispの黄金時代というのが太古の昔あっての。
汎用機屋以外は、猫も杓子もLisp Lisp、
Lispしか動かないマシンが続々と発売された。
普通の商売としてLispを使った経験のある人間がその世代なんじゃ。

477 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:31:32 ]
ありえん。
数式処理屋、エキスパートシステム屋、AI屋、あと画像処理屋くらいなもんだろう
Lisp専用機使ってたのは

478 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:37:11 ]
LISPのアンチというのがわからんな。
LISPの機能とかは他の言語で代用は無理だからなあ。
まあEmacsなかったらm4以下の存在だったかもしれない。

479 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:39:59 ]
アンチを作りたくてしょうがなさそうな発言だね。

480 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:42:36 ]
>>478のようなやつがなんでこのスレにいるんだ…あきらかに無縁だろ…

481 名前:472 [2005/06/14(火) 23:50:38 ]
>>475
やはり本がないと(汗

>>477
専用器なんてあったんですか!
ある意味凄い。




482 名前:デフォルトの名無しさん mailto:sage [2005/06/14(火) 23:56:08 ]
シンボリ


483 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 00:02:03 ]
>>477
「Lisp専用機」という存在自体が今の人間にとってはそれこそ「ありえん」だろう。
この黄金期も短かった。
最大の理由は、当時登場した万能太陽神に信仰を奪われたこと。
おまけの理由としては、一大国家施策としてヤンキーでなくおふらんすの言語を推進したこと。

今となっては>>478が言うように、エディタのおまけ言語としてしかLispをさわったことのない
人間のほうが多くなってしまった。

484 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 00:04:03 ]
IPSJ>コンピュータ博物館>年表と日本の歴史的コンピュータ
 ワークステーション・Lispマシン
  www.ipsj.or.jp/katsudou/museum/history/history_ws.html
  www.ipsj.or.jp/katsudou/museum/history/profile_ws.html

 1974:MIT:CONSマシン
 1974:Xerox PaloAlto:Altoワークステーション上にInterLispを移植
 1976:MIT AIラボ:CADRマシン
     →Symbolics、LMI(LISP Machine Inc.)社の商用Lispマシンの原型となった

 1979:神戸大:神戸大Lispマシン開発
  www.ipsj.or.jp/katsudou/museum/computer/Kobe-Lisp.html
 1982:大阪大:LispマシンEVLIS開発
  www.ipsj.or.jp/katsudou/museum/computer/Handai-EVLIS.html
 1983:電電公社:通研LISPマシンELIS試作機稼動
  www.ipsj.or.jp/katsudou/museum/computer/NTT-ELIS.html
 1984:理研:数式処理計算機FLATS開発
  www.ipsj.or.jp/katsudou/museum/computer/Riken-FLATS.html
 1984:富士通:Lispマシン FACOM α 発表
  www.ipsj.or.jp/katsudou/museum/computer/FUJ-Alpha.html

485 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 00:08:57 ]
>483
フランス産はどれも優雅だねぇ。

486 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 00:29:25 ]
フランスの言語って何?
OCaml は何やら汚らしい感じがするが

487 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 00:37:50 ]
Prolog?Ada?

488 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 01:59:55 ]
>>484
すげーな富士通までやってたのかw
当時どれだけ影響力あったかわかるな。

489 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 02:15:24 ]
技術的系譜はこんな感じだそうです。(IPSJ情報)

 神戸大TAKITEC→富士通FACOM α(試作機)→理研FLATS(発案:故後藤英一先生, 設計協力:富士通, 製作:三井造船)→FLATS2
                              →富士通FACOM α(製品版)

 阪大EVLIS(並列処理)…→?

湯浅先生達の超並列機は、どういう技術的系譜にあるのだろう・・・?

490 名前:489 mailto:sage [2005/06/15(水) 02:29:29 ]
訂正。FLATSは各種の高速化技法を導入したオリジナルですね。

・神戸大TAKITEC→富士通FACOM α(試作機)→富士通FACOM α(製品版)
            \NTT武蔵野通研 ELIS → NTT-IT ELIS-8100/VME/8200 (LSI開発協力:沖電気)

            ・理研FLATS(発案:故後藤英一先生, 設計協力:富士通, 製作:三井造船)
                              →後藤磁束量子情報プロジェクト FLATS2

・阪大EVLIS(並列処理)…→?


491 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 02:29:36 ]
やっぱりこのスレでLISPとRubyの話は厳禁



492 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 02:31:33 ]
………………………… >>491 は げ ん き ん …………………………

493 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 02:41:27 ]
Lispは別に問題ないよ
Rubyが出てくると荒れてるだけ

494 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 02:51:33 ]
>>493
これだけスレ違いのレスが続いて何が「Lispは別に問題ないよ」だよ

495 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 03:19:40 ]
荒らしてる本人に自覚が無いだけだな

496 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 08:25:59 ]
スレ違いなんだよ こっちでやれ
CommonLisp Scheme Part13
pc8.2ch.net/test/read.cgi/tech/1115901841/

497 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 13:18:50 ]
スレが進んでるなぁ……


地面に置かれた砂糖に集まるアリみたい。
アリは嫌いだよ。急所噛まれた事あるから。

498 名前:デフォルトの名無しさん [2005/06/15(水) 14:30:40 ]
>コンパイルの定義で揉める巧妙な書き込みがなされているな
>なんだRubyの人って説明不足で揉めるような書き込みが大得意なんだな。

この内容で揉めたほうがマシだったな。現状よりは。

499 名前:デフォルトの名無しさん [2005/06/15(水) 18:51:24 ]
>>484
LISP専用マシンが何故必要とされたの?
今に例えると、例えば、 Ruby専用マシンみたいなものだよね?
全然考えられない!


500 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 19:15:09 ]
頭悪すぎ

501 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 19:26:30 ]
>>499
速いからだよ



502 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 20:16:45 ]
>>499
特定の言語を効率よく実行できる専用マシンは、昔のようにハードのオマケでソフトが在った時代には普通だった
ちなみに、今の御時世では Java 専用マシンがあったりする

別に不思議じゃない

503 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 20:27:33 ]
・当時、汎用機アーキテクチャの標準(IBM/360〜370)は姿を現していたが、
 それ以外のアーキテクチャはまだまだ未発達もしくは未普及だった。
 当時の汎用機アーキテクチャでは必ずしも効率的に実行できない処理のために、
 科学技術計算専用マシンや特定言語専用マシンの研究が始まりつつあった。

・MITのMacプロジェクトでLispアプリケーションを蓄積したが、
 実行には高価な中〜大型汎用機(ITS, GE Multics, DEC-10/20)が必要で、
 小回りが効かなかった。
 そこでPDP並みの価格で中〜大型機並みの性能を持つ
 Lisp用パーソナル・ワークステーションが開発された。

504 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:11:57 ]
>>499には時代という物が理解できないんだろうな。


505 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:22:50 ]
>>499
>>500-504まで、誰もわかってないようだからわからないことを気に病むことはないよ。
同時代のおっさんにはあまりに自明のことなんだが、
わかったからといって何かの足しになるわけでもなし。
スレ違いだし、このへんでひっぱるのはやめよう。



506 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:34:42 ]
最近見た中で一番ショボいハッタリだ

507 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:50:41 ]
20代のLISP使いだけど
おっさんネタはさっぱりわからんなあ

昔のPC板ってのがあるから
いいかげん懐古ネタは他所でやんなさいよ

昔のPC
bubble3.2ch.net/i4004/

508 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 22:54:22 ]
>>507
いやPCの話じゃないんだが…

と一応ツッコミは入れとくが、スレ違いということには同意

509 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 23:04:49 ]
>>507
ちらっとその板みたが、自分からみたらちっとも昔ではないのですな。
すでにPC前提ってあたりで昔ではないのですよ。

荒らすつもりじゃ無く純粋に懐古趣味としての昔話かと思って期待がはずれたのです。


510 名前:デフォルトの名無しさん mailto:sage [2005/06/15(水) 23:42:23 ]
>>507
アホか。リアルタイムで知らない事でも、
文献やWebを駆使して勉強するもんだよ。
特にLispなんて80年代に最盛期を迎えた言語だからな

511 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 19:36:39 ]
LISPの全盛期はいつだ? 80年代か? MLは今なんだよ…。



512 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 20:28:40 ]
>>511
> MLは今なんだよ…。
いいえ。

513 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 21:22:31 ]
80年代つーと洋楽だなあ

514 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 21:24:57 ]
>>511
桜木君…

515 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 22:03:41 ]
いいかげんにしろ、スレ違いだ。

516 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 23:46:50 ]
そ /                  _r  、    、   .ヽ、 R
| L_   , - ´  ̄ ̄ ` ヽ 、   ',ヽー/_ヽーヽ/ヽイ _) u
な < /           ヽ,  /     λ       ヽ. b
の //    イ      ヽ   .i く  チ\イ_レヽ_/ルノヽ ) y
か \! !イ-/─レイ、ル─ヽ, / >i .レイ ,r=、   ,.-=ゝiイ  ヽ, y
| .| ̄i /イ,r=-、   ,-=ヽiミ}<] !レイレi { !_r!   i、_r! リ  ) 最
,、 / .レ| i { i、r!   i、_r!} ア   |   | !,""  ___ "" ! !  く. 高
 `   | i,""  ____  "" | | | .|  ! i ヽ、 !   j  ,イレ  > ! !
     i リヽ、 !   `j   ,イ !|  | |ノル `レ ,_--_イiレ - 、/ ̄ヽ、
     レi レ`レ ,--_イ レ、 リレ'    rイくi-/ / , ---ヽ、/__
人/ヽ、_    ,イくi--//__人__人_   ,く,_[><]__//_(⌒)-、i,_ ノ
はあ /  / i  (>Y<) ) 最R今 (   ,ヽi  '    (_ゝ_ヽ_ノノノ ´
はは i  / .!   `´  ). 高u 夜 (  ./ .!      ヽ、___ノ
はは > / イ、    ヽ, ! b も (  / <、_ 、     _ く
はは < /  ヽr----─> ! y  ( / /  /      ヽ\

517 名前:516 mailto:sage [2005/06/17(金) 00:33:33 ]
誤爆しました

518 名前:俺の学生時代はi386でGoferかな mailto:sage [2005/06/17(金) 00:36:23 ]
>>516
さっさと氏ねよ

>>511-512
定理証明系の開発は70年代
SML/NJの開発は80年代半ば
その後87〜98がHaskell標準化・・・もしかして進歩止まってるやん

519 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:39:16 ]
>>518
スレ違いのお前もな

520 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:42:57 ]
>>519 はぁ?煽りやり過ぎて、話題がスレ違いかどうか判断もできなくなってるのか。

521 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:44:16 ]
>>520
どこからどう見てもスレ違い



522 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:45:07 ]
キチガイが粘着中

                まともな人はしばらくお待ち下さい

523 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:47:39 ]
やっぱりこのスレでLISPとRubyの話は厳禁だな

524 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 03:45:37 ]
MLじゃないの?

525 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 20:09:56 ]
>>523
ではmallocとfreeについて話そう。

526 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 20:11:36 ]
>>525
やっぱこのスレではコンパイラについて話さないとな

527 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 21:22:29 ]
lambda liftingについて分り易く教えてください

528 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 04:50:11 ]
荒らしがいなくなるとスレが止まるんだなぁ。
つかLispもMLも禁止の言語処理系スレって…。

>>526
コンパイラの定義を教えてくれ。

>>527
foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?lambda+lifting

529 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 09:55:44 ]
LALR(1) を勉強するのにお勧めの書籍かサイトありましたら
教えて下さい。


530 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 11:02:50 ]
・コンパイラの構成と最適化 中田 育男
 www.amazon.co.jp/exec/obidos/ASIN/4254121393/


531 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 15:27:01 ]
>>528
よくわからない
変数が増えただけに見えるorz
引数渡しにするってことかな?



532 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 16:10:29 ]
だいたいLispやMLの全盛期の話のどこがスレの趣旨に沿ってるんだよ?
そんな話はLispやMLのスレでやれよ

533 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 16:52:39 ]
>>531
処理系を作る立場で考えてみると良いんじゃないかな。

534 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 18:01:40 ]
>>530
それって最適化でしょ?メインは


535 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 19:57:38 ]
>>529
Dragon Bookでいいんじゃないの。


536 名前:デフォルトの名無しさん [2005/06/19(日) 20:34:44 ]
>>530
良書には違いないが、LALRつーわけどもないだろ。


537 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 20:56:36 ]
>つーわけどもないだろ。


538 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 21:05:16 ]
>>536をparseするのにお勧めの書籍かサイトありましたら
教えて下さい。



539 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 21:08:06 ]
>>538
・コンパイラの構成と最適化 中田 育男
 www.amazon.co.jp/exec/obidos/ASIN/4254121393/

540 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 21:13:07 ]
>>538
Dragon Bookでいいんじゃないの。

541 名前:536 mailto:sage [2005/06/19(日) 22:33:02 ]
スマソ、「つー訳でもないだろ」の誤りorz




542 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 00:02:19 ]
>>536
> LALRつーわけでもないだろ。

 ?
 コンパイラ本の一つも読まずにアフォレス、とても痛い小学生だな


543 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 07:23:45 ]
>>541を意味解析するのにお勧めの書籍かサイトありましたら
教えて下さい。


LALRの良書っていうわけでも無いだろ
ってことか?
じゃあ>>541がLALRの良書を薦めてくれ。

544 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 17:15:35 ]
そもLALR一つに絞った本が良書と言えるのか?

545 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 19:51:09 ]
>>544
それってyaccの入門書のレベルな希ガス

546 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 21:58:07 ]
>>545
いや、案外その手の本は扱ってない。


547 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:17:16 ]
はぁ?
LALRわかんなきゃyacc/bisonは使えないじゃん

548 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:28:32 ]
>>547
理屈ではそうだけど、実際はそうじゃないんだよ。


549 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 01:20:40 ]
全然自慢にならねぇ主張だな。
わけわかんないけど使ってるって?へ

550 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 01:31:52 ]
紳士的に解釈すれば、ツールの使い方がわかれば
LALRアルゴリズムの詳細なんて知らなくても良い
ということじゃないかなあ。
いや、ある程度は知ってないとまずいかな。
yaccの作成するテーブルがどういう理屈で作成されてるかぐらいは・・

551 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 01:33:23 ]
いやちゃう。
単にyaccが吐いたコードにアクション追加したり文法をデバッグするのが無理



552 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 04:07:32 ]
>>550
どうだろう?yaccって結構簡単に使えるけど、それとLALRの理解は別だと思う。
極端な話し、関数電卓ぐらいのパーサならLALRの知識なんて必要ないし。

ちがうかな?


553 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 04:29:04 ]
それで結局、今出てるyacc/lex本のLALRの解説は充実してるのか?

554 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 09:30:36 ]
何するつもりか知らないけど、
LALRだけ勉強しようというのは効率が悪いから
普通の文法解析の教科書では一通りの文法を説明している。

・再帰下降パーサで書ける文法
・LALRパーサじゃないと書きにくい文法
・その他、演算子順位文法、属性文法
とか知っておくと、扱いたい文法が上記のいずれに近いのか、
素早くもしくは効率的に実装するには、どうすれば良いか
判断できるようになると思う。


555 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 11:58:26 ]
[課題Q]3角形の底辺の長さ,高さをキーボードから読込み,その面積を計算するプログラムを作成しなさい.
ただし,底辺の長さ,高さ,面積の値を入れる変数名をそれぞれteihen, takasa,mensekiとし,いずれも実数型(double型)とする.


void main( void )
{
double teihen, takasa, menseki;

printf( "底辺は?\n" ); /* 入力を促すメッセージを表示 */
scanf( "%d", &teihen );

menseki = teihen * takasa / 2;
printf("%f\n",menseki);
}

これ誰か完成させてくれ

556 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 12:28:11 ]
>>555=スレ違いのキチガイ

557 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 13:09:35 ]
次スレから「相談室」ってのを外そうよ。
この文字だけ見て書き込んでいるとしか思えない致傷多すぎる。


558 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 13:24:09 ]
>>555は単なる構ってチャンだろ。キチガイはさっさと逝け

559 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 21:03:15 ]
標準入力から直接入力すると、行末の改行が削れてしまうんですが、
それを考慮すると行番号の計測ってどうやるんでしょうか

560 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 21:13:37 ]
>>559 スレ違い。初心者向け相談室へ逝け

561 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 23:43:16 ]
LALRの話しもすれ違い???




562 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 01:15:48 ]
構文解析の話なんてつまらんだろ

563 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 01:24:54 ]
おれはおもしろいと思うよ。
むしろ他人の作った完成品を貶したり褒めたりするのはよそでやってほしい。

564 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 04:10:23 ]
文法なんて結局は宗教戦争みたいなもんじゃん。
他人の作った完成品の工夫を見て学ぶのもおもしろいよ。
つか、このスレはいつまでたっても構文解析か荒らしの話しかしてないし…。

565 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 13:00:54 ]
字句解析・構文解析 ⇒ つまらん。話したくない
意味解析・目的コード生成 ⇒ 各々の機械語スレへどうぞ
各種言語に依存した…… ⇒ 厨は引っ込め


このスレは、何について話すスレなんだ?

566 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 13:20:55 ]
>>565
実装レベルの話はどうでもいい。

567 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 13:21:16 ]
>>565
というか厨はお前だろ。

568 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 16:42:34 ]
>>565
うーん、そこで「他でヤレ」っつってるのは、
単なる荒らしだと思うよ。相手にする必要なし。

つか荒らし被害者のフリして荒らすなって(笑

569 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:08:49 ]
>>1
> 字句解析・構文解析から,データフロー解析,ループ並列化,タスク並列化,SSA変換,
> CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン等各種最適化,
> それにVM,GC,JIT,リンク時最適化,動的バイナリ変換などなど。
> 意味論に関する話題も歓迎です。

字句解析・構文解析以外にも沢山話題はあるじゃない。

570 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:12:09 ]
じゃとりあえず話題をどうぞ(マジ

最近、プログラミング言語系の開発とかやってないなぁ〜(遠い目


571 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:17:23 ]
んじゃ制御フローの話題でも。
最近は制御フロー解析はstructuralな手法に移りつつあるようだけど、reducibleでないループ
はどうしてる? そこだけ古典的な方法でやってる?



572 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:20:19 ]
質問するときは、まず相手を探し、次に質問を選ばなきゃ。
>>570に書いたとおり、俺はスルー

573 名前:572 mailto:sage [2005/06/22(水) 18:23:37 ]
つか俺、ドラゴンブックの和訳出る手前で
コンパイラーに関する体系的な勉強が止まってる。
ドラゴンブックに型変数の話がちょこっとしか載ってなくて、興味が萎えたんだよなぁ。


574 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:33:58 ]
subset型が欲しいなと思うときはある。
y : { x in Int | P(x)}みたいな感じで。
ただしimpredicativeなものは勘弁。

575 名前:デフォルトの名無しさん [2005/06/22(水) 18:34:32 ]
Matz召還して議論したらどぉーお?

576 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:52:50 ]
>>574
Pascalの範囲型みたいな話だね。
構文上の判りやすさはさておいて、
そーゆーのはObject指向で解決できるのでわ?
(constractorや各種演算子で範囲型を外れないようにチェックして、
 もし外れたら例外発生、とか)

577 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 18:55:32 ]
オブジェクト指向と型は何の関係もない

578 名前:デフォルトの名無しさん [2005/06/22(水) 19:10:02 ]
オブジェクト指向のクラスを型とみなす事「も」できる。
通常のOOプログラミングでは、型とクラスの相違は曖昧にされる事が多い。
理論では識別したがるみたいだけどw

579 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 19:12:12 ]
なんで区別したがるんだっけ?
何度か読んだ覚えがあるけどど忘れした

580 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 20:13:18 ]
俺も教えて欲しい

581 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 20:31:22 ]
Haskellなんか、クラスと型は別もんだけど
そういう意味じゃないの?



582 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 20:32:48 ]
クラスがあるのに静的型が無い言語とか、そもそもクラスが無い言語とかもあることから来たのでは?

583 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 21:06:03 ]
言語処理系に関する研究の進展によって、
それまで言語処理系の内部機構だったものが、
言語ユーザに安全かつ判りやすい形で開放される事がある。
・・・メモリー・アロケーション然り、ユーザ定義型しかり。型変数、型推論も。

Lispとか、OOとか、そーゆー「開放」を前倒しした形で試すには、
良いプラットフォームなのでわ?と

584 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 21:11:57 ]
>>583
日本語でお願いします

585 名前:583じゃないが mailto:sage [2005/06/22(水) 21:15:44 ]
言語として本格的に実装する前の実験段階の実装には、LISP や OO を使うと良いのではないか?


って読んだ

586 名前:デフォルトの名無しさん [2005/06/22(水) 21:21:16 ]
お前の日本語力、理解力が低いのは、よく判った。

これまでの言語処理系発展の歴史の中で、
それまで言語処理系内部の仕組みとしてユーザの立ち入りを禁止していた機構
  例えば:メモリーの動的アロケーション、型の追加定義、型を推測する仕組み
が、簡潔かつ安全な形でユーザに開放されてきた。

・Lispのように高階関数で言語の実行機構を弄る事ができる言語、
・オブジェクト指向言語のように、データと操作をカプセル化して新しい型を定義しやすい言語、
は、上記のような「新しい機構のユーザへの開放」を実験するのに適しているのではないか?

                                                       以上


587 名前:583=586 [2005/06/22(水) 21:22:41 ]
>>585
介錯かたじけないっす。
>>586>>584宛ての熱いラブレターでつ・・・

588 名前:583じゃないが mailto:sage [2005/06/22(水) 21:25:17 ]
読みにくいです

589 名前:デフォルトの名無しさん mailto:sage [2005/06/22(水) 21:28:39 ]
はい。反省。
さっき翻訳の真似事で下訳してたから、
むちゃくちゃな語順の日本語をしゃべってるかもしれない・・・

590 名前:デフォルトの名無しさん [2005/06/23(木) 00:07:11 ]
>>586
アフォ


591 名前:デフォルトの名無しさん mailto:sage [2005/06/23(木) 00:11:25 ]
哀れな奴



592 名前:デフォルトの名無しさん mailto:sage [2005/06/23(木) 02:12:10 ]
字句解析はできる
コンパイルも通って実行もできる
でも実行した結果は意味不明

そんな感じの文章

593 名前:デフォルトの名無しさん mailto:sage [2005/06/23(木) 04:16:57 ]
重箱の隅つつくだけ

594 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 04:24:43 ]
>>553
O'Reilly の Lex & Yacc には少なくても無い。
用語の説明コーナーに出ているだけ


595 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:01:28 ]
bison でのエラーメッセージの出し方で質問です。

スクリプト言語を作ろうとしてて
入力にエラーがあったときに詳細なエラーメッセージを出したいんですが
どのようにしたらいいでしょうか?

例えば
if x != 0 {
^
'(' expected.
とか出したいんですが、そもそも「if文の途中」というのが
取れるんでしょうか?

また、現在注目しているトークンの値(yylexからの戻り値)
はどこかに格納されてるでしょうか?


596 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 22:08:57 ]
まあ>>595くらいのレベルがこのスレにちょうどあってる気がする

597 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 23:12:59 ]
見てると、LispとRuby、両方ともアンチが厨なだけに見える。
厨だから、ちょっとこの二つが出てくるとすぐ暴れだして
荒れる。

598 名前:デフォルトの名無しさん mailto:sage [2005/06/24(金) 23:18:57 ]
>>597
わかってないな。
何かを貶す時の基本は度外れに褒めまくること。
そうすれば>>597のようなアホがほいほいつられてくれる。

599 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 00:32:42 ]
>>595
lexerはどうしてるの?
Lex等を使わずに自分で書いたのなら、どこまで処理してるかは把握してるのでは?

lookahead tokenの値は変数yycharにおさめられてます。


600 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 01:21:33 ]
>>595 bisonのオプション
#define YYERROR_VERBOSE 1 /* Enable verbose error messages. */
マニュアルにも出てるはず

> そもそも「if文の途中」というのが
> 取れるんでしょうか?
bison の error を使えば if文の途中でパース失敗した
ときのアクションとか付けられる
なんか説明しづらいけどマニュアルのサンプルに出てそう

601 名前:デフォルトの名無しさん [2005/06/25(土) 09:59:34 ]
>>595
すれ違い。

Lisperより




602 名前:595 mailto:sage [2005/06/25(土) 10:03:24 ]
みなさんありがとうございます。これから試してみようと思います。

>599
flexを使ってます。bison側で「@x」と書けば、トークンの位置が取れると
www1.kcn.ne.jp/~robe/pf/pf012.html
に書いてあったんですがまだ試してません。yycharですか、ありがとうございます。

>600
YYERROR_VERBOSE は試してみました。多少わかりやすいエラーメッセージが
yyerrorに与えられるようになったんですが、自動生成じゃなく自分でエラーメッセージを
決めたいんです(Cコンパイラが出すような)。

error は今のところトップレベルでやっちゃってるんで、
そこを文それぞれにもってかないとだめなんですね。


603 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 12:44:21 ]
>>601
死ね。


604 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 19:51:54 ]
>>601 ってなにもの?
Lisp 屋からみてもはずかすぃんだけど...


605 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:03:06 ]
>>604
おまぃLisp屋を騙ってる素人だろ。
Lispはプログラムとしていきなり構文木書かせるから、
文法パーサ(yacc, bison, Rie)はイラネェ〜んだよ

だから、「コンパイラ/スクリプトの話題に文法パーサはイラネェ」
プログラミングに精通してる人向けのジョークなんじゃねぇ?
;; あ、素人の人には判らない話だから、
;; そこの人、ムキになって否定しないように・・・



606 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:06:14 ]
よく分からんが、>>605 が素人だということはよく分かった

607 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:15:28 ]
はいはい、わかったわかった(苦笑

608 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:16:27 ]
まあ、大体はあってるんじゃないか。
全くいらないってわけじゃないが、他と比べて
簡単であることは間違いない。

609 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:19:30 ]
文法パーサ・ジェネレータは 使わない。
S式に関する文法は      ある。

妙に関心してるのも出てくる始末(苦笑
素人相手にジョーク飛ばすのも大変だなぁ。


610 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:22:26 ]
なるほど。
>>605 みたいにスーパーな Lisp 屋ならば、
SICP の超循環評価器なんてイラネェ〜んだろうな。


611 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:42:27 ]
>>609
なんだ、お前は「文法パーサ」って言葉でツールの類を指してたのか。



612 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:49:41 ]
601でギャグを言ったつもりだったっぽいなw

613 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:50:45 ]
yacc の検索結果のうち 日本語のページ 約 17,600 件中 1 - 10 件目 (0.15 秒)

構文解析器 の検索結果のうち 日本語のページ 約 10,200 件中 1 - 10 件目 (0.23 秒)

パーサ の検索結果のうち 日本語のページ 約 53,700 件中 1 - 10 件目 (0.19 秒)

パーザ の検索結果のうち 日本語のページ 約 8,720 件中 1 - 10 件目 (0.04 秒)


文法パーサ の検索結果のうち 日本語のページ 約 24 件中 1 - 5 件目 (0.22 秒)


614 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 22:58:59 ]
久しぶりにに揚足鶏取れたんで、大喜びか。
下らない人間だ


615 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 23:00:52 ]
「LALR文法パーサ」=構文パーサの一種

バカは覚えときな。

616 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 23:06:07 ]
LALR文法パーサに該当するページが見つかりませんでした。

検索のヒント
- キーワードに誤字・脱字がないか確かめてください。
- 違うキーワードを使ってみてください。
- より一般的な言葉を使ってみてください。
- キーワードの数を少なくしてみてください。


617 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 23:13:04 ]
荒らすなよ

618 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 23:14:09 ]
Googleで検索できない単語は間違っていると信じている、
痛い素人が粘着しているな。哀れな奴

619 名前:デフォルトの名無しさん mailto:sage [2005/06/25(土) 23:27:41 ]
以前、LALR(1)の書籍orサイトを尋ねたものですが、
なかなかLALRのみっていうのは無いんですね。

ところで、皆さんはどうやって学習されましたか?
学習されたときの書籍とか覚えていましたら、教えて下さい。


620 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:25:28 ]
>>604
おまぃLisp屋を騙ってる素人だろ。
Lispはプログラムとしていきなり構文木書かせるから、
文法パーサ(yacc, bison, Rie)はイラネェ〜んだよ

だから、「コンパイラ/スクリプトの話題に文法パーサはイラネェ」
プログラミングに精通してる人向けのジョークなんじゃねぇ?
;; あ、素人の人には判らない話だから、
;; そこの人、ムキになって否定しないように・・・


621 名前:デフォルトの名無しさん [2005/06/26(日) 00:31:50 ]
>>620 が素人なのはよくわかった。




622 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:32:51 ]
はいはい、わかったわかった(苦笑


623 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:34:45 ]
別に文法パーサって言葉自体はいいだろ。
ただし、yaccなどのジェネレータを「文法パーサ」と言ってしまってるから
誤解を生むってこと。
なお、googleで検索してる奴はほっとけ。

624 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:36:46 ]
en.wikipedia.org/wiki/LALR_parser

625 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 00:38:46 ]
>>624
で?w

626 名前:デフォルトの名無しさん [2005/06/26(日) 00:42:29 ]
いいですか〜

yaccはパーサではありません。
yaccはパーサを作ってくれるものです。

はい、ここ!試験に出ますよ〜
良い子は覚えておきましょうねぇ〜

627 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 01:14:56 ]
>>626
foo.yを解釈するパーサと言えなくもないけどな

628 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 01:41:04 ]
俺の頭はパッパラパーさ(parser)!

629 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 02:09:28 ]
>>619
旧DragonBook。
あれを読んでたのは大学のころだな。みんなで輪講して、手でLR(0)itemを列
挙して、lookaheadを求めて、表を作成して…とかやった覚えがある。

ところで、LRパーサーの生成方法を知りたいの?
それともyaccの使い方を知りたいの?
前者だったらやっぱりDragonBookを熟読。読んでるだけでは意味不明でも、
簡単な文法(足し算だけの電卓プログラムとか)のLR表を手で生成して
みるとわかってくるよ。

後者ならO'Reilly本で足りるでしょう。


630 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 05:31:33 ]
>>627
yacc全体をそうは言えない。パース以外の仕事もするから。

631 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 10:31:04 ]
「パーサ=構文解析器」だから「文法パーサ」って馬から落馬系じゃなければ
*.yなどの文法をパースするパーサのこと。
609の「文法パーサ・ジェネレータ」は「コンパイラ・コンパイラ・コンパイラ」って意味だな。



632 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 14:18:10 ]
yaccは内部にパーサを持ってはいるんだろうけど、
lispはパーサが要らないんだ!って文章を強引に正しくするために
それを持ち出すのは苦しすぎる。

633 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 14:21:07 ]
yaccは、*.yをパースしたあと、その情報を使って
新たなパーサを作り出すツールであって、
ただ仕事の過程でパーサを使ってるだけ。
だから、yacc=パーサとは普通いわないし、誤解を生むだけ。
間違ってるといえるかもしれない。


634 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 21:28:17 ]
yaccはパーサージェネレーターだろ

635 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 21:30:42 ]
lisp にはパーサは要らないって言っているけど、
「んじゃパーサ無しでどうやってS式をパースするんだい」 って話になるんだけどどうしよう

636 名前:デフォルトの名無しさん [2005/06/26(日) 21:31:30 ]
>>629
ちょっと横レスすまんが、

> 旧DragonBook。

って何?新ドラゴンってあるの?
それとも21世紀本のこと?

> 後者ならO'Reilly本で足りるでしょう。

どうだろうね。俺もその本持ってるけど、
あんまり役に立つとは思えないんだけど。


637 名前:デフォルトの名無しさん mailto:sage [2005/06/26(日) 23:05:19 ]
相変わらず変なのが粘着してるスレだな。

638 名前:デフォルトの名無しさん mailto:sage [2005/06/27(月) 00:20:14 ]
>>636
初版は1977年、もう絶版だから今の若い人は知らんか。

Principles of Compiler Design
Alfred V. Aho, Jeffrey D. Ullman
Addison Wesley
ISBN 0-201-00022-9

Amazonにも画像が無かったが、ぐぐってみたら
www-users.cs.york.ac.uk/~susan/bib/nf/a/alfredvh.htm
の上から二番目にあるな。



639 名前:デフォルトの名無しさん mailto:sage [2005/06/27(月) 04:44:46 ]
ああ。その本なら随分前に培風館から出ていたな、Winston Lisp第一版と同じシリーズで

640 名前:636 mailto:sage [2005/06/27(月) 21:02:19 ]
>>629
失礼いたしやした。
大変参考になりやした。

m(_ _)m


641 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 21:23:10 ]
素人です。

相乗り質問で恐縮ですが、LALR(1) の1って先読みトークンの数ですよね?
このことは、YACCにシフトされているシンボルの数の最大値が1ということにはつながらないのですか?





642 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 21:26:35 ]
素人です。

>>641
知りません。

643 名前:デフォルトの名無しさん mailto:sage [2005/06/28(火) 21:27:41 ]
っていうかマジレスすると

>YACCにシフトされているシンボルの数の最大値が1

は合っているんだっけ?

644 名前:デフォルトの名無しさん [2005/06/28(火) 22:19:16 ]
ヒロシです。
分からんとです。


645 名前:デフォルトの名無しさん [2005/06/29(水) 00:10:28 ]
>>641
そうです。
LR(k)、LL(k)のkは、高々k個の先読みでパースできる文法(のクラス)を表しています。


646 名前:619 mailto:sage [2005/06/29(水) 06:55:18 ]
>>629

> 旧DragonBook。
> あれを読んでたのは大学のころだな。みんなで輪講して、手でLR(0)itemを列
> 挙して、lookaheadを求めて、表を作成して…とかやった覚えがある。

情報ありがとうございます。
でも、もう手に入らないんですね。

> ところで、LRパーサーの生成方法を知りたいの?
> それともyaccの使い方を知りたいの?
|
> 後者ならO'Reilly本で足りるでしょう。

パーサー自体の生成方法までは、とても考えが及びません。

目的としては、後者です。だとすると、
やはり、O'Reillyの本が定番なんですかね。

入手して、若い頃のようにじっくり勉強してみたいと思います。 (^^;
ありがとうございました。


647 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 07:47:49 ]
>>646
O'ReillyってLALRの説明まではしてなかったような。
とりあえず使いたいならO'Reillyでいいけど、
yaccを使いこなしたいなら、LALRをきちんと勉強したほうがいい。
コンフリクトしたらシフト優先とか、
自分で変な書式の式を追加するときに、%left とかがどう動くのかとかは
LALRを知らないと理解できない。

648 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 08:05:26 ]
>>641
LALR(n)だと、
「シフトするトークンは1つだけど、n個先読みしてからシフトするか還元するか決める」
という考え方と
「最大n個シフトしてみて、ダメだったらシフトしなかったことにして還元する」
という考え方ができそう。

649 名前:デフォルトの名無しさん mailto:sage [2005/06/29(水) 12:40:16 ]
LALR(k): k-token LookAhead, Left-to-right parse, Rightmost-derivation,
LL(1):   Left-to-right and Left-most Parsing

650 名前:デフォルトの名無しさん mailto:sage [2005/07/01(金) 21:58:05 ]
>>647
で、貴方のお勧めは?


651 名前:デフォルトの名無しさん [2005/07/02(土) 21:06:34 ]
りん(ry




652 名前:デフォルトの名無しさん mailto:sage [2005/07/02(土) 21:52:02 ]
…………… く ず れ す ……………

653 名前:デフォルトの名無しさん [2005/07/04(月) 19:03:27 ]
>>652
恐らく lisper w


654 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 20:28:29 ]
↑間違いなくアンチLISPer w

655 名前:デフォルトの名無しさん mailto:sage [2005/07/04(月) 21:55:27 ]
…………… き ち が い ね ん ち ぁ く ち う 。 よ う ち ゅ う い ……………

656 名前:デフォルトの名無しさん [2005/07/05(火) 00:54:08 ]
>>655
お前が一番の粘着だw


657 名前:デフォルトの名無しさん [2005/07/06(水) 21:55:12 ]
VC++でlexファイル(lex.yy.c)をコンパイルすることはできますか?
Windows版のflexとbisonは見つけたんですが、よく考えたら
gccで-ll(flexなら-lfl)オプションを付けないとコンパイルすることができない・・・

そもそも、gccがlflで何を取り込んでいるのかがわからず。
windowsでflex&bisonを使っているひとがいれば、教えていただけないでしょうか。

658 名前:デフォルトの名無しさん mailto:sage [2005/07/06(水) 21:58:34 ]
>>657
lfl は付けなくても平気。中に入っているのは確か main 関数だけだった筈だから

659 名前:デフォルトの名無しさん [2005/07/07(木) 12:19:19 ]
>>657 >>658

yywrap()も入ってるよ。
以下の関数定義をどっかに入れれば大丈夫。

int yywrap(void)
{
return 1;
}


660 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 18:00:12 ]
PHPやPerlでは、変数を $var のように表します。
「$」と「var」のあいだにはスペースを入れることができません。
ということは、字句解析でトークンに分解するときに、「$」と「var」の2つに分解するのではなく、
「$var」というひとつのトークンとして認識しているのでしょうか。
(字句解析が「$」と「var」の2つに分解すると、間にスペースを入れられると思うから。)

「$var」を認識するのに、字句解析で1つのトークンとして認識するのがいいのか、それとも
2つに分解して構文解析時に「$var」であると認識するのがいいのか、迷ってます。

661 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 18:26:38 ]
>>660
1トークンでいいと思うが。2トークンにするメリットが特に見当たらんし。



662 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 20:03:51 ]
1トークンと考える方が不自然。
2トークンでしょう。(Perl/PHPのソース確認してないけど)

理由:
1. Perlの場合、変数名の前に異なるプリフィクスを使う場合がある。
   例)配列宣言    @array、 配列参照    $array[index]
     連想配列宣言 %assoc、連想配列参照 $assoc{key}
 左側(配列コンテキスト)と、右側(スカラーコンテキスト)を、異なるトークンと認識したら、
 変数名管理上、トークンからプリフィクス(@, %, $)を外した名前を切り出す必要があり、
 トークンの扱いとして不自然。

2.プリフィクス(@, %, $)と、識別子(var, array, assoc)の間に空白を許すか否かは、
 単なる構文定義上の問題であり、2トークンで空白を許さない定義が可能。

                                                   いじょ

663 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 20:23:45 ]
PHPに@や%ないじゃん

664 名前:660 mailto:sage [2005/07/09(土) 20:27:10 ]
>>661
ありがとうございます。そんな気はするんですが、いまいち確信がなくて。

>>662
1.の場合でも、プリフィックスと変数名は別々に渡しませんか?
今はトークンを取得する関数gettoken()と、文字列を取得する関数getvalue()を用意していて、次のようにしています。
入力   gettoken()     getvalue()
------------------------------
'foo'   STRING      "foo"
100   INTEGER     "100"
3.14   DOUBLE     "3.14"
x     NAME       "x"
$var   VAR_SCALAR  "var"
@var   VAR_ARRAY  "var"
%var   VAR_ASSOC  "var"

(最後の2つはつけくわえてみました。)
特に不自然ではないと思うのですが、どうでしょう。自信もないですが。

2. について、「2トークンで空白を許さない」ためのうまい方法がよくわかりません。
よろしければ教えてください。

665 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 20:34:41 ]
空白もトークンとして切り出せ

666 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 21:59:11 ]
>>665
空白をトークンにするぐらいなら、プリフィクス込みでトークン切り出して、
プリフィクスを取り除いたシンボル名でシンボルテーブル検索した方が
楽だと思うけどなぁ。

まぁ、どっちでも動けば構わんので、あとは趣味の問題だが。

667 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 22:27:32 ]
>>663
PHPにも
$hoge = 1;
$varname = "hoge";
echo $$varname; // => 1

とかあるけどな!


668 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 23:13:32 ]
Perlで$$は、ポインターの値参照だったっけ

669 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 23:38:16 ]
ああ、そうか。

Perl5 だと参照使えるから ${$foo->{'a'}} なんてのもアリなんだな。それだと
確かに字句解析レベルではプリフィクスとシンボル名を分けた方が無難だ。

670 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 00:40:01 ]
>>665
ええっー、空白をトークンとするんですか。
構文解析がかなり面倒になるんですけど。

>>669
「$」のあとに英数字が続けば変数名、それ以外なら「$」であるというのじゃだめでしょうか。

671 名前:デフォルトの名無しさん [2005/07/10(日) 00:44:50 ]
>>664
了解。1トークンで充分だと思う。

Perlの



672 名前:671 mailto:sage [2005/07/10(日) 00:46:02 ]
>>664
了解。1トークンで充分だと思う。

Perlの $って、Cのポインタ演算子みたいな扱いするから、誤解した。

673 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 00:47:00 ]
>>670
そもそも「Perl5 のようなスカラー・配列・ハッシュ、さらにその参照を任意に
組み合わせてデータ構造を作れるような言語にするのか?」ってトコロから
考える必要があるかと。

単に $foo, @foo, %foo, $$foo ぐらいで済む程度の文法なら 670 の案や
1トークン方式で良し。Perl5 フルコンパチにしたければ変数関係だけで
{}, [] の のネストが発生するので、ネストは正規言語では処理できない
ことを考えると、ある程度は構文解析に逃がした方が楽そう。

674 名前:デフォルトの名無しさん [2005/07/10(日) 21:13:41 ]
いずれにせよ、スレ違い
Li(ry)


675 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 21:17:02 ]
LISPなら字句解析も構文解析も要らないのに。

676 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 21:24:23 ]
すまん。素でわかんないんだが、「LISP は字句解析が要らない」ってのは
    1.0
ってのが出てきたとき、それがシンボルか数値かリストかどうかを判断しなくても良いってことなのか?

あと、「LISP は構文解析が要らない」ってのは、カッコの対応が取れて無くても気にしないってことなのか?

677 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 21:27:15 ]
>>675-676 ネタ決定

678 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 21:56:58 ]
字句解析がいらない
→入力をreadするとS式が出てくる

構文解析がいらない
→S式をevalすると結果が出てくる

679 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:00:33 ]
それは要らないんじゃなくて、組み込みになってるだけじゃないの
自分で一から作るなら、どっちも必要でしょ

680 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:15:01 ]
自分で一から作るつもりならLISP必要ないよ

681 名前:676 mailto:sage [2005/07/10(日) 22:25:03 ]
なんかよく分かった。そりゃ必要ないよな LISP 側で全部用意してもらえてるんだし



682 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:32:57 ]
あえてLISPを使う意味は中間形式としてS式で処理できるからじゃないかと
S式に優位性を感じないなら必要ない

683 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:34:15 ]
昔prologスレで見た流れだ。
prologインタプリタをprologで書ける人とCで書ける人ではどちらが優れているか?

684 名前:デフォルトの名無しさん mailto:sage [2005/07/10(日) 22:44:38 ]
>>678
つまんねぇネタ。

685 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 01:56:10 ]
ネタに見えるのか。

686 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 03:28:22 ]
>>685
お前が言わんと欲する所が、あまりに陳腐過ぎて、
細かい説明するのが面倒つうこと。

687 名前:デフォルトの名無しさん [2005/07/11(月) 06:30:49 ]
Lisper は他でやってくれ


688 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 11:37:21 ]
そのLIPSぐらいしか話題ないってことなんじゃないの。

689 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 16:37:20 ]
>>688
燃料投下(>>674)までの流れを見た上で言ってるのか?

690 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 18:35:40 ]
燃料に見えるのか。

691 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 18:55:26 ]
688はキヤノン社員



692 名前:デフォルトの名無しさん [2005/07/11(月) 19:22:03 ]
ここはLisp擦れ


693 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 19:49:05 ]
内部イテレータのある言語を設計してみたいと思ってるんですが、
Ruby以外に内部イテレータを持ってる言語って何がありますか?
Rubyの内部イテレータではなく、一般に内部イテレータとは
匿名関数と本質的にどの点で違うものなんでしょうか。

694 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 20:15:01 ]
「Rubyの内部イテレータ」について説明してくれたら答えられるかも。

695 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 21:29:03 ]
>>693
>Ruby以外に内部イテレータを持ってる言語って何がありますか?
このスレでさんざん出てきてるLISPというやヴぁい言語のインライン関数が元ネタ。
Rubyで内部イテレータとわざわざ限定してるのは対象データの
コンテナを抽象化して取り出すことを目的にしてるからじゃないかと。

>一般に内部イテレータとは匿名関数と本質的にどの点で違うものなんでしょうか。
質問の意図が不明だけど、まず役割が違うでしょ。
内部イテレータに匿名関数(ブロック)を渡してぶん回すんだし。
匿名関数側は取り出す要素の構造以外知らなくていいし、
内部イテレータはぶん回すコンテナの構造以外知らなくていい。
外部イテレータとの違いはここにある。


696 名前:デフォルトの名無しさん [2005/07/11(月) 22:43:27 ]
つまり、Ruby>Lisp ってことですか?


697 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 22:54:58 ]
mapとどう違うんだ?

698 名前:デフォルトの名無しさん mailto:sage [2005/07/11(月) 23:07:43 ]
mapが何か関係あるのか?

699 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 00:25:21 ]
ここはLispとRubyの話は禁止
どうしてもやりたいのなら別スレ立ててそっちでやってください

700 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 00:25:38 ]
>>693
Smalltalkにはブロックという概念があり、これがちょうどRubyの内部イテレータ(ブロック)に相当します。
Lispのmapとも似ていますが、どちらかというとSmalltalkのほうに似ているんじゃないでしょうか。
Smalltalkとの違いは、Rubyでは基本的にメソッド1つにつき1つのブロックしか渡せませんが、Smalltalkは複数のブロックを渡すことができることです。

なおRubyでは、昔は本当にイテレータとしてのみ使われていましたが、今は他の用途にもよく使われるため、現在ではブロックと呼ばれることが多いようです。
また「内部イテレータ」というのは使われ方の名称であって、機能としては「クロージャ」というのがプログラミング言語一般の用語です。
(「クロージャ」という機能を「内部イテレータ」として使うということ)

701 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 01:06:35 ]
実装的にはイテレータとしてのみブロックを渡す場合は、
真面目にクロージャを作る場合よりも省略できる部分が、
結構あるんだよね。
あと、内部イテレータと外部イテレータにはそれぞれ、
長所と短所がある。簡便なのは内部イテレータだが、
複雑なイテレーションの場合は外部イテレータのほう
が良い場合もある。
個人的なオススメはクロージャが扱えるオブジェクト
指向言語なら外部イテレータを基本に設計して、内部
イテレータはライブラリで用意する、というやり方。




702 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 02:56:11 ]
>実装的にはイテレータとしてのみブロックを渡す場合は、
>真面目にクロージャを作る場合よりも省略できる部分が、
>結構あるんだよね。

詳細きぼんぬ

703 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 03:01:01 ]
>>702
環境をスタックからヒープに移すタイミングの問題。


704 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 04:07:52 ]
特殊用途向けに制限掛かったクロージャ?

705 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 07:33:41 ]
>>693
構文に関して言えば、
内部イテレータに特化した構文(だったものも含む)を持ってる言語は
俺の知ってる限りでRubyとSmalltalkだけかな。
他になんかあったっけ?

706 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 09:26:54 ]
>>705
SmalltalkのCollection関係の
 aCollection do:[each: 一件ごとの処理].
とかは言語組込みの構文じゃなくてクラスライブラリの命名ルールだよ。


707 名前:デフォルトの名無しさん [2005/07/12(火) 21:43:33 ]
つまり Ruby が最高言語ということでファイナルアンサ?


708 名前:デフォルトの名無しさん mailto:sage [2005/07/12(火) 21:54:55 ]
ここの連中はRubyとLISPの名前を出せばほいほい釣れるよ。

709 名前:デフォルトの名無しさん mailto:sage [2005/07/13(水) 08:56:12 ]
あたしのために喧嘩なんてしないでッ

710 名前:デフォルトの名無しさん mailto:sage [2005/07/14(木) 20:44:00 ]
                         .,Å
                      .r-‐i'''''''''''i''''‐-、
                    o| o! .o  i o !o
                    .|\__|`‐´`‐/|__/|
                     |_, ─''''''''''''─ ,、 /
                    、-'      u   -、  
                  / U          0 \
                 /          /     i
                 |   ● ,,.   .,, ●      | 
      __   .      !    (_人__)        ノ
  /´ ̄       `!.      丶_   u        U ノ
  |  `にこ匸'_ノ .       '-、、,,,,,,_______,,,,,,、、-'
  ノ u  {                 _.. -―| :{   ,/ /   \
. / l   | __  / ̄ ̄`>'´   ノ'    ´ {、    \
/ |/     {'´    `ヽ. " ̄\ U `ヽ.    __,,.. -‐丶 u  ヽ
| / ヾ、..  }      u' 〉、    }    `ー''´  /´ ̄ `ヽ '" ̄\
! :}  )「` ノ、     ノ l\"´_,,ニ=-― <´  ヽ{  ノ(   `、  |
l   、_,/j `ー一''"   },  ノ ,  '''''""  \   ヽ ⌒ヾ      v  |
ヽ   _         /   } {. { l ┌n‐く  ヽ/ ``\        ノ
  `¨´    `¨¨¨¨´ ̄`{ 0  `'^┴'ー┘|ヾ    }、 u'   `  --‐r'′ キングヤッタス!!



711 名前:デフォルトの名無しさん [2005/07/14(木) 22:08:03 ]
>>709
リンゴタン?




712 名前:デフォルトの名無しさん [2005/07/15(金) 22:18:25 ]

LALR age


713 名前:デフォルトの名無しさん [2005/07/16(土) 18:07:28 ]
現在確認されている厨

・RUBY厨
・LISP厨
・りんご厨
・LALR厨



714 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 18:13:11 ]
上から3番目のは、昔かたぎのFlash職人(元Macromedia Director職人)か?

715 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 18:22:18 ]
>>713
LALRもダメでつか

716 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 19:13:12 ]
りんごってVIPのことだろ

717 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 21:10:41 ]
ここで暴れてる荒らしは、荒らしな上にアンチLISPにアンチRubyに
アンチLALRか。
救いようがねぇなw


718 名前:デフォルトの名無しさん mailto:sage [2005/07/16(土) 21:13:59 ]
志村坂上

719 名前:デフォルトの名無しさん [2005/07/18(月) 15:40:14 ]
すいません超初心者なんで的外れなことを覚悟で質問します。

bison/flexではいたコードってVCでコンパイルできますか??

720 名前:デフォルトの名無しさん mailto:sage [2005/07/18(月) 15:50:45 ]
>>719
やってみればいいじゃん

721 名前:デフォルトの名無しさん mailto:sage [2005/07/18(月) 16:57:29 ]
ってゆーかRUBY最強



722 名前:デフォルトの名無しさん mailto:sage [2005/07/18(月) 17:30:55 ]
>>708

723 名前:659 [2005/07/22(金) 02:50:23 ]
>>719

>>657-659 読め。

bison/flexで吐いたコードをVC++でコンパイルした経験は、俺はある。


724 名前:723 [2005/07/23(土) 23:01:08 ]
>>723
ありがとうございます。よく読んでいませんでした。

とりあえず原田賢一著 コンパイラ構成法という本を購入しました。
これから勉強します。

725 名前:719 mailto:sage [2005/07/23(土) 23:01:49 ]
すいません719です

726 名前:デフォルトの名無しさん mailto:sage [2005/07/25(月) 02:13:48 ]
LexやYACC等のツールを使わないとコンパイラ作れない奴なんざ
雑魚だろマジで。


727 名前:デフォルトの名無しさん mailto:sage [2005/07/25(月) 02:15:53 ]
>>726
字句解析とか構文解析とか、単純なんだから別に自動生成でいいやん。
ていうか、こういうツールだって、どういうことやってるのか理解できない人には使えないと思うよ。

728 名前:デフォルトの名無しさん mailto:sage [2005/07/25(月) 14:06:30 ]
>>726
rubyの作者を雑魚あつかいですか?

729 名前:デフォルトの名無しさん mailto:sage [2005/07/25(月) 15:05:00 ]
>>726のようなことを言う奴はコンパイラのバックエンドをろくに書けない奴に多い。
たぶんフロントエンドだけがやっとで挫折したんだろう。


730 名前:デフォルトの名無しさん mailto:sage [2005/07/26(火) 10:08:34 ]
LexやYACC等のツールを使わないとコンパイラ作れない奴が雑魚なら、
LexやYACC等のツールを使わずにコンパイラを作る奴はフジツボ。
LexやYACC等のツールを使えない奴はプランクトン。

731 名前:デフォルトの名無しさん mailto:sage [2005/07/26(火) 12:20:11 ]
ここは酸っぱい葡萄が多いインターネットですね。



732 名前:デフォルトの名無しさん mailto:sage [2005/07/26(火) 20:48:40 ]
イソップ童話キタ━━━━━(゚∀゚)━━━━━ !!!!

733 名前:デフォルトの名無しさん mailto:sage [2005/07/26(火) 21:15:44 ]
言語鍛冶が覆面で議論するスレはここですか?

734 名前:デフォルトの名無しさん [2005/07/29(金) 11:04:33 ]
JavaScriptのコンパイラコンパイラが欲しいんだけれど、調べた限りではないみたいなので、
これを機会に時間のあるときに作ってみようと思ったのだけれど、
コンパイラコンパイラ実装の参考文献で良書はありますか?英文和文問いません。

735 名前:デフォルトの名無しさん mailto:sage [2005/07/29(金) 22:56:38 ]
ネタとしてスルー。

736 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 01:54:03 ]
JavaScriptでかかれたコンパイラコンパイラ?(まさか〜)

でも文脈からだとJavaScriptの構文を理解するbisonコードくさいんだけどさ。


737 名前:デフォルトの名無しさん [2005/07/30(土) 02:03:01 ]
コンパイラコンパイラが生成するコードがJavaScriptのものなんじゃないの?

738 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 02:04:06 ]
Mozillaのソースとか・・・・・・・・

739 名前:734 mailto:sage [2005/07/30(土) 02:13:44 ]
>>737
そう、そういう意味です。
JavaScriptで出来たコンパイラコンパイラなんてあれば面白いけれど…

740 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 06:12:34 ]
>>734>>734


741 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 06:52:32 ]
ドライバだけJavaScriptなら簡単なんじゃん?



742 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 07:54:28 ]
CからJavaScriptに変換するトランスレーター作れよ

743 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 17:52:12 ]
>>734
LALRパーサージェネレータでよければ、kmyaccでサポートしてます。
www005.upp.so-net.ne.jp/kmori/kmyacc/index.html

こうした方がいいという意見も歓迎。

JavaScriptで書いたデモの例
www005.upp.so-net.ne.jp/kmori/kmyacc/calcdemo.html


744 名前:734 mailto:sage [2005/07/30(土) 19:50:44 ]
>>742
それは良いアイデアですね。
JavaScriptの言語的機能は制限されるのが残念ですが、
とにかく使いたいだけならそれは良さそうです。

>>743
おお、これはそのまま使えますね!ありがとうございます。
早速使ってみます。助かりました。

745 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 21:10:39 ]
>>744
使うにあたってはプロトタイプを手直しした方がいいでしょうね。

ところで、JavaScriptでは入力を得る手段が限られていると思うのですが、
どんな対象をパースするのか、さしつかえなければ教えてもらえませんか?


746 名前:734 mailto:sage [2005/07/30(土) 23:40:21 ]
>>745
助言ありがとうございます。
JavaScript ObfuscatorをJavaScriptで書こうかと思っていました。

747 名前:デフォルトの名無しさん mailto:sage [2005/07/30(土) 23:57:26 ]
>>746
ようするにスクリプトを読まれたく無いと。
ただそれだけ?



748 名前:734 mailto:sage [2005/07/31(日) 00:11:31 ]
>>747
そういうわけじゃないですよ。どちらかといえば趣味です。

その時は手動で構文解析を作りましたけれど、
チェスの掲示板に棋譜を読み込むためにPGNファイルのフォーマットをパースするなど、
JavaScriptでコンパイラコンパイラが作れればいいなーと思うことは稀にありました。

749 名前:デフォルトの名無しさん [2005/08/03(水) 12:01:25 ]
ちょっと趣旨が変わってしまいますが…
状態遷移を扱うのに適するエンジンってありませんか?

やりたいことは、入力を受け付けて、新しい状態を出力するモジュールです。
その状態遷移ルールは何らかの自作エディタでペトリネットやUMLの
アクティビティ図のように記述しておきます。

単にゴリ押しで、定義データに各遷移ルールを記述しておき、制御モジュールで
パターンマッチングで次の状態を探すだけでも可能ですが、トークンのJoinとか
考えると、いろいろ内部情報を保持する必要があります。

普通のスクリプトやゲームのシナリオなんか参考になる気もしますが、今回の場合、
有限状態機械に特化したもので十分です。
また、状態遷移図の定義の変更は頻繁に行われます。

もし、美しいアーキテクチャがあるなら、ゴリ押しのエンジンを作り直したいと
思っているのですが、オブジェクト指向で機械の内部状態とか定義方式を美しく
表現している設計って、どこかにないでしょうか?

750 名前:デフォルトの名無しさん mailto:sage [2005/08/03(水) 13:04:20 ]
>>749
>オブジェクト指向で
限定しない方が良いよ。OO に限定するとステートパターンしか出てこないから

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



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

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

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

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

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

754 名前:デフォルトの名無しさん mailto:sage [2005/08/03(水) 22:40:13 ]
>>753
まさか…oさん?

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

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

757 名前:デフォルトの名無しさん [2005/08/04(木) 16:54:55 ]
>>754 いいえ違います。

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

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

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


758 名前:デフォルトの名無しさん mailto:sage [2005/08/05(金) 23:48:44 ]
boost::fsm...

759 名前:デフォルトの名無しさん mailto:sage [2005/08/06(土) 22:01:29 ]
>>750
StatePatternで何か不都合があるのか?

760 名前:デフォルトの名無しさん [2005/08/07(日) 00:27:31 ]
www.eventhelix.com/RealtimeMantra/HierarchicalStateMachine.htm

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

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



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

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

764 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 00:42:56 ]
やっぱり脱出方向だけにしてsetjmp/longjmpぐらいしかないか……

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

765 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 03:04:24 ]
>>764
SchemeをCPSでCにコンパイルする方式。
home.pipeline.com/~hbaker1/CheneyMTA.html

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


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

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


767 名前:デフォルトの名無しさん mailto:sage [2005/08/19(金) 23:53:09 ]
馬鹿の考え休むに似たり

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

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


770 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 01:57:23 ]
コメントが//なら
|〜|にする。

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




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

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

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

773 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 12:57:10 ]
orz〜orz
にしようよ

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

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


775 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 15:41:01 ]
>>774
そっか、そういうのがあるのかぁ。

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

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

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

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

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

778 名前:デフォルトの名無しさん mailto:sage [2005/08/20(土) 16:31:39 ]
コペる21

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

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

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

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

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




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

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

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


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


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

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

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

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



789 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 12:04:31 ]
あるかどうかじゃなくて公開されているかどうかでは?


790 名前:デフォルトの名無しさん mailto:sage [2005/08/25(木) 23:53:57 ]
>>789
リンク先見てから言ってくれ。




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






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

793 名前:デフォルトの名無しさん mailto:sage [2005/08/26(金) 08:19:29 ]
>>791
いたれりつくせりを要求してんな

794 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 22:12:59 ]
おまいら日経ソフトウェアがきましたよ
software.nikkeibp.co.jp/software/backno/2005/0510indexc.html


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

オワタw

796 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 22:50:42 ]
JavaでLISPなんて泥臭い部分全部端折ってるじゃん

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

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

799 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 01:35:23 ]
>>798
世の中のコンパイラ屋さんが泣いています

800 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 12:22:04 ]
lispでtestって無茶簡単なような

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



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


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

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


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

最近の処理系では、
dmoz.org/Computers/Programming/Languages/Lisp/Scheme/Implementations/
なかんじなのだろうか。いくつかコンパイラもあるようだから、ソース読んでみるかね。



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

806 名前:デフォルトの名無しさん mailto:sage [2005/09/03(土) 15:57:02 ]
>>805
そこでAppel先生ですよ

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

リンゴタソ、ハァハァ


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

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

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



811 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 13:20:17 ]
>>808
だから807は広げたくないんだろw



812 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 18:47:46 ]
807=811
コテハン名乗ってくれ
透明化するから

813 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 19:11:24 ]
つNG word: w

814 名前:デフォルトの名無しさん [2005/09/04(日) 19:41:39 ]
ついでに、LALRも金句らすい


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

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

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

817 名前:デフォルトの名無しさん mailto:sage [2005/09/04(日) 21:29:56 ]
つ[pc8.2ch.net/test/read.cgi/tech/1119158274/l50]

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

818 名前:デフォルトの名無しさん [2005/09/04(日) 21:56:59 ]
つりんごタソ

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

820 名前:デフォルトの名無しさん [2005/09/08(木) 20:45:28 ]
アフォ?
なんで、llからlalrにかえんのw


821 名前:デフォルトの名無しさん mailto:sage [2005/09/08(木) 20:58:17 ]
出来ないことを出来るようにするため



822 名前:デフォルトの名無しさん mailto:sage [2005/09/09(金) 01:41:01 ]
>>820
馬鹿かお前?

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

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

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

826 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 00:27:02 ]
つーか普通にLLだと左再帰の問題があるだろ?

827 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 00:34:45 ]
粘着にレスするのいいかげんやめようよ……

828 名前:デフォルトの名無しさん mailto:sage [2005/09/10(土) 08:59:05 ]
そうだな。以降>>827は放置で。

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

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


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



832 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/10(土) 22:24:33 ]
>>831
何その間抜け時空

833 名前:名無しさん@そうだ選挙に行こう mailto:sage [2005/09/11(日) 01:05:32 ]
よーしスーパーササニシキだ

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

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

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

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

836 名前:デフォルトの名無しさん [2005/09/12(月) 22:56:28 ]
>>835
天才w

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


837 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 23:03:10 ]
またLISPを目の敵にした馬鹿出現ですか?

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

839 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 23:05:48 ]
NGワード:w

840 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 23:07:29 ]
毎日いるみたいだな
LISP下手に導入して失業したか

841 名前:デフォルトの名無しさん mailto:sage [2005/09/12(月) 23:08:59 ]
834ですが、誓って836ではありません。

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



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

843 名前:デフォルトの名無しさん [2005/09/13(火) 16:17:21 ]
つ834==836


844 名前:デフォルトの名無しさん mailto:sage [2005/09/15(木) 16:32:08 ]
ttp://mono.kmc.gr.jp/~oxy/hiki.cgi?rtype


845 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 00:44:06 ]
↑ブラクラ

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

847 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 02:16:36 ]
URLだけ貼り付けるのも悪質

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



849 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 11:38:40 ]
なにこの小学生レベルの居直りw

850 名前:デフォルトの名無しさん mailto:sage [2005/09/16(金) 12:10:03 ]
なんだとコラ
小学生に失礼だ!

851 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 00:21:04 ]
↑クソスレ



852 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 00:23:50 ]
はいはいろりすろりす

853 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 01:24:13 ]
←ブラクラ

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


855 名前:デフォルトの名無しさん [2005/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 名前:デフォルトの名無しさん [2005/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 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 03:48:09 ]
コンパイル後にmvで移動させちゃえば?
つか、なんでここで聞く?

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


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



860 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 15:03:29 ]
池沼がわいてるな

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

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




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

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

863 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 23:35:44 ]
グルーバルって寝ぼけているなorz
グローバルです。

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

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

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

869 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 14:25:40 ]
>>868
手当たり次第のスレで聞きまくってるな

870 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 14:31:17 ]
>>869
いや、初めてここで聞いてるんだが

871 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 14:37:35 ]
>>868
gcc



872 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 15:35:14 ]
gccはいいサンプルですね。

873 名前:デフォルトの名無しさん mailto:sage [2005/09/18(日) 16:00:28 ]
gcc 肥大化しすぎて わけわかめ

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

875 名前:865 mailto:sage [2005/09/19(月) 00:12:52 ]
>>867
確かにそっちの方がずっと効率いいですね。
今度からそうしますわ

876 名前:デフォルトの名無しさん mailto:sage [2005/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 名前:デフォルトの名無しさん [2005/09/29(木) 01:00:47 ]
並列化コンパイラを作ることになりました。
コンパイラについては全くわかりません。
>>5にあるような本を読んで勉強しようと思います。
どのほんがおすすめですか?

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

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

880 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 02:27:40 ]
>>878
並列だと院か卒論だと思うが卒論にしては遅いので院か?


881 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 08:47:57 ]
院にもなって>>877はありえないと思うがどうか



882 名前:877 [2005/09/29(木) 12:38:48 ]
卒論です。

883 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 12:48:49 ]
こっそりで良いから、どこの大学のどの研究室か言ってみ?

884 名前:sage [2005/09/29(木) 13:59:47 ]
いえません

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


886 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 16:17:49 ]
もう間に合わないだろう。
そっとしておいてやれ。

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

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

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

889 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 16:48:38 ]
>>888
さすがに作るだけじゃなくて、なにかあるんじゃない?

890 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 19:47:58 ]
卒論という事以上のなにかが?

891 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 19:57:04 ]
おまいら学部生の卒論に夢持ちすぎ…



892 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 00:34:54 ]
血や肉となりゃいいんでないの?

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

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

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

895 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 01:40:58 ]
>>893
とりあえず>>1-6あたりの事が知識として持っているか

896 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 06:04:12 ]
>>893
まずは学力上げて良い大学いけるようにしろ。


897 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 09:08:11 ]
むしろコンパイラになりたいらしい

898 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 09:12:20 ]
>>893
あんた素人じゃないだろw

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

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

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



902 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 17:26:58 ]
真実が混じってそうでマジコワスww

903 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 17:35:02 ]
ちなみにわたくしは茶色の長髪ですが、包茎です。

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

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

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

905 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 01:00:06 ]
>>904
なぜここでその質問したのか聞かせてもらおうか

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

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

908 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 01:21:27 ]
クッキー?・・・・・・要は使えないってことですか・・・

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

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

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



912 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 09:54:07 ]
つか板違いだなWebProg板池

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

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

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

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

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

916 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 17:50:34 ]
>>915
まあその中でも君のレスが一番偉そうだけどな

917 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 18:08:11 ]
>>916
よくある質問者の逆切れだよ。スルーしる

918 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 19:29:34 ]
>>917
JSPスレでも馬鹿さらしてた池沼だった。


919 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 19:35:37 ]
自演乙w

920 名前:う゛ぉいど mailto:sage [2005/10/02(日) 22:21:38 ]
と言うことにしたいのですね。


921 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 22:23:45 ]
うん。



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

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

923 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 08:49:48 ]
>>922
Yes。
目次はこんな感じ。
www.k.hosei.ac.jp/~nakata/aCompiler/CompilerIndex.html

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

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


926 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 22:54:19 ]
>>924
つ[RFC 2234]

927 名前:う゛ぉいど mailto:sage [2005/10/05(水) 23:51:51 ]
>>926
だがおのおの拡張したBNFはそれなりに便利だと言う罠があるのであるよ。

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


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


929 名前:sage [2005/10/06(木) 00:35:34 ]
>>922
次スレでは、テンプレ変更した方がいいな。


930 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 00:40:10 ]
相談室ということで、相談させてください。

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


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




932 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 01:38:02 ]
>>930
君にはこっちの方が役に立つかも

pc8.2ch.net/test/read.cgi/tech/1111363360/

933 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 10:24:28 ]
>>876
リンゴたんに中田氏 ハァハァ

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

935 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 13:57:08 ]
>>934
pc7.2ch.net/pcqa/

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

937 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 21:09:57 ]
ありません

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

939 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 21:22:12 ]
がんばれ。いいだしっぺ。

940 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 22:15:53 ]
大物はこんな場所に(ry

941 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 22:34:01 ]
>>936
スクリプトでよければこの辺とかどうよ?
ttp://kmaebashi.com/



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


943 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 23:04:16 ]
りんご畑

944 名前:デフォルトの名無しさん mailto:sage [2005/10/07(金) 04:41:57 ]
ありません

945 名前:デフォルトの名無しさん [2005/10/07(金) 18:10:18 ]
>>940
ワロタw


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


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

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


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

古い言語=抵抗勢力

みたいなもの。


950 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 20:35:27 ]
Lingoは古い言語だろ。

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




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

953 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 22:24:29 ]
limbo じゃなくて?

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


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

956 名前:デフォルトの名無しさん mailto:sage [2005/10/09(日) 20:26:53 ]
>>955
TNX ビンボーでなくリンボーか、しかもos
も違ってた、

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


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

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


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

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

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

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

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

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


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

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





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

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

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

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


965 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 22:21:23 ]
りんごたん、りんごたんてよく出てくるけど、なんのこと?

966 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 22:34:37 ]
>>965
ttp://apple.jpn.ch/

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


968 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 23:34:28 ]
あーつまんね

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


970 名前:デフォルトの名無しさん mailto:sage [2005/10/12(水) 23:58:31 ]
中田氏とりんごの話したい奴は別スレ立ててくれ
うざい

971 名前:デフォルトの名無しさん mailto:sage [2005/10/13(木) 00:42:33 ]
>>967
それか。俺もそれ買ったわw



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


973 名前:972 mailto:sage [2005/10/13(木) 01:49:53 ]
おいてあたらその本屋尊敬すると思う(というか専門店かと瞬間思うに違いない


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

975 名前:デフォルトの名無しさん mailto:sage [2005/10/13(木) 15:14:54 ]
>>974
宿題は!
自分で解こうね?

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


977 名前:デフォルトの名無しさん mailto:sage [2005/10/13(木) 21:10:46 ]
Rubyだと、中田本とか約にたたないの?


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

979 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 08:15:50 ]
じじい避けには丁度いいw


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


981 名前:デフォルトの名無しさん mailto:sage [2005/10/14(金) 19:59:36 ]
980を超えたので、新スレッドを立てました。

「コンパイラ・スクリプトエンジン」相談室7
pc8.2ch.net/test/read.cgi/tech/1129287390/

です。



982 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 00:14:33 ]
まあ、その、なんだ
埋めようか

983 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 01:51:29 ]
埋め

984 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 02:15:56 ]
梅は〜、咲いたか〜、桜ぁ〜はまだかいな。


985 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 02:36:33 ]
無駄に埋めるな
980超えれば時間がくれば自動的に落ちる

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

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

988 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 08:15:17 ]
>>987
どこ?それ。

989 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 09:42:09 ]
うめ

990 名前:デフォルトの名無しさん [2005/10/15(土) 18:38:57 ]
りんご


991 名前:デフォルトの名無しさん [2005/10/15(土) 19:04:44 ]
1000ならビルゲイツの財産は俺のもの



992 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 19:51:06 ]
たけ

993 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 20:05:11 ]
じま

994 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 21:53:00 ]
かん

995 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 22:13:07 ]
チャンカン

996 名前:デフォルトの名無しさん mailto:sage [2005/10/15(土) 22:18:33 ]
次の人>>986に答えて


997 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 01:17:30 ]
おまいらの貴重な人生を無駄にしている

998 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 01:32:43 ]
てst

999 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 01:33:04 ]
てst

1000 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 01:33:58 ]


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








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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