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


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

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



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

前スレ

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

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

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

793 名前:デフォルトの名無しさん [03/07/24 15:44]
>>785
C言語のパーサーの話なら、おたずねの * に関して字句解析が気にかける必要
はありません。それらの区別は構文解析の責任です。字句解析では'*' という
トークンを返せばそれで良いのです。

では字句解析はつねに文脈を気にしないで良いのかというとそうでもありません。

たとえばC のtypedef名は TYPEDEF_NAME というトークンを返さないと正しく
構文解析ができませんので、字句解析はidentifierを見たときに記号表を見て、
それがtypedef名として登録されているかどうかを調べなくてはいけません。
typedef名であれば TYPEDEF_NAME を、そうでなければ IDENTIFIER を返す
のです。

# 実はCの構文解析ではこの後さらに、TYPEDEF_NAMEを通常のidentifierとし
# て解釈するという処理もしなければならないのですが、初心者が混乱すると
# いけないのでこのへんでやめときます。


794 名前:デフォルトの名無しさん mailto:sage [03/07/25 02:53]
なぜおまえらLISPを使わんのだ

795 名前:デフォルトの名無しさん mailto:sage [03/07/25 03:04]
Lispを使うスレでないから

796 名前:デフォルトの名無しさん mailto:sage [03/07/25 06:35]
Lispはクソだから

797 名前:デフォルトの名無しさん mailto:sage [03/07/25 13:57]
括弧悪いから。

798 名前:デフォルトの名無しさん mailto:sage [03/07/25 19:32]
括弧(・∀・)イイ!

799 名前:ろうひ男爵 mailto:sage [03/07/25 21:14]
>>797
ワタラ。

800 名前:デフォルトの名無しさん mailto:sage [03/07/26 02:50]
>>799
激しく同意

801 名前:デフォルトの名無しさん mailto:sage [03/07/26 18:27]
おまえらLISPは柔軟だからコンパイラやアセンブラとかを
LISP自身で書けるんだぞ。そもそも記号処理は得意分野だからな。
CやJavaで組むより簡単だろう。
実装側の言語に頼る量も最小で済むんだぞ。
なぜ使わんのだ。



802 名前:デフォルトの名無しさん mailto:sage [03/07/26 18:28]
>>797
括弧悪い?アホか。
括弧の量なんて些細な事でしかない。

803 名前:デフォルトの名無しさん mailto:sage [03/07/27 08:34]
>>802
通じて無いよこの人

804 名前:デフォルトの名無しさん mailto:sage [03/07/27 14:24]
Lisp厨うぜぇ。
括弧読みにくいんだよ。
いつまでもマイナー言語でオナニーしてろよ、ボケ!

805 名前:デフォルトの名無しさん mailto:sage [03/07/27 15:47]

Lisp厨以上に厨さを醸し出す>804

コイツ、ウザッ

806 名前:デフォルトの名無しさん mailto:sage [03/07/28 07:32]
>>801
Lispじゃなくても、コンパイラやアセンブラはその言語自身でかけるが・・・

807 名前:デフォルトの名無しさん mailto:sage [03/07/28 07:32]
ああ、すまん。より簡単だといいたいわけね。

本当にそうなの?

808 名前:デフォルトの名無しさん [03/07/28 09:27]
字句解析についての質問なんですが、
自前でトークンを切り出すコード
(もし先頭がアルファベットならwhileで延々読み込みみたいな)の実行速度と
lexで吐き出すコードの実行速度ではどちらが早いんでしょうか?



809 名前:デフォルトの名無しさん mailto:sage [03/07/28 13:51]
実装次第

810 名前:棄教者 ◆egKIKYO7cg mailto:sage [03/07/28 14:50]
>>808
オートマ車とマニュアル車とどっちが燃費いいかという命題に似ている。

811 名前:デフォルトの名無しさん mailto:sage [03/07/28 18:24]
>>808 のような質問をする人間にはマトモな実装が出来るわけが無い、と仮定すると
lex の吐き出すコードのがマシと思われ。



812 名前:デフォルトの名無しさん mailto:sage [03/07/28 18:51]
>>811の誤りは、自明なことをあらためて仮定したこと。


813 名前:名無し@沢村 [03/07/28 20:47]
おまいらよ、コンパイラやスクリプトエンジンよりも、TVウェアをつくってみないか?

