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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2009/11/17(火) 13:12:25 ]
禁止事項【臨時】
・前スレの911自身の書き込み、またそれに関連した書き込みを禁止致します。
 (スレが荒れる原因となります)

プログラミング言語処理系の開発に興味のある人達のスレッドです。
字句解析・構文解析から,データフロー解析,ループ並列化,データ分散,SSA変換,
CPS変換,レジスタ割付,命令スケジューリング,ソフトウェアパイプライン,
SIMD命令生成,VLIW向けクラスタリング,スクラッチメモリ向け最適化,リンク時最適化,
JIT,動的バイナリ変換等の各種最適化,それにVM,GC,低消費電力化などなど。
意味論に関する話題も歓迎です。

過去スレ
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/
6 pc8.2ch.net/test/read.cgi/tech/1115335709/
7 pc8.2ch.net/test/read.cgi/tech/1129287390/
8 pc8.2ch.net/test/read.cgi/tech/1131273918/
9 pc8.2ch.net/test/read.cgi/tech/1135082582/
10 pc8.2ch.net/test/read.cgi/tech/1146844753/
11 pc11.2ch.net/test/read.cgi/tech/1160879890/
12 pc11.2ch.net/test/read.cgi/tech/1188688416/
前スレ 13 pc12.2ch.net/test/read.cgi/tech/1233143342/
関連リンクは多分 >>2-10 あたり

720 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:13:39 ]
やさしく教えるのって結局質問者のためになってるのかな
突き放した方が良い場合もある(そっちの方が多い)んじゃないか

721 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:16:04 ]
>>720
要は主体的に動かすための動機づけが重要なんだよ。
手取り足取り何もかも用意してやるのも害になるし、
突き放して何も与えないのも害になる。
さじ加減が重要だよ。

722 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 14:18:28 ]
教育には、○○をすれば必ずうまくいく、なんていう銀の弾丸はなくて、
人それぞれさじ加減を変えないとうまくいかないんだよ。

723 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 00:57:30 ]
組み込み系言語総合スレは何処に

724 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 01:09:32 ]
立てたよ。

【Lua】組み込み系言語総合 その3【Squirrel】
pc12.2ch.net/test/read.cgi/tech/1272643397/

725 名前:デフォルトの名無しさん [2010/05/08(土) 02:33:42 ]
ANTLRの質問です。
JAVAも初心者なんですが、日本語(UTF-8)のコメントが入った*.gを
ANTLRにかけるとエラーが出るんですが、何とかならないでしょうか?

726 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 07:05:26 ]
>>725
options 節でcharVocabularyの範囲を指定すると通るよ
charVocabulary = '\u0000' .. '\uFFFE';


727 名前:725 mailto:sage [2010/05/09(日) 21:54:07 ]
>>726
charVocabularyの指定ではダメでした。
後出しですいませんが、使っているのはANTLR3で、
何となく、ANTLR3から使えないような気もします。


728 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:08:20 ]
FORTH系でスタックの深さをインデントの深さで表現するって言うのはどうだろう
1 + 2 * 3 + 4 / 5

1 2 3 * + 4 5 / +

1
2 3
あれ?




729 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 20:24:18 ]
あんまり見栄え良くないよ。


1 2 3
 *
+ 4 5
 /
+

730 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 00:25:27 ]
>>728
積んでから帰ってくるとか消費して帰ってくるのとかがキモく見えるだけじゃないか?
今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする

だいたいわかんなくなる位巨大なワード組まないようにすべきだと思うし


731 名前:728 mailto:sage [2010/05/22(土) 17:56:42 ]
いや、
1 2 3 4 5
+
で、(1+2+3+4+5)が計算できると、いいかと思ったんだ。
このスタック位置まで繰り返しみたいな。

732 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:02:26 ]
本格的にparserを実装したいならIronyを使う。
ただ計算だけできればいいならなにかインタプリタを使えばいい。

個人的にBooをおすすめしておく。
コンパイラにインタプリタに標準ライブラリまでついて1.45MBと軽くていい。

733 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:54:05 ]
>731
検討したことあるけど、後置のメリットをダメにするから止めたほうが良い。結局カッコ付けるのと変わらなくなるし。

734 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 18:57:09 ]
++ とやったらスタック内が1つになるまで加算する、
とかしたらいいんじゃない

735 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:02:29 ]
>>731
それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?


736 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 16:18:33 ]
>>735
>それ括弧でくくってから呼び出し関数の名前を最初に書いたら単なるLISPじゃないのかな?
しー!、黙っていればわからないって!
見た目がPython風にならないかと思っただけ。
>>730
>今まで通りスタックの伸縮についてコメントで記す方式で十分な気がする
これで、IDEでワードを打ち込むと、前のキーワードの色が変わったりすると便利だな
でも、深さが任意のキーワードとかがあったらだめだろうけどな。


737 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 23:57:02 ]
lemonとかcaperとかのプッシュ型パーサージェネレーター使ってる人いる?

738 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 01:40:55 ]
caperは使ってる、でかいの書いたらコンパイル時間がたまらん事になった



739 名前:737 mailto:sage [2010/05/26(水) 12:48:47 ]
プッシュ型パーサーって入力の終わりを示すトークンを自分で入れるでしょ。
あれがどうもやりにくいというかピンとこないというか。

