- 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 あたり
- 577 名前:545 mailto:sage [04/03/09 22:36]
- alloca実装でけたよ
疲れた
- 578 名前:デフォルトの名無しさん [04/03/20 13:15]
- Windowsで使えるlexってないんでしょうか?
Cygwin上でうごかすのではなく、純粋にWindows用として。
- 579 名前:デフォルトの名無しさん mailto:sage [04/03/20 13:33]
- ttp://sourceforge.net/project/showfiles.php?group_id=23617
- 580 名前:578 [04/03/20 14:04]
- >579
ありがとう。 でも俺がいうのもなんだが甘やかしすぎでは。
- 581 名前:デフォルトの名無しさん mailto:sage [04/03/20 18:02]
- >>580
何だそりゃw
- 582 名前:デフォルトの名無しさん mailto:sage [04/03/20 19:30]
- >>578
こんなんもあるけどな www.vector.co.jp/soft/dos/prog/se002362.html
- 583 名前:デフォルトの名無しさん mailto:sage [04/03/20 20:18]
- 579は鉄オタに優しいNHKみたいですね<あまやかしすぎ
- 584 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:46]
- おれはNHK料金払ってない
- 585 名前:デフォルトの名無しさん mailto:sage [04/03/20 21:53]
- >>584
同じく、見てないし。
- 586 名前:デフォルトの名無しさん mailto:sage [04/03/20 23:24]
- つーかNHKあまやかしすぎ
- 587 名前:デフォルトの名無しさん mailto:sage [04/03/23 00:12]
- 教育テレビで歌のお姉さんが胸もまれてたよ。
- 588 名前:デフォルトの名無しさん mailto:sage [04/03/23 07:16]
- なんと。
- 589 名前:デフォルトの名無しさん [04/04/07 19:36]
- yacc か bison のサンプル集みたいなサイトご存知ないですか?
ちょっと、書籍で勉強してるんですがサンプルが少なくて困ってます。
- 590 名前:名無し@沢村 [04/04/07 22:06]
- おまいらよ、超便利マシン語エディタ「Visual E++」ができたから見ちみれ!!
プログラム言語の歴史が変わった歴史的瞬間だ。 hp.vector.co.jp/authors/VA015412/
- 591 名前:デフォルトの名無しさん mailto:sage [04/04/08 19:16]
- >>590
Windoze用かよ _| ̄|○
- 592 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:52]
- 逆に聞くが、Windows用以外に何があるんだ?
- 593 名前:デフォルトの名無しさん mailto:sage [04/04/10 01:45]
- >>592
(゚Д゚)ハァ?Macに決まってんだろ!
- 594 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:25]
- >>592
SPARCでSolarisかLinux。PPCでMac OS X用。 これだといじれるんだけどな。Windozeなんざ動く環境がないんで試す事すらできねぇ。 あ、StrongARMなLinuxZAURUSも有るか。
- 595 名前:デフォルトの名無しさん mailto:sage [04/04/10 05:44]
- > Windoze
スペルは正しく書きましょう Windows :p
- 596 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:41]
- >>595
ネタだとは思うけど一応... ttp://d.hatena.ne.jp/keyword/Windoze
- 597 名前:デフォルトの名無しさん mailto:sage [04/04/10 10:37]
- ネタをネタで :D
- 598 名前:デフォルトの名無しさん [04/04/11 11:00]
- 最適化技法について分かりやすく説明してくれている HP ってありませんか?
- 599 名前:デフォルトの名無しさん mailto:sage [04/04/11 19:46]
- yacc の勉強とかはみんなどこでやったんですか?
書籍は相当限られていると思うのですが。
- 600 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:34]
- yaccなんて1、2回使えばわかる気がするけど。
- 601 名前:デフォルトの名無しさん mailto:sage [04/04/11 21:53]
- >>599
みんな、yacc のソースコードを必死に読んだんだよ。 そのために bison はオープンソースになっているんじゃないか。 お前も頑張れ。 因みに yacc のスキャナ自体も yacc で書かれているが 頑張れば何とかなる。
- 602 名前:デフォルトの名無しさん [04/04/12 21:54]
- いやいや、yaccのサンプルはないの?
- 603 名前:デフォルトの名無しさん mailto:sage [04/04/12 22:55]
- >>602 >>88見れ
- 604 名前:名無し@沢村 [04/04/12 23:12]
- ちんぽ
- 605 名前:デフォルトの名無しさん mailto:sage [04/04/12 23:25]
- それで?
- 606 名前:デフォルトの名無しさん [04/04/18 09:21]
- >>603
書籍はもってるらしいぞ。
- 607 名前:デフォルトの名無しさん mailto:sage [04/04/23 00:13]
- gcc 3.4のC++パーサは手書きなんだと。
- 608 名前:デフォルトの名無しさん [04/04/24 23:06]
- >>607
みんな手書きだろう? 口述パーサなんてあるか?
- 609 名前:デフォルトの名無しさん mailto:sage [04/04/24 23:27]
- >>608
> みんな手書きだろう? 3.3.3まではyaccに生成させてたんだよ。 これは手書きとは言わんだろう?
- 610 名前: [04/04/24 23:48]
- ところで、コンパイラの仕事ってどうやって
発生するの? どんな会社がそういった仕事の最先端を行っているの? なんとなく興味あります わたしはしがない下請けなので コンパイラ、と聞くとちょいと憧れますね
- 611 名前:デフォルトの名無しさん mailto:sage [04/04/25 12:35]
- 知ってるけど教えてあげない
- 612 名前:デフォルトの名無しさん [04/04/26 19:19]
- >>609
なるほど、そういう意味ね!
- 613 名前:デフォルトの名無しさん [04/04/26 19:25]
- >>529
ほほえましいな。レス番違うし。
- 614 名前:デフォルトの名無しさん [04/04/26 19:36]
- >>613
- 615 名前:デフォルトの名無しさん mailto:sage [04/04/27 04:59]
- ワロタ
- 616 名前:デフォルトの名無しさん mailto:sage [04/04/27 23:10]
- じわじわ来るねw
- 617 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:26]
- すんません、Exceptionのthrowとcatchって、どうやって実装されてるんですか?
なんとなく、setjump()とlongjump()をつかうんだろうなーとは思うんですが、いまいち自信ないです。 どう実装してるのかを紹介したサイトなりがあれば教えていただけますか。 #「例外 実装」とかでぐぐってもそれらしいのは見つからない。
- 618 名前:デフォルトの名無しさん mailto:sage [04/05/08 09:44]
- exception setjmp longjump でググってみてみれ。
www.google.co.jp/search?q=cache:qXwDJ7nZF0EJ:maborosi.kobe-du.ac.jp/sugiura/soft/super/longjmp.htm+exception+setjmp+longjump
- 619 名前:618 mailto:sage [04/05/08 10:24]
- longjmp だった。言い訳なんかするもんか・・・
- 620 名前:デフォルトの名無しさん mailto:sage [04/05/08 11:06]
- How a C++ compiler implements exception handling
www.codeproject.com/cpp/Exceptionhandler.asp
- 621 名前:デフォルトの名無しさん mailto:sage [04/05/08 12:27]
- >>617
ちゃんとしたcontinuationがあれば、それを使って実装すればいい。
- 622 名前:デフォルトの名無しさん [04/05/09 00:19]
- どういう意味だ?
- 623 名前:!621 mailto:sage [04/05/09 00:48]
- >>622
exception を実装する為に continuation を実装するというのも本末転倒な感じが するけど。 ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html
- 624 名前:デフォルトの名無しさん [04/05/09 19:17]
- longjumpは制約が多すぎないか?
スクリプトレベルでうまく動かすためには、相当なサポートコードが必要に なると思うが…
- 625 名前:デフォルトの名無しさん mailto:sage [04/05/16 12:21]
- Rubyはlongjmp使ってなかったっけか。
- 626 名前:デフォルトの名無しさん mailto:sage [04/05/17 05:33]
- 自分も先読みが結構必要なときの
マッチしなかったときの処理にlongjmpを使ってるよ。
- 627 名前:デフォルトの名無しさん mailto:sage [04/05/18 09:34]
- >>610
ARM,MIPS,SHとかの組み込み用アーキテクチャとかなら新規開発したあとコンパイラもそれにあわせて最適化とかが必要だから仕事があるんじゃない?
- 628 名前:デフォルトの名無しさん mailto:sage [04/05/18 21:58]
- Schemeでいうcontinuationの機構を作りたいのですが、
setjmpとlongjmpの他に何が必要ですか? スタックの内容を退避しなければ駄目ってのはなんとなくわかるのですが。 インアセ使わずにC言語だけでできるものでしょうか? とりあえずi386以降で動けばいいです。
- 629 名前:デフォルトの名無しさん mailto:sage [04/05/19 02:28]
- >>628
「スタックなぞ一切使わない」というのが王道です。 すなわち、関数呼出しはCALLでなく、JMPになります。 return addressは、「次の処理の関数」として表現し、引数として渡すのです。 通常スタックフレームに置かれる変数は、ヒープに置くことになります。 関数型言語スレ(総合スレは荒れてるので、HaskellかML) で質問すると詳しい人が教えてくれるでしょう。
- 630 名前:デフォルトの名無しさん mailto:sage [04/05/19 19:26]
- ういー、むづかしそうです。
SchemeのCPSてやつですね。
- 631 名前:デフォルトの名無しさん mailto:sage [04/05/20 02:21]
- 「スタックなぞ一切使わない」という方法は、ここでいう (4) の前者だよね。
ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000018.html ttp://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2002-November/000019.html
- 632 名前:デフォルトの名無しさん mailto:sage [04/05/21 02:19]
- >>630
やりたいこととは違うと思うけど、Schemeを普通のCにコンパイルする方法。 home.pipeline.com/~hbaker1/CheneyMTA.html - 関数呼出しはCの関数呼出しとしてコンパイルされるが、CPSなのでreturnは決してしない - スタック領域をヒープとして用いる - スタックがあふれそうになったら、copying GCで新しいスタック領域に移し計算を続行する - GCのスタックを走査する部分にはCPUに依存しないので、Cだけで書ける 昔Sigplan Noticesで読んで面白いと思った。
- 633 名前:デフォルトの名無しさん mailto:sage [04/05/23 00:00]
- bison / yacc の使い方の質問です。
bison とか yacc って、みんな初めは電卓作りますよね。 3 + 5 (Return) って入力すると「画面上に」8をprintfするやつ。 これ、画面上で8を返すんじゃなくて、 yyparseの返り値とかそういう感じで yyparse の呼び出し元に 8 を何とかして知らせる方法ないですか? ただし、グローバル変数は使わないものとして。
- 634 名前:デフォルトの名無しさん mailto:sage [04/05/23 15:40]
- >>633
/usr/lib/yaccpar とか /usr/share/bison/bison.simpleを書き換える。 bisonは #define YYPARSE_PARAM foo を定義しておくと、void *fooが引数として渡されるから、アクションでその中に 答を入れて返すようにすればいいのでは。 プログラム中からyyparseを複数回呼出す場合は、先読みバッファの再初期化に注意。
- 635 名前:名無し@沢村 [04/05/24 21:41]
- おまいらよ、おれはつい最近つーか、たったいまさっきtcl/tkつーコンパイラの存在を知ったよ。
いまDLしてるところで、まだ開けて見てないんだが、Webでの説明を見た限りじゃなんか良さげだった。 つーか、GUIに関しては、Visual C++よりもちゃんとしたGUIアプリが簡単につくれるとのことだ。 ただ計算的な処理には不向きということだが、そこは何かC言語で書いて追加できるとのことだ。 おれはちょっとこのtcl/tkを調べてみるが、ホントにGUIに関して良さげだったら、いま開発中の「Vicual E++」は、 このtcl/tkで書き直してもいいな。Visual C++じゃエディタの予約語の色づけとかチョー面倒だしな… そして内部のメインの処理だけをC言語で書くようにすればいいからな… それができそうかどうかをまず調べてみようと思う。 次に調べたいことは、おれが次につくりたい高級言語に、tcl/tkはオープンソースらしいから、パクレる部分があるかどうかということだ。 ともあれ、おれのコンパイラの開発は飛躍的に前進しそうだな。 おまいらよ、おれはtcl/tkいま知ったぞ。おまいらは、tcl/tk知らなかっただろう?
- 636 名前:デフォルトの名無しさん mailto:sage [04/05/24 22:11]
- >>635
tcl/tkって「チックル・チーコ」って読むんだよね?
- 637 名前:デフォルトの名無しさん mailto:sage [04/05/24 23:11]
- >>635
お前だけ。
- 638 名前:名無し@沢村 [04/05/24 23:49]
- Tcl/Tk、DLしたが、何やこれわぁ!?スクリプトやないか?
実行ファイル作成できんのか?HSP以下か?ゴミソフト!!!
- 639 名前:デフォルトの名無しさん mailto:sage [04/05/25 00:46]
- セックル・チンコ
- 640 名前:デフォルトの名無しさん mailto:sage [04/05/25 01:35]
- >>638
tclsh, wish という位だから、tcl/tk は一種のシェルだよ。 C から system() でシェルのコマンドを実行するのと似た様な感じで使える。 まぁ、もちっと面倒だけど。 俺も以前 tcl/tk からパクれる所が無いかなとソース眺めてみたけど、 C で実装されている部分は低レベルな所だけだったような。
- 641 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:49]
- TclつったらPerlと同じくらい歴史の長いスクリプトなんだが
アホは知らなかったのね。
- 642 名前:デフォルトの名無しさん mailto:sage [04/05/25 10:54]
- >>641
言語で大事なのは歴史の長さよりも話者人口だよ。 歴史の短い Java をみんなが使うのはなぜだと思う? Algol や Prolog が滅びたのは?
- 643 名前:デフォルトの名無しさん mailto:sage [04/05/25 12:04]
- 今頃Tcl持ち出してくるなんて100%ネタだと思ってたんですが。
釣りだよね?親切に説明してる640が気の毒だ。
- 644 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:29]
- >>642
Algolはともかく、Prologは滅びてはいないだろ。 Algolにしたって、形を変えてその思想は受け継がれているわけだし。
- 645 名前:デフォルトの名無しさん mailto:sage [04/05/25 13:53]
- >>642
知名度の話をしてるんだが。なにが言語で大事なのは、だ。 かってに妄想してチンコ膨らましてんじゃねーよキモイ。
- 646 名前:デフォルトの名無しさん mailto:sage [04/05/25 19:15]
- 642じゃないけど、
妄 想 ま で 制 限 さ れ て た ま る か 妄想でチンコ膨らそうぜ
- 647 名前:デフォルトの名無しさん mailto:sage [04/05/25 21:40]
- >>642
Tclはハード設計ツールの組込みスクリプト言語ではメジャーです。 (Tclはいやだけど、独自言語よりはましだよな) もともとTclはアプリ組込み用だし。tclshもwishも組込みのサンプル みたいなもんです。
- 648 名前:デフォルトの名無しさん mailto:sage [04/05/25 22:13]
- でも結局、Tk のほうが Tcl よりも何倍もメジャー。
- 649 名前:名無し@沢村 [04/05/26 21:18]
- Starpack
Tcl/Tkでつくったスクリプトを実行ファイルに変換するツールだな。 が、わし英文読めんけん、このページのどっからDLしていいかわからんのよ。 このページの何行目の何という文字をクリックするとDLできるか、教えて〜♪ www.interq.or.jp/japan/s-imai/tcltk/tclkit.html
- 650 名前:デフォルトの名無しさん mailto:sage [04/05/26 21:45]
- 沢村師ねよ
- 651 名前:デフォルトの名無しさん [04/05/29 19:38]
- ここは沢村を呪うスレとなりました。
- 652 名前:デフォルトの名無しさん mailto:sage [04/05/29 22:11]
- -=、 ̄`―''" |\ `'''―'''" | || |ヽ、_____,へ、
,...--、 `―‐ァ‐...::', \:::::::::::::::::::: | || |ヽ、___,ヘ、| ┌───┐ i´ ,. ' ..::....`'''‐--‐''"~...:::::::::ヽ ` 、::::::::::::::::| || | ┌─┐ i´ | | │ | -=ニ"_,...、-- ヾヽ、::::::::::::::::::::::::::::::::ヽ `、 `,::::::| || | | │ | | | .| | `''‐-`ヽ.`''‐-..._:::::::〃:::l:::l`ヽ..ノヽヾ,: | || | | │ | | |____| | ,..-‐''''‐----'":::::::`ヽ、 /l:/|::::/l:::lヾ.‐'""' i| l | || | | │ | |.┌─‐┐┌┐.| __,. ' ......:::::::::::::::::::::::::::::::::::: `''1 l! l::::i lヾ|,...-==l. l:| || | └─┘ | |ノ ,ヘ、 | | レ' `ー--‐' ̄`> ....:::::::::::::::::ノ.._,...ヾ!ノ-':::/~ ノ i | || .| | ̄ ̄|ノ / /` .| | ,.. '" ...::::::::::::::::::::::::::ヽ< ̄`>'" `ー‐‐''"ノ..| || |ノ / / | | -‐'"゛`''‐''" .......::::::::::::::::::::::::::::::::::::::{ `‐',ヘ | ,..、_ .| || / / | | /| ....__...:::::::::::::::::::::::::::::::::::::::::::::::::::::::!、 ! ,..-` ,. | || /./ .| | . / | -"--- ....___,...--- ._::::::::::::::::::::`、 `‐' _ィ' V| || ._ _/./ . | └──'´ .,) , '" ̄..::::::::::::::::::::::::::〉__,..w、ァ'"Vハノ | || `ー─‐'´ `ー───'´ ,..--- ....__,. ' ....:::::::::::::::::::::::::::::::::::::::::Vi,..ハ---'" | || ,. ' .....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::'、. ― .| || -=-‐-‐'゛`''‐-.._ _,..-----==- .:::::::::::`ー.`--‐'",'| ||
- 653 名前:デフォルトの名無しさん mailto:sage [04/05/30 08:43]
- 沢村が全てを台無しにしたんだな。
- 654 名前:デフォルトの名無しさん mailto:sage [04/06/02 01:19]
- マルチスレッドが良く分からない。マルチスレッドなコードを生成するのには
コンパイラ側で何かしてあげなくてはいけない事があるのでしょうか。 それともランタイム環境の問題なのかな。
- 655 名前:デフォルトの名無しさん mailto:sage [04/06/02 03:04]
- tls(thread local storage)なんてのが言語仕様として定義されていればコンパイラはそれを意識する必要があります。
- 656 名前:デフォルトの名無しさん mailto:sage [04/06/02 07:57]
- >>655
完全にライブラリレベルなのかなと思っていたのですが、そういう訳でもないんですね。 pthread ライブラリを wrap して、他のライブラリも MT-Safe に作れば良いのかと 思ってました。どうもありがとうございます。
- 657 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:05]
- インタープリタなんかではスレッド作るとそのスレッド専用の VM が起動する処理系が
あるみたい。コンパイルされる言語でも、スレッド毎にランタイム環境を作ってあげれ ば良いのかな。
- 658 名前:デフォルトの名無しさん mailto:sage [04/06/09 22:48]
- >>657
コンパイルされる言語の場合は、ホスト環境のpthreadライブラリを呼び出す様に すればいいのでは? 今後主流になると思われるSMP環境を考えたら、複数のCPUを有効に使えるかも
- 659 名前:デフォルトの名無しさん mailto:sage [04/06/10 00:20]
- >>658
pthread_create() が C の関数を引数に取るので、クロージャとかを渡したい場合に 何となく面倒じゃないかなと思ってました。変数部分は引数として渡してあげれば 問題無いような気がしてきました。
- 660 名前:デフォルトの名無しさん mailto:sage [04/06/16 10:58]
- bison と flex を使っています。
flex では yylval をガンガン使っています。 bison で %pure_parser したら flex が吐き出す C コードのコンパイルで氏にました。 どうすれば %pure_parser しても yylval (と同じような機能) を flex で使えるでしょうか。
- 661 名前:デフォルトの名無しさん mailto:sage [04/06/16 16:28]
- >>660
自己レス www.timeparadocs.net/bab/flex_bison/flex_bison.htm これで解決しますた。 が、flex のファイルに yylval.hoge と書いていたのを yylval->hoge と書かないと逝けないようです。
- 662 名前:デフォルトの名無しさん mailto:sage [04/06/17 23:22]
- boostのspiritっていじって遊ぶにはよいけど、
実際問題使えるものなのかな?
- 663 名前:デフォルトの名無しさん [04/06/18 16:14]
- boost::spirit便乗質問なんですがパースした後
parse_infoのfullを調べるとエラーが発生したか確認できますが エラーが発生した行番号を取得するにはどうやったら良いんでしょうか?
- 664 名前:デフォルトの名無しさん mailto:sage [04/06/18 21:33]
- position_iterator(勘
- 665 名前:デフォルトの名無しさん [04/06/19 22:30]
- うわ、みてみると確かにそれらしい気配が・・・
しかし、よく意味が分からない罠・・・
- 666 名前:読まずにレス mailto:sage [04/06/22 00:47]
- JJTreeでJVM上で起動するスクリプトを書くのはアリですか?
- 667 名前:デフォルトの名無しさん mailto:sage [04/06/22 10:17]
- だめ
- 668 名前:デフォルトの名無しさん [04/06/23 23:35]
- このようなコンパイラ誰か作ってもらえません?
イメージ的にはVMを介さない.NETみたいな。 開発の形態はApacheみたいに元となるものがあって ユーザーが拡張プラグインを自由に作って公開できるようなのがいいな。 ・ネイティブコードを吐く ・OSは問わない ・VMなどを介さない ・メインとなる構文はあるが、ユーザーが自由に構文を追加・変更できる。
- 669 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38]
- >>668
D言語でええやん
- 670 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:38]
- >>668
ttp://hp.vector.co.jp/authors/VA015412/
- 671 名前:デフォルトの名無しさん mailto:sage [04/06/23 23:42]
- >>669
D言語って名前くらいは聞いたことあるんですけど、 >>668で書いたようなことを実現しているんでしょうか?
- 672 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:03]
- Lisp系を使えばいいんでないかとオモタ
- 673 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:15]
- >>668
このようなコンパイラ誰か作ってもらえません? というクレクレな割に > ・ネイティブコードを吐く > ・OSは問わない いきなりハードル高い
- 674 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:25]
- >>673
APIの類を使わなければ大丈夫 CPUは限定されるが
- 675 名前:読まずにレス mailto:sage [04/06/24 00:36]
- ダメですか…orzガックリ こっそり作ることにします。
- 676 名前:デフォルトの名無しさん mailto:sage [04/06/24 00:39]
- .NETだから、膨大なライブラリで動的な言語で言語非依存のバイナリインターフェイスを持ってないとダメだな
- 677 名前:デフォルトの名無しさん mailto:sage [04/06/24 02:13]
- >>668
死ねボケ
|

|