pc2.2ch.net/test/read.cgi/tech/1059262203/l50

814 名前:808 [03/07/28 21:53]
実装次第ですが・・・ありがとうございました。

初めてlexのコード見たんですが
移植する時間も自信も・・・なので諦めました・・・
メモリも全然使えない環境ですし・・・

815 名前:デフォルトの名無しさん [03/07/29 19:20]
>>814
綴りの認識程度ならlex(というかDFA)は大袈裟な気がする。

僕だったら、連続するアルファベットと数字を連結して単語にし、事前に作っ
ておいたハッシュ表を索いておしまいにします。
ハッシュ表は、完全ハッシュ関数を作成するツール(GNU gperf)を使えば、
かなり小さくできるし。


816 名前:デフォルトの名無しさん mailto:sage [03/07/29 23:49]
>>808
最初で、しかも簡単な物でしたら、手で作ってみるのもいいのではないでしょうか。
それからlexを覚えた方が理解が深まりますし。

817 名前:デフォルトの名無しさん mailto:sage [03/07/30 00:31]
手作りするより、早めにlexの使い方を覚えた方が
後々楽な気がするけど。
まあ、時間に余裕があるなら。

818 名前:デフォルトの名無しさん mailto:sage [03/07/30 12:19]
801 ではないが,Lisp の場合
字句解析 -> 不要
構文解析 -> すでに終わってる
なので激しく楽なのは間違いない.本の章一つで
Lisp のサブセットやそのコンパイラの作成法が載るくらい.

819 名前:デフォルトの名無しさん mailto:sage [03/07/30 23:08]
LISP Scheme Pert8テンプレより

Lisp 言語処理系: CAMPUS LIsP, Lemon version
ttp://aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml
Cコードによるわずか1000行の実装

ちなみにLispのマクロは字句解析と構文解析の間に作用するので、
別の言語のインタプリタをLisp上に作ることができる。
Paul GrahamのOn Lispという本(Web公開中)ではCommon Lisp上の
Prologインタプリタが解説されているし、
Richard Fateman教授のサイトには(おおっぴらには載せてないが)
Common Lisp上のMathematicaサブセットのインタプリタのソースが置いてある。
いずれもマクロを活用している。

おまけ bison, flexマニュアル和訳
ftp://ftp.ascii.co.jp/pub/GNU/

820 名前:デフォルトの名無しさん mailto:sage [03/07/31 12:43]
lisp厨は逝けよ。
lispのマクロで満足できるならこのスレには来るわけないんだからさ。


821 名前:デフォルトの名無しさん mailto:sage [03/07/31 18:04]
>>820
このスレで無駄に時間浪費した挙句、互換性のクソもない
コンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。



822 名前:デフォルトの名無しさん mailto:sage [03/07/31 19:01]
>>821
スレの存在そのものに疑義があるんなら立ち入ってくるなっつの。

823 名前:デフォルトの名無しさん mailto:sage [03/08/01 02:36]
>lispのマクロで満足できるならこのスレには来るわけないんだからさ。

lispのマクロを極めた人しかこんなことは言えないと思うのですが。

824 名前:デフォルトの名無しさん mailto:sage [03/08/01 03:05]
>>823
馬鹿だろ?
lispでマクロを極めようがどうしようが、んなことはフルスクラッチで
スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。
プロトタイプだけ作って満足するならともかく。
こういう場を読めないLispスノッブが大杉。


825 名前:デフォルトの名無しさん mailto:sage [03/08/01 03:46]
>>824
お前こそ馬鹿だろ?
lispのマクロがプロトタイプだけしか作れなくて
フルスクラッチの方がえらいみたいに考えてるところが。

826 名前:デフォルトの名無しさん mailto:sage [03/08/01 05:23]
824じゃないが

>> フルスクラッチの方がえらいみたいに考えてるところが。
> スクリプトエンジンを組みたい奴の欲求には答えられないっていってるの。

Lispでどんあ言語でも作ることができる何て言ってるヤシは、
Lispしかやったこと無いヤシ。

827 名前:デフォルトの名無しさん mailto:sage [03/08/01 05:46]
どんな言語でも大抵の言語は作れるよ

828 名前: mailto:sage [03/08/01 07:34]
flexで最後にマッチした文字列が入るyytextには'\0'は付加されるの?

guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html
では付加されないから注意が必要と書いてるけど

