<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www6.atwiki.jp/compilerandscriptengine/">
    <title>「コンパイラ・スクリプトエンジン」相談室@Wiki</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/</link>
    <description>「コンパイラ・スクリプトエンジン」相談室@Wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2011-01-09T07:46:42+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/1.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/10.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/3.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/9.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/5.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/17.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/16.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/15.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/13.html" />
                <rdf:li rdf:resource="http://www6.atwiki.jp/compilerandscriptengine/pages/14.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/1.html">
    <title>トップページ</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/1.html</link>
    <description>
      * このページについて
　このページは、[[2ちゃんねるプログラミング技術板&gt;http://pc8.2ch.net/tech/]]のスレッド「コンパイラ・スクリプトエンジン相談室」のまとめページです。

1 ：デフォルトの名無しさん ：2005/11/06(日) 19:45:18 
プログラミング言語処理系の開発に興味のある人達のスレッドです。 

字句解析・構文解析から，データフロー解析，ループ並列化，データ分散，SSA変換， 
CPS変換，レジスタ割付，命令スケジューリング，ソフトウェアパイプライン， 
SIMD命令生成，VLIW向けクラスタリング，スクラッチメモリ向け最適化，リンク時最適化， 
[[JIT]]，動的バイナリ変換等の各種最適化，それにVM，GC，低消費電力化などなど。 
意味論に関する話題も歓迎です。 

スレッド一覧
1 http://pc.2ch.net/tech/kako/981/981672957.html 
2 http://pc2.2ch.net/test/read.cgi/tech/1021136715/ 
3 http://pc5.2ch.net/test/read.cgi/tech/1070089173/ 
4 http://pc5.2ch.net/test/read.cgi/tech/1100097050/ 
5 http://pc8.2ch.net/test/read.cgi/tech/1106129164/ 
6 http://pc8.2ch.net/test/read.cgi/tech/1115335709/ 
7 http://pc8.2ch.net/test/read.cgi/tech/1129287390/ 
8 http://pc8.2ch.net/test/read.cgi/tech/1131273918/
9 http://pc8.2ch.net/test/read.cgi/tech/1135082582/
10 http://pc8.2ch.net/test/read.cgi/tech/1146844753/
11 http://pc11.2ch.net/test/read.cgi/tech/1160879890/
12 http://pc11.2ch.net/test/read.cgi/tech/1188688416/
13 http://pc12.2ch.net/test/read.cgi/tech/1233143342/
14 http://hibari.2ch.net/test/read.cgi/tech/1258431145/ (現行スレ)

*ToDo
HSPやVBが一般ピーポーにうける理由を考える

*コメント
#comment

**更新履歴
#recent(20)    </description>
    <dc:date>2011-01-09T07:46:42+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/10.html">
    <title>構文解析</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/10.html</link>
    <description>
      * 構文解析

- Yacc
- Bison
-- http://www.geocities.co.jp/SiliconValley-Oakland/3432/man/bison/bison-ja.html

- パーサ・コンビネータ
- caper
- JavaCC
-- https://javacc.dev.java.net/
-- いろんな言語の文法 https://javacc.dev.java.net/servlets/ProjectDocumentList?folderID=110

- Rats (簡単に構文を拡張できるパーサジェネレータ)
-- http://www.cs.nyu.edu/rgrimm/xtc/rats.html

- PEG (解析表現文法)，Packrat Parser
-- http://pdos.csail.mit.edu/~baford/packrat/
-- http://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95    </description>
    <dc:date>2009-11-17T13:39:25+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/3.html">
    <title>関連リンク</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/3.html</link>
    <description>
      関連リンクece9045df9345c4aee876cb5a2cc2c44* コンパイラ一般

- 色々なツールの紹介 
　http://catalog.compilertools.net/ 
- コンパイラ関連のリンク集 
　http://www.ulis.ac.jp/~nakai/rel_web_compilers.shtml 
- スクリプティング言語資料室(仮) (リンク集) 
　http://www.kt.rim.or.jp/~kbk/ 
- Compiler Construction 
　http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/2000/compiler/index.html 
- Compiler Construction　(1997) 
　http://rananim.ie.u-ryukyu.ac.jp/~kono/lecture/1997/compiler/compiler.html 
- 情報システム工学実験 III コンパイラ・コンパイラ 
　http://math.cs.kitami-it.ac.jp/~fuchino/proin/experimentIII-2000/jikken.html 
- OS/Programming 簡単な C コンパイラ 
　http://www.csg.is.titech.ac.jp/~chiba/lecture/os/ 
- 正規表現 
　http://hp.vector.co.jp/authors/VA007799/viviProg/doc_regexp.htm 
- コンパイラ研究・開発情報の一集積所 
　http://compilers.cs.uec.ac.jp/ 消えているのでアーカイブで
　http://web.archive.org/web/*/compilers.cs.uec.ac.jp/
- Links and Selected Readings 
　http://www.gnu.org/software/gcc/readings.html 
- 国産のコンパイラ共通インフラストラクチャCOINS 
　http://www.coins-project.org/ 

* 字句・構文解析 

- Lex and YACC primer/HOWTO （邦訳） 
　http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO.html 
- Turbo Pascal Lex/Yacc 
　http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html 
- Jim Roskind&#039;s LALR(1) C++ Grammar 
　http://www.empathy.com/pccts/roskind.html 
- Flexと Bisonを同時に使う 
　http://guppy.eng.kagawa-u.ac.jp/~kagawa/1999/SysProg/both.html 
- KITE_ASM (yacc,lex) 
　http://www.arch.cs.kumamoto-u.ac.jp/project/kite/kiteasm/ 
- bison用のC++ LALR skeleton 
　http://www.bj-ig.de/software/bison/ 
- ANTLR（非yaccのパーサジェネレータ） 
　http://www.antlr.org/ 
- JavaCC(Java Compiler Compiler) 
　https://javacc.dev.java.net/ 
　http://village.infoweb.ne.jp/~fwif0083/program/java/javacc/javaccgrm.html 
　http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/JavaCCHelloWorld.html 
- CUP, JLex, JFlex 
　http://www.cs.princeton.edu/~appel/modern/java/ (JLex, CUP) 
　http://www.jflex.de/ 
- SableCC 
　http://www.sablecc.org/ 
- ￢＜＞＜∪∪ （notavacc）LALR(1) 
　http://ne.cs.uec.ac.jp/~koto/notavacc/ 
- boost::spirit（C++のテンプレートでEBNFの構文を模倣） 
　http://spirit.sourceforge.net/ 
　http://boost.cppll.jp/HEAD/libs/spirit/index.html（マニュアル日本語化プロジェクト） 
　http://www.fides.dti.ne.jp/~oka-t/cpplab-boost-spirit.html 
- PEG(解析表現文法)，Packrat Parser
　http://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E8%A1%A8%E7%8F%BE%E6%96%87%E6%B3%95
- caper
　http://naoyuki.hirayama.googlepages.com/caper.html

* ごみ集め 

- GC FAQ -- draft 
　http://www.iecc.com/gclist/GC-faq.html 
- A garbage collector for C and C++ 
　http://www.hpl.hp.com/personal/Hans_Boehm/gc/ 
- 一般教養としての Garbage Collection 
　http://www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html 
- Garbage Collection : Algorithms for Automatic Dynamic Memory Management 
　http://www.amazon.com/exec/obidos/ASIN/0471941484/
- OmicronTikiの「GC」のページ
　http://tiki.is.os-omicron.org/tiki.cgi?c=v&amp;p=GC 
- OmicronTikiの「プログラミング言語とGC」のページ
　http://tiki.is.os-omicron.org/tiki.cgi?c=v&amp;p=GC
- Microsoft .NET のすべて　ガベージコレクション入門
　http://www.microsoft.com/japan/msdn/net/mag00/GCI.asp

* 処理系,スクリプト 
- kikyou.info (吉里吉里というゲームのスクリプト) 
　http://kikyou.info/ 
- tiny C コンパイラ (C) 
　http://www.watalab.cs.uec.ac.jp/tinyCabs.html 
- 6809用 Micro C コンパイラ 
　http://www.axe-inc.co.jp/pds/mc09.html 
- Portable Object Compiler (Obj-C &gt;&gt; C のトランスレータ？) 
　http://users.pandora.be/stes/compiler.html 
- 自作コンパイラの部屋(PL/1, Pascal等) 
　http://www.tokumaru.org/ 
- 『Rubyソースコード完全解説』サポートページ 
　http://i.loveruby.net/ja/rhg/ 
- 『やさしい Lisp の作り方』『やさしい Java インタプリタ の作り方』 
　http://www.okisoft.co.jp/esc/go.html 
- MSによるPEフォーマット仕様書(日本語) 
　http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html 

* 参考書籍 

- コンパイラ　原理・技法・ツール　１＆２ 
　http://www.amazon.co.jp/exec/obidos/ASIN/4781905854/ 
　http://www.amazon.co.jp/exec/obidos/ASIN/4781905862/ 
　通称ドラゴンブック。バイブル。 
- コンパイラ構成法　原田 賢一 
　http://www.amazon.co.jp/exec/obidos/ASIN/4320029224/ 
　http://www.hara.cs.keio.ac.jp/kCompiler/　(ソース、正誤表のダウンロード) 
- プログラミング言語処理系 岩波講座 ソフトウェア科学〈5〉 佐々 政孝 
　http://www.amazon.co.jp/exec/obidos/ASIN/4000103458/ 
　一冊で済ませたい人へ。 
- コンパイラの構成と最適化 中田 育男 
　http://www.amazon.co.jp/exec/obidos/ASIN/4254121393/ 
　最適化がメインだが、構文解析からコード生成までの基本事項も解説されている。 
- コンパイラの仕組み　渡邊　坦 
　http://www.amazon.co.jp/exec/obidos/ASIN/4254127081/ 
　薄い奴(185p)を読みたい人に。 
- 21st Century Compilers (Alfred V. Aho, Sethi, Ravi Sethi, Jeffrey D. Ullman, Monica Lam) 
　http://www.amazon.co.jp/dp/0321210913 (ペーパーバック。現在入手不能!?)
- スモールコンパイラの制作で学ぶプログラムのしくみ 
　http://www.cbook24.com/bm_detail.asp?sku=4774121770 
　初心者向けの優しい解説本。 
- いまどきのプログラム言語の作り方
　http://www.cbook24.com/bm_detail.asp?sku=4839919232
　Javaで作る、俺流インタプリタ
--http://soopy.sourceforge.jp/


* 学会 
- PLDI 
　http://research.microsoft.com/conferences/pldi06/ 
　コンパイラの研究に関する最新成果を知りたければまずはここ。 
- POPL 
　http://www.cs.princeton.edu/~dpw/popl/06/ 
　PLDIよりは理論寄りだが大いに参考になる。 
- ICFP 
　http:// icfp06.cs.uchicago.edu/ 
　関数型言語に関する学会。とても難しい。 
- OOPSLA 
　http://www.oopsla.org/ 
　オブジェクト指向言語に関する学会。最近はやや低調？ 
- ICCC 
　http://www.st.cs.uni-sb.de/cc/ 
　ヨーロッパ系。派手さはないが堅実。     </description>
    <dc:date>2009-02-03T12:29:48+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/9.html">
    <title>字句解析</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/9.html</link>
    <description>
      * 字句解析
-[[Flex]]
** Manpage of FLEX
http://www.linux.or.jp/JM/html/flex/man1/flex.1.html
** Flex
http://www.geocities.co.jp/SiliconValley-Oakland/3432/man/flex/flex-ja.html

-[[JFlex]]    </description>
    <dc:date>2007-04-01T20:46:23+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/5.html">
    <title>言語別リンク</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/5.html</link>
    <description>
      入門ページなどではなく、処理系作成に当たってちょっとは役に立ちそうなページを挙げていくページ。

* JavaScript
- JavaScript 深層
　http://www.hawk.34sp.com/stdpls/jsnotes/jssinso/
- JavaScript: 世界で最も誤解されたプログラミング言語
　http://d.hatena.ne.jp/brazil/20050829/1125321936
- JavaScript 講座
　http://starry.night.nu/web/prog/javascript/
- 檜山正幸のキマイラ飼育記 プログラマのためのJavaScript
　http://d.hatena.ne.jp/m-hiyama/20050808/1123486683
* Ruby
- 『Rubyソースコード完全解説』サポートページ
　http://i.loveruby.net/ja/rhg/index.html
- Rubyの欠点
　http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby%A4%CE%B7%E7%C5%C0
* Perl(Parrot)
- Parrot 入門 - The Parrot Primer
　http://www.namikilab.tuat.ac.jp/~sasada/prog/parrot-intro.html
* Lisp
- Lisp製作講座
　http://www.roy.hi-ho.ne.jp/pastel/home/Lisp/

* その他
- プログラミング言語を作る(crowbar)
http://kmaebashi.com/programmer/devlang/index.html    </description>
    <dc:date>2007-04-01T20:39:34+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/17.html">
    <title>JFlex</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/17.html</link>
    <description>
      *JFlex    </description>
    <dc:date>2007-03-09T17:21:01+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/16.html">
    <title>Pnuts</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/16.html</link>
    <description>
      *Pnuts    </description>
    <dc:date>2007-03-09T17:19:58+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/15.html">
    <title>JIT</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/15.html</link>
    <description>
      *JIT

-openjit
オープンソースのJITインストラクチャ

http://www.openjit.org/publications/pro1999-08/frontend-pro-199908.htm
http://www.openjit.org/

-XBYAK

XbyakはIA32(x86)のマシン語命令をプログラム実行時に動的に生成できます。
http://homepage1.nifty.com/herumi/soft/xbyak.html

**エミュレータ

-pcsx
MIPSのR3000AのJITの例
srcのx86ディレクトリ以下を見るとよい。

http://www.pcsx.net/


*OS Dev

http://wiki.osdev.info/?%C6%B0%C5%AA%A5%D0%A5%A4%A5%CA%A5%EA%CA%D1%B4%B9

結構わかりやすい気がする。    </description>
    <dc:date>2007-02-23T13:26:24+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/13.html">
    <title>最適化</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/13.html</link>
    <description>
      *最適化

-[[SSA最適化]]
-[[データフロー解析]]
-[[ループ並列化]]
-[[SSA変換]]
-[[CPS変換]]
-[[レジスタ割付]]
-[[命令スケジューリング]]
-[[ソフトウェアパイプライン]]
-[[SIMD命令生成]]
-[[VLIW向けクラスタリング]]
-[[スクラッチメモリ向け最適化]]
-[[リンク時最適化]]
-[[JIT]]
-[[動的バイナリ変換等の各種最適化]]
-[[VM]]
-[[GC]]
-[[低消費電力化]]

どれが最適化なんだろう？謎だ。    </description>
    <dc:date>2007-02-23T13:13:34+09:00</dc:date>
  </item>
    <item rdf:about="http://www6.atwiki.jp/compilerandscriptengine/pages/14.html">
    <title>SSA最適化</title>
    <link>http://www6.atwiki.jp/compilerandscriptengine/pages/14.html</link>
    <description>
      *SSA最適化

**SSA形式

Static Single Assignment form 静的単一代入形式の略


変数をユニークにするために添え字を付けた中間表現形式


***例
a = 1
a = a + 1
を
a0 = 1
a1 = a0 + 1


と書き換えると、ユニークになる。


http://www.coins-project.org/COINSdoc/lirOpt/ssa.html

**SSA最適化で行える最適化
-コピー伝播
-条件分岐を考慮した定数伝播
-支配関係に基づく共通部分式除去
-無用命令除去
-無用φ命令除去
-空ブロック除去
-ループ不変計算のループ外移動
-ループの帰納変数に関わる演算の強さの軽減と判定の置き換え

**SSA変換
-支配辺境を用いる方法（Cytronらによる方法）
-DJグラフを用いる方法による変換時間（Sreedharらによる方法）
α変換ともいう？
http://min-caml.sourceforge.net/tutorial-mincaml-10.htm

**SSA形式からの逆変換
-Briggsらの方法
-Sreedharらの方法

Sreedharらの方法に優位性がある。    </description>
    <dc:date>2007-02-23T13:06:58+09:00</dc:date>
  </item>
  </rdf:RDF>

