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


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

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



1 名前:デフォルトの名無しさん [03/11/29 15:59]
yaccやlexの使い方やら言語仕様やらの話題。

前スレ
1 pc.2ch.net/tech/kako/981/981672957.html
2 pc2.2ch.net/test/read.cgi/tech/1021136715/ (dat落ち)

関連リンクは多分 >>2-8 あたり

52 名前:デフォルトの名無しさん mailto:sage [03/12/12 23:48]
LISPはいきなり構文木が手に入る

53 名前:デフォルトの名無しさん mailto:sage [03/12/13 01:06]
>>49
コンパイラとインタプリタを備えた C の処理系なんてあったっけ?
大抵どっちかだから、共通している部分が多い事の事例にならないような。

こんな事が出来たら嬉しい人も多いだろうに。

#! /bin/env gcc <-- shbang で呼び出せる
//load Xlib <-- ライブラリのロードはコメント文で ==> コンパイラに通す時も透過的
#include <X11/Xlib.h>

int main() {

// 以下略
// 以上妄想

54 名前:デフォルトの名無しさん mailto:sage [03/12/13 01:19]
>コンパイラとインタプリタを備えた C の処理系なんてあったっけ?
作らない(作っても意味無い)だけだろ

55 名前:デフォルトの名無しさん mailto:sage [03/12/13 01:20]
>>54
だから、共通している部分が多い事の事例にならないだろ。


56 名前:デフォルトの名無しさん mailto:sage [03/12/13 01:24]
>>55
同様な構文を持つ言語のインタプリタとコンパイラで
構文解析が共通化できない理由は何ですか?

57 名前:デフォルトの名無しさん mailto:sage [03/12/13 01:27]
>>56
そこには異論は無いです。細かい突っ込みスマソ。

58 名前:デフォルトの名無しさん mailto:sage [03/12/13 02:56]
Dylan や OCAML や Haskell はインタプリタとコンパイラの両方持ってるね。
Common Lisp もだけど。

59 名前:デフォルトの名無しさん mailto:sage [03/12/13 04:18]
>>58
源流がLISPだからね。

60 名前:デフォルトの名無しさん mailto:sage [03/12/13 08:41]
MLの源流はlispでねーぞ



61 名前:デフォルトの名無しさん mailto:sage [03/12/13 09:29]
っつーかDylanだけじゃん


62 名前:デフォルトの名無しさん mailto:sage [03/12/13 10:38]
www.levenez.com/lang/

63 名前:デフォルトの名無しさん mailto:sage [03/12/13 11:32]
>>62
SchemeがAlgolから受け継いでるのって何?




64 名前:デフォルトの名無しさん mailto:sage [03/12/13 18:30]
>>63
lexical scopeじゃないかな?


65 名前:デフォルトの名無しさん [03/12/13 19:22]
構文解析器は、理論上はインタプリターやコンパイラに無関係に
整理可能であるが、現実問題としては、そうはならないということだろう。


66 名前:デフォルトの名無しさん [03/12/14 23:36]
きょう、rubyのソース開設本みつけたけど、
高いなぁ〜と感じた。

(2000円までだったら、速攻でかったんだけど)

とりあえず、公開待ちます。
貧乏人で、スマソ


67 名前:デフォルトの名無しさん mailto:sage [03/12/14 23:57]
>>66
2000 円で買えるコンピューター書籍はそれほどないと思うが?
なにが売ってても買わないの?

68 名前:デフォルトの名無しさん [03/12/15 00:03]
bison本やlex本(GNUプレス)は
みんな安いよw


69 名前:デフォルトの名無しさん mailto:sage [03/12/15 00:15]
これ?
www.amazon.co.jp/exec/obidos/ASIN/4844317210/
良さそうな本じゃん。Perlでこういう本ってあったっけ?

70 名前:デフォルトの名無しさん mailto:sage [03/12/15 01:17]
>>69
Perlはソースコードが多すぎる。



71 名前:デフォルトの名無しさん mailto:sage [03/12/15 07:18]
>>68
それってinfoで全文ローカルで読めるやつのこと?

72 名前:68 [03/12/15 21:36]
>>71
infoは使ってないのでよくわからんが、そうかもしれない。
実はもれも、本文はどこかで(英語???)読んだ記憶があった。

でも、手元に書籍であると、またちがうんだな、これが!


73 名前:デフォルトの名無しさん mailto:sage [03/12/15 22:10]
>>72
たしか、利益の一部は FSF に寄付されるんじゃなかったかな。

ところで、参考文献としてこの本は既出?
Icon 自体が面白い言語なので読んで損はないと思う。無料だし。

The Implemetation of the Icon Programming Language
www.cs.arizona.edu/icon/ibsale.htm

74 名前:デフォルトの名無しさん [03/12/15 22:49]
yacc/lex使ってSQLパーサ作りたいんだけど、挑戦したことあるひといますか?

75 名前:デフォルトの名無しさん mailto:sage [03/12/15 23:37]
lex & yacc のサンプルがそのままSQLパーサだったような記憶。


76 名前:デフォルトの名無しさん mailto:sage [03/12/15 23:41]
>>75
そうそうあったあった。どこかにサンプルコード落ちてたよ。
英語版だけど


77 名前:デフォルトの名無しさん mailto:sage [03/12/15 23:42]
>>76
コードが英語なのは普通じゃ…。

78 名前:デフォルトの名無しさん [03/12/15 23:47]
>>73
flexは読みやすかったけど、bisonは読みにくかった。
やはり、難しいからですかね???


79 名前:デフォルトの名無しさん [03/12/15 23:58]

すいません、ふと疑問に思ったんですけど、
正直、このスレってとっても

(良く言えば)→高度&専門的
(悪く言えば)→難しいばっかりで、地味&マイナー

な領域ですよね?

みなさん、本職は何をされているんでしょうか?
やはり、プロのコンパイラorスクリプト屋さんなんでしょうか?


80 名前:デフォルトの名無しさん mailto:sage [03/12/16 13:54]
>>79
プロのコンパイラ屋(コンパイラだけ作っててメシが喰える人)ってかなり少な
いと思う。(OS屋はもっと少ないけど。)

他の仕事でミニ言語が必要になったので書いてるとか、大学で論文書くために
作ったとか、あるいは趣味でやってる人がほとんどじゃないでしょうか。

僕はたまたま今仕事でコンパイラを書いていますが、100%のコンパイラ屋では
ありません。






81 名前:デフォルトの名無しさん mailto:sage [03/12/16 16:47]
>>79
ゲーム屋も多いと思う。


82 名前:デフォルトの名無しさん mailto:sage [03/12/16 18:02]
出来合いのエンジンを利用する場合でも、実装を知っていないと
どうにもならんからね。

83 名前:デフォルトの名無しさん mailto:sage [03/12/16 21:39]
>>82
ネタw


84 名前:74 [03/12/16 22:42]
>>75、76 そのサンプルってどこにありますか?
もし知っていたら教えてください。

85 名前:デフォルトの名無しさん mailto:sage [03/12/16 22:49]
オライリーの yacc/lex 本。

86 名前:74 [03/12/16 22:54]
おおおー。なるほど。早速買ってみようと思います。


87 名前:74 [03/12/16 22:57]
ところでネットで見つけようとしても見つからないですね。
PostgreSQLとかのソースを見ればいいのかしらん。

88 名前:85 mailto:sage [03/12/16 23:09]
>>87
だからオライリーのサイトにあるよ。
examples.oreilly.com/lex/

89 名前:74 [03/12/16 23:31]
>>85
きゃーありがとうございます。


90 名前:デフォルトの名無しさん [03/12/17 22:16]
>>80
おお〜、すごい!
本職&プロですか!

ちなみに、どんなコンパイラ書いてるんですか?
差し支えない程度で結構ですので、




91 名前:デフォルトの名無しさん mailto:sage [03/12/17 23:58]
俺は80氏じゃないけれど、組み込み系に利用するためのコンパイラを書いたことがある。
独自のインストラクションセットを吐き出すCコンパイラだけど、
80氏と同じく本職じゃないために、とりあえず動くコンパイラを作っただけ。
最適化とかは必要最低限くらいにしか要求されていなかったし。

俺はフリーのプログラマだけど、
お金をもらえてこういう楽しい仕事が出来るときが一番嬉しいね。

92 名前:デフォルトの名無しさん [03/12/18 00:19]
>>91
おお〜、「フリーのプログラマ」で、しかもコンパイラまで
書けるのですか!
なんか括弧イイ!ですねぇ〜!

わたしも、フリーではあるのですが、フリーはフリーでも(ry


93 名前:デフォルトの名無しさん mailto:sage [03/12/18 03:27]
ASICとかFPGA屋さんもいるかも知れず。

94 名前:デフォルトの名無しさん mailto:sage [03/12/18 11:28]
>>90>>92
コンパイラ書くのはそんなに難しくないよ。
漏れも大学や専門学校でプログラム勉強したことなんか一度もないけど、
コンパイラを一回書いたことがある。
そのときのネタは、スクリプトを解釈して整数、浮動小数、文字列の計算をしながら、
その結果を GP-IB (RS232 の遠い親戚みたいなもの) に送り込むヤツね。

キーワードは Bison/Flex (またはYacc/Lex)。
これらのツールが食べられるような特殊な書式さえ覚えれば、
サルでも※簡※単※な※コンパイラなら書ける。
# ただし、サルにはGCCは書けない。

95 名前:デフォルトの名無しさん mailto:sage [03/12/18 14:20]
簡単なコンパイラ書くぐらいならGCCの移植作法を覚える方が
まだ ※簡※単※?

96 名前:デフォルトの名無しさん mailto:sage [03/12/18 14:40]
簡単なコンパイラ書く方が※簡※単※

97 名前:デフォルトの名無しさん mailto:sage [03/12/18 15:02]
※強※調※し※た※い※語※句※を※※※で※強※調※す※る※ス※レ※は※こ※こ※で※す※か※

98 名前:デフォルトの名無しさん mailto:sage [03/12/18 15:10]
*** おおっと テレポーター ***

99 名前:デフォルトの名無しさん mailto:sage [03/12/18 15:58]
>>95
UNIX USERのGCCプログラミング工房とか読んでると
すんげーキツそうなんですが。

100 名前:デフォルトの名無しさん mailto:sage [03/12/18 16:03]
www.wnishida.com/~wmemo/?date=20031125
こんなんとか。



101 名前:デフォルトの名無しさん mailto:sage [03/12/18 17:37]
誰かが移植してくれるのを待つのが一番簡単。

102 名前:デフォルトの名無しさん mailto:sage [03/12/18 20:25]
>>98
年 * 寄 * り * は * カ * エ * レ * !

103 名前:デフォルトの名無しさん mailto:sage [03/12/18 21:07]
*** いしのなかにいる! ***

104 名前:デフォルトの名無しさん mailto:sage [03/12/18 21:22]
>>103
俺がさんざん書こうと思って我慢してたのに(w

105 名前:デフォルトの名無しさん mailto:sage [03/12/19 18:45]
>>103-104 わらた

106 名前:デフォルトの名無しさん [03/12/20 18:08]
VC++でyaccとlexを使ってexeを作りたいのですが、
うまくいきません。みなさんはどうやってやっていますか?

107 名前:デフォルトの名無しさん mailto:sage [03/12/20 21:06]
>>106
yaccとlexの出力ファイルをコンパイルして使ってる。

108 名前:デフォルトの名無しさん [03/12/20 21:07]
なんでlex/yaccつかうひつようあるの?
win系で?

109 名前:デフォルトの名無しさん mailto:sage [03/12/20 21:09]
>>108
ちなみに自分は何を使ってるんだ?

110 名前:デフォルトの名無しさん mailto:sage [03/12/20 21:11]
>>109
それはあんたしか知らない。



111 名前:デフォルトの名無しさん [03/12/20 21:14]
まともに使えるスクリプト言語って、なんでこんなに少ないんでしょうね?


112 名前:デフォルトの名無しさん mailto:sage [03/12/20 21:18]
>>110
その突っ込みは板違い

113 名前:デフォルトの名無しさん mailto:sage [03/12/20 21:31]
>>111
それはお前が使えてないだk(ry

114 名前:デフォルトの名無しさん mailto:sage [03/12/20 22:34]
>>110
質の低い書き込みするなよ

115 名前:デフォルトの名無しさん mailto:sage [03/12/21 00:20]
>111
マジできくが、それじゃどんなスクリプトが欲しい?


116 名前:デフォルトの名無しさん mailto:sage [03/12/21 01:10]
>>111
では、使えないと思ったスクリプト言語を理由と共に列挙してみよ

117 名前:デフォルトの名無しさん mailto:sage [03/12/21 01:27]
perl ウンコ

118 名前:デフォルトの名無しさん mailto:sage [03/12/21 04:44]
Perlが一番速いんじゃない?汎用的なスクリプト言語の中では。
ああいう方向もありだと思うよ。

119 名前:デフォルトの名無しさん mailto:sage [03/12/21 13:34]
速くはないだろperlは、早いけど

120 名前:デフォルトの名無しさん mailto:sage [03/12/22 02:42]
インタプリタを初めてつくりたい人に「これをよめ」という本はありますか?
洋書・和書は問いません。

上の方のレスを見るとコンパイラとインタプリタは少し違うようなので、、、



121 名前:デフォルトの名無しさん mailto:sage [03/12/22 07:42]
ホントーに初めてで右も左もわからないならCマガジン2000年5月号がお薦め。


122 名前:デフォルトの名無しさん mailto:sage [03/12/22 08:38]
www.cmagazine.jp/contents/200005.html
特集1 スクリプト言語を作ろう インタプリタの構造と設計


123 名前:デフォルトの名無しさん mailto:sage [03/12/22 12:02]
>>120
bison, flex のドキュメント。
gcc の *.y ファイル。

124 名前:デフォルトの名無しさん mailto:sage [03/12/22 13:02]
字句解析は正規表現のようにした方がいいですか・・・

ハッシュにして48個(64個)を作ってそれぞれをチャインで
繋いで予約語と関数名と変数等を検索して方が早くないですか・・・

125 名前:デフォルトの名無しさん mailto:sage [03/12/22 18:00]
>>124
そう思うならそうすればいい。
っていうかそれでいい。
なにか問題でも?

126 名前:111 [03/12/22 21:59]
パール:記述方法が暗号的すぎ
オーク:使用目的が限定的すぎ
るび〜:モデル化が変態的すぎ

>>122
もう手にはいらんのとちゃう?


127 名前:デフォルトの名無しさん mailto:sage [03/12/23 00:18]
>>126
バックナンバー情報をチェックしたら
2000年のは無いみたいだね。
だが、大学の図書館とかなら多分ある。
漏れの母校の資料室にもあった。
っていうか俺んちの図書室にもある。
公的な図書館なら申請すれば
他の図書館から取り寄せてくれたりもする。
絶望的なほどではない。
でも、そこまでするなら本屋で他の本見繕った方がいい罠。

128 名前:デフォルトの名無しさん [03/12/23 02:32]
>>124
自分もハッシュです。
256でチェインしてます。
記号の"{"ごとにハッシュ表を新たに作り、
新しいハッシュ表から古い方に向かって調べます。
グローバル用は別に1個作り、
関数を呼ぶ場合にも、全く別のセットを作ります。
(じゃないと、下部の関数から上位の変数がみえたりしちゃいますからね)

ちなみに、ハッシュを使わずに作った物は、
6万語ぐらいの定義、10万回くらいの参照、マクロ展開があるファイルのコンパイルに10分、
ハッシュを使った物は30秒ぐらいでした。

129 名前:デフォルトの名無しさん mailto:sage [03/12/23 02:47]
>>124
今まではハッシュだったけど、
最近、キーワードだけswitch文の羅列で分別するようにしてみた。

もちろん手書きでは大変なので、perlで簡単なプリプロセッサを書いて
そいつに展開させてる。



130 名前:デフォルトの名無しさん mailto:sage [03/12/23 05:26]
>>127
> 公的な図書館なら申請すれば
> 他の図書館から取り寄せてくれたりもする。

こんど近所の図書館でも聞いてみよ。
千葉県だけど取り寄せてもらえるかな、、、



131 名前:>>124 [03/12/23 15:53]
単純にflexじゃあかんの?


132 名前:デフォルトの名無しさん [03/12/23 17:07]
Cコンパイラのソースで読みやすいの教えろ

133 名前:46 [03/12/23 17:14]

Kさん 好循環  Aさん 悪循環  
 (健康体)  (喘息)

1.(神が喘息であるかないかを決める)

2.K 喘息でない人 A 喘息の人は
は体力がある    体力がなくなる

3.K        A 行動力、
          五感(嗅覚)が鈍り感性が変化する

4.K&P 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。

5.K 変化なし   A アトピーになる

6.K 正常な感性  A 外に出なくなりさらに異常な感性になる

7.K 正常な人間   A 異常な人間(レッテル)

134 名前:46 [03/12/23 17:14]
8.K&A 死

9.K&A      来世

10.K&A 神は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。

11.K&A 神が喘息であるかないかを決める

12.K 喘息でない  A 喘息である

13.K&A    1.に戻る

これは事実。広めようぜ

解決法:体力をつけると感覚が正常に戻り、
    アトピーも快癒に向かう。
    目安としてグランドを10週くらい。
あとはウォーキング、なるべく長い間歩く
(ウインドーショッピングや散歩、五時間ぐらいを目安)。
無論最初は、無理なので徐々に体を慣らしていくといい

鼻に変な違和感があったり、頭がぼおっとする時の解決法。
口をつぐんだまま、口の中で空間を作る、すると口の中に空気がたまるのでそれを吐き出す。無論息が苦しくなったら、呼吸をして良い。
これを、100回くらい。

135 名前:デフォルトの名無しさん mailto:sage [03/12/23 18:04]
>>132
gcc



136 名前:デフォルトの名無しさん [03/12/23 18:28]
最近のスクリプト言語って、オブジェクト指向ばっかりね。


137 名前:デフォルトの名無しさん [03/12/23 19:16]
>>132
Bruce evans C Compiler (BCC) がおすすめ
16bitコード生成の最適化無しだけど、ソース分量も多くないし
再帰下降なんでyaccとかも使ってない
作者のBruce EvansはMinix386パッチ開発などで知られる
一応ELKSのコンパイルにも使用されている


138 名前:デフォルトの名無しさん mailto:sage [03/12/23 21:21]
えー・・・

139 名前:デフォルトの名無しさん [03/12/23 22:18]
>>137
YACC使ってるほうが、圧倒的にソース簡単なんじゃない?
なんで、勉強には不向きと思われ。


140 名前:デフォルトの名無しさん [03/12/23 22:19]
C+AWKみたなスクリプト言語ありますか?




141 名前:デフォルトの名無しさん mailto:sage [03/12/23 23:07]
>>140
そりゃperlでは…



142 名前:デフォルトの名無しさん [03/12/23 23:08]

  ☆チン     マチクタヒ゛レタ〜
                        マチクタヒ゛レタ〜
    ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ヽ ___\(\・∀・) < ルビ〜ソ〜ス本はマダ〜〜〜?
      \_/⊂ ⊂_ )  \_____________
     / ̄ ̄ ̄ ̄ ̄ ̄/|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん |/




143 名前:デフォルトの名無しさん [03/12/23 23:14]
>>141
変数に$つけんとあかんのとちゃう?


144 名前:デフォルトの名無しさん mailto:sage [03/12/24 14:21]
>>143
それが?

145 名前:デフォルトの名無しさん mailto:sage [03/12/24 14:44]
Appel本の java 版のソースは ML の移植と聞いたのですが、実際にそうなのですか?
読んだ方の意見を聞いてみたのですが。

146 名前:デフォルトの名無しさん mailto:sage [03/12/25 01:11]
コンパイラって、入出力なんかのハードウェアに近いレイヤとか、FFI 等で自分の環境外に
アクセスする部分ってどうなってるのかしらん。インタープリタだと外のライブラリ使えば
良さそうなんだけど。

147 名前:デフォルトの名無しさん mailto:sage [03/12/25 01:21]
>>146
出力したオブジェクトにAPI呼ぶライブラリをリンクする。
あるいはAPIを呼ぶコードを吐く。
別に疑問なところはないとおもいますが。

148 名前:デフォルトの名無しさん mailto:sage [03/12/25 01:37]
>>147
レスどうもありがとうございます。
冬休みになったらコンパイラの勉強をしたいなと思ってるのですが、イマイチ基本的な
事から分かっていないのでダメですね。リンカーの本を読めばこの辺も理解出来るの
かなぁ。


149 名前:デフォルトの名無しさん [03/12/25 01:57]
>>132
C/C++インタプリター cii
ttp://village.infoweb.ne.jp/~fwgi5816/CI/


150 名前:デフォルトの名無しさん mailto:sage [03/12/25 02:34]
知合いの方はAppel本のJava版はJavaじゃない,とまでおっしゃってました.MLからのひどい直訳で,Javaとしては(コンパイルの通らない)誤りも多々あるとか?私は実際どうなのかが分かる人間ではありませんが.



151 名前:デフォルトの名無しさん mailto:sage [03/12/25 07:12]
>>150
C は Java のひどい移植で、、、と書評で書いてあったのだけど、 ML を Java に移した時点で
すでに糞コードなんですか?

ML で勉強するのはちょっときついなぁ、、、

152 名前:デフォルトの名無しさん mailto:sage [03/12/25 17:54]
つーかサンプルコードなんてどうでもいいだろ。
個人的には、読みやすい疑似コードならあっても損ではないが。






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

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

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