www.geocities.co.jp/SiliconValley-Oakland/3432/man/flex/flex-ja_4.html#SEC35
とかのサンプルみてるといきなりstrcpy(yylval.name,yytext)見たいな感じのコードがあるんだけど。
strcpyはソース側がNULL文字終端じゃないといけないよね。
それとも自分が何か勘違いしてるのかな?教えてください。

829 名前:デフォルトの名無しさん mailto:sage [03/08/01 11:39]
>>827
そりゃアセンブラでも作ることはできるだろう。
ようはどれだけ簡単に作ることができるかだ

830 名前:デフォルトの名無しさん mailto:sage [03/08/01 12:21]
>>828
というかこれにぶっ飛んだよ。

%union{
    char   name[128];
}


831 名前:デフォルトの名無しさん mailto:sage [03/08/01 13:29]
>>826
Lispスノッブ大杉って,漏れには数人しか見えないが….
コンパイラやスクリプトエンジン書くのに言語やツールなんか関係ねーだろう.
フルスクラッチがいいなら Lex も Yacc も使わずに全部手でかけばいいじゃん.




832 名前:デフォルトの名無しさん mailto:sage [03/08/01 14:00]
最近Schemeを勉強し始めたんだが、現時点での感想。

利点
- GCがあるので、メモリ管理が楽
- リストや木などを処理し易い
- S式を入出力する手続きが用意されている
    途中結果の出力や、個々の手続きの動作検証がし易い
- シンボル
    シンボルを使うとシンボルテーブルを新たに作らなくてもよいかもしれない。

欠点
- lexやyaccのようなデファクトスタンダードなツールがない
    guile絡みでLanguage Implementation Toolなるものがあるらしいが、
    どういう位置づけのものなのかは知らない。
- 動作が遅い
    ネイティブコードを吐くコンパイラもあり、速いらしい。
    それでも、チューニングをし出すとCとかで組んだ方が速くなると思う。
- マクロ
    Schemeは処理系によってマクロの書き方が違う。
- 資料が少ない
    検索しても見つかるのは、Schemeの処理系を作る話ばかり。
    On Lispに載っていたPrologインタプリタは、Prologの機能を
    マクロとかを使って実現するという話ぽかった。
    もしかしたら前の方の章にProlog→S式変換の話があったりするとか?

833 名前:832 mailto:sage [03/08/01 14:07]
まだ、Schemeではプログラムをあまり書いていないので、
先入観も含んじゃっています。

834 名前:828 mailto:sage [03/08/01 14:14]
>>830

すいません、まだ勉強始めたばっかりでなんでぶっ飛んだのかわかりません。
あとflexは自動的にヌル終端文字列にしてくれるんですか?

835 名前:デフォルトの名無しさん mailto:sage [03/08/01 14:21]
>>821
> 互換性のクソもないコンパイラ・インタプリタなんぞ作って、いったい誰が使うのかな。

このスレで書いてはならない事を書いたね。


836 名前:デフォルトの名無しさん mailto:sage [03/08/01 18:47]
ごめん

837 名前:デフォルトの名無しさん mailto:sage [03/08/01 18:55]
>>836
素直だ。

838 名前:デフォルトの名無しさん mailto:sage [03/08/01 19:00]
>>834
%unionってスタックの要素になるんだが、それを128byteとる豪儀(藁)さに。
終端はしないはず。

839 名前: mailto:sage [03/08/01 21:03]
>>838
おお、どうもありがとう。

840 名前:デフォルトの名無しさん mailto:sage [03/08/01 21:31]
すまん、されてるっぽいよ。

841 名前:デフォルトの名無しさん mailto:sage [03/08/01 23:52]
>>832 なんで Lisp 厨を刺激しそうなことを書くかね・・・。
とりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の
LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン
で読めるみたいだし。



842 名前:デフォルトの名無しさん mailto:sage [03/08/01 23:52]
>>832 なんで Lisp 厨を刺激しそうなことを書くかね・・・。
とりあえず、フォローしておこう。ちょっと検索したけど Scheme 用の
LALR パーサジェネレータとかある。資料も英語なら本が何冊もオンライン
で読めるみたいだし。

843 名前:841 mailto:sage [03/08/01 23:54]
うげ、なぜか二重カキコに。吊ってきます。

844 名前:山崎 渉 mailto:(^^)sage [03/08/02 02:12]
(^^)