対話型でスクリプトを入力するようなやつ(ぶっちゃけるとlisp)で
単純に改行を入力の終わりと出来ないやつは一体いつ終了トークンをプッシュするんだと。
「全ての左括弧と右括弧が対応したかを自分で検査してtoken_eofをプッシュ」ってやんのかな?あれ?

740 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 21:47:01 ]
それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。
あと、プッシュ型パーサは字句解析と構文解析の間で小細工できるのが便利だと思う

741 名前:jonigata mailto:sage [2010/05/26(水) 21:56:43 ]
なるほど……

スペース的なトークンを用意したら
なんとかなったりしないかな?

それはそれで文法作るの面倒かしら

あるいは、改行のところでパーサのインスタンスを保存して、
改行にあわせて無理やりeof打ち込んで、
エラーになったら保存したインスタンスを復帰してどうにかするってのは
どうでしょう

742 名前:737 mailto:sage [2010/05/26(水) 23:46:56 ]
>>740
> それでいいんじゃね、字句解析機でネストレベルを覚えとくのは普通にやる。 
即効性で言っても多分それが一番かなぁ。

>>741
> スペース的なトークンを用意したら 
> なんとかなったりしないかな? 
外側の都合が文法に影響するのはなんとなく気持ち悪い気が…。

> あるいは、改行のところでパーサのインスタンスを保存して、 
> 改行にあわせて無理やりeof打ち込んで、 
> エラーになったら保存したインスタンスを復帰してどうにかするってのは 
概念的には一番わかりやすいと思うけど、
括弧が閉じられた後、改行が来るまでに別のトークンが来ないとも限らないのが…。

(defun foo ()
  5) (foo)

とかだったら
==> foo
==> 5

みたいにfooの定義とfoo呼び出しの戻り値5が返って欲しいし。

743 名前:jonigata mailto:sage [2010/05/27(木) 00:15:48 ]
それはトップレベルがS式のリストじゃだめ?

それも気持ち悪いor実はそんなことじゃ解決しない
ということであれば、何をどうできればいいかなあ
eofを仮にpostしてacceptするかどうかだけ判定する
メソッドとか?

一切コーディングせずに妄想だけで言ってるけど!


744 名前:737 mailto:sage [2010/05/27(木) 08:56:44 ]
> それはトップレベルがS式のリストじゃだめ?
あ、なるほど。そう考えたら「パーサのインスタンスを保存して〜」で問題ないのかな…。
まだやってないけどメソッドの追加はいらなさそうな気がします。
実際試すまでちょっと間が空くかも知れないけどまた報告に来ます。

745 名前:737 mailto:sage [2010/05/30(日) 14:46:41 ]
とりあえずやったこと書いてみます。
まず、字句解析器から受け取ったトークンをcaperにプッシュするループのところに以下の部分を挟みました。

    if( token == token_LINE_FEED ){
        Parser< Value, SemanticAction > backup = parser;
        if( parser.post( token_eof, 0 ) ){
            break;
        }
        parser = backup;
    }

と、backupを書き戻そうとしたところでoperator=使えないというエラーが。
で、Parserクラスに代入演算子を入れました。

public:
    self_type& operator!=(const self_type& other)
    {
        if (this != &other) {
            accepted_       = this->accepted_;
            error_          = this->error_;
            accepted_value_ = this->accepted_value_;
            stack_          = this->stack_;
        }
        return *this;
    }
};

これでエラーは無くなりました。
(つづく)


746 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 14:46:58 ]
じゃあさ、SQLでViewが画面とかどうだろう。
入力困るけど。

747 名前:737 mailto:sage [2010/06/01(火) 10:44:02 ]
次に今までS式が最上位だった所へ更に上を追加しました。

Top<int>                 : [] 
                         | [] Top Datum(0)
                         ;

とここでふと疑問が。
・全体をS式の列として受理するとして、スタックに積む値の型はどうなるの?

typedef boost::variant<std::string, int, bool, Sexp *> Value;

となっていたのが
typedef boost::variant< std::string, int, bool, Sexp *, std::list< boost::variant< std::string, int, bool, Sexp * > > > Value;

とでもなるのかな?えー。

…SemanticAction内でYYACCEPTに相当する何かを行った時にも
postでtrueを返せばbisonの置き換えが楽そうな気がするんだけど。



748 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:43:52 ]
中田の新しい本は何が変わりましたか?



749 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 18:54:51 ]
>748
ちょっと自分で調べといて
おれ忙しいから


750 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:12:22 ]
>>748
新刊でたの?、それとも改訂版?


751 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:21:56 ]
>750
ちょっと自分で調べといて
おれも忙しいから

752 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 22:24:16 ]
>>751
そんなこと書き込んでる間に調べられるだろう

753 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 13:31:54 ]
>>750
2版が出た

754 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 17:06:45 ]
>>745 >>747

型に関しては、単にリストをオブジェクトを用意すればよいのではないかな?

代入演算子とかはこれから実装しますです

YYACCEPT云々についてはちと考えます。

755 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 19:48:52 ]
良く見たらoperator!=になってるw






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

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

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