845 名前:デフォルトの名無しさん [03/08/02 04:03]
逆アセンブラはスレ違いですか?

846 名前:デフォルトの名無しさん mailto:sage [03/08/07 22:30]
何でもいいからネタキボンヌ

847 名前:デフォルトの名無しさん mailto:sage [03/08/11 19:10]
七度文庫

848 名前:デフォルトの名無しさん [03/08/12 13:41]
ゲームキャラのAIをスクリプトで書けるようにしようと思っています。
JavaScriptを使おうとおもうのですが、組み込んで使えるものなのでしょうか?
VC6使っています。

849 名前:デフォルトの名無しさん mailto:sage [03/08/12 14:18]
>>848
ちょっと探したら、こんなのみつけたけど。

MozillaのJavaScriptのページ
jt.mozilla.gr.jp/js/

850 名前:デフォルトの名無しさん [03/08/12 17:20]
組み込み用途なら、JavaScriptとPerl、どっちがいいですか?

851 名前:デフォルトの名無しさん mailto:sage [03/08/12 20:28]
どっちもデカ過ぎるような…。コンパクトな自作言語のがよくないか?
まぁ、Python なんかは組み込まれてるの見かけるから漏れの感覚が古い
のやもしれず。



852 名前:850 [03/08/12 20:42]
Luaが小さくてよさげなのですが、明らかにJavaScriptやPerlと劣っている点はありますか?
小さいことは気にしないのですが、いざ使ってて大きな落とし穴に落ちたら人生いやけがさして多分漏れ自殺します。

853 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:05]
が ・ ん ・ ば

854 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:53]
LISPがいい

855 名前:デフォルトの名無しさん mailto:sage [03/08/13 04:00]
>>852
Luaは最初から組み込むことを前提に考えて作ったっぽいからいいかも。
ただ小さい代わりに言語仕様もライブラリも他と比べて貧弱なので。

856 名前:850 [03/08/13 11:23]
たしかに用意されているライブラリは少ない感じがします。
ただ、組み込み用途で使うのであれば、幾つかの型が扱えて
ifやwhileなどの制御構文が使えればOKかなぁ。。。
スクリプト側ではフロー制御みたいなことしかやらず、どうせ
アプリ側のAPI呼び出しに徹する形になるだろうから。

857 名前:デフォルトの名無しさん mailto:age [03/08/14 17:20]
JavaCC使っている人いる?

久しぶりにJavaCCを使おうと思ったら、antからビルド出来なくなっていた。
もちろん、コマンドラインからはjavaccもjjtreeも普通に使えている。
COM.sun.labs.javacc.Mainという存在しないクラスを探すのが原因らしく、
そこを"org.javacc.parser.Mainに書き換えただけで動いた。
sfに移動してから結構経っているのに、誰も気付かなかったのかな。

858 名前:山崎 渉 mailto:(^^) [03/08/15 15:24]
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

859 名前:デフォルトの名無しさん [03/08/16 18:29]
ほしゅっ

860 名前:デフォルトの名無しさん [03/08/19 21:52]
>>764
最近アルバイト先で使ったLSI設計ツール、Tclが組み込まれていた。
もちろん商用アプリなんだけど、Tclって商用利用に使ってもいいんですね。

いや、単に不勉強で、ちまたのスクリプトの何が商用利用(商品に組み込んだ
うえで販売)でき、何はだめなのか、よく知らなかったので、たまたまTclを
見つけて「へぇ、こういうふうに商品にもつかっているんだ」と、感心したという
だけの話なんですが。

861 名前:デフォルトの名無しさん mailto:ege [03/08/19 23:46]
おまえらの中で、boost::spiritを使ってる人いませんか?
どんな感じのものなのですか?





862 名前:デフォルトの名無しさん mailto:sage [03/08/20 05:43]
ガーベッジコレクションの話題はこのスレでいいのかな?

863 名前:デフォルトの名無しさん mailto:sage [03/08/20 06:19]
↑無関係ではないが、うーん、ちと違う気がするな。

864 名前:デフォルトの名無しさん mailto:sage [03/08/20 06:58]
>>862
LISP Schemeスレなら受け入れてくれると思うよ。
自作派が多いから。

865 名前:デフォルトの名無しさん mailto:sage [03/08/21 13:44]
>>861
下のサイト見るか、boost スレ行って訊けば?
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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