タグ

compilerに関するtanakaBoxのブックマーク (94)

  • Parsec, 高速なコンビネータパーサ

    文書は次に掲げる URL で示される文書の部分的な邦訳です。 http://www.cs.uu.nl/people/daan/download/parsec/parsec.html Parsec, 高速なコンビネータパーサ Daan Leijen University of Utrecht Dept. of Computer Science PO.Box 80.089, 3508 TB Utrecht The Netherlands daan@cs.uu.nl, http://www.cs.uu.nl/~daan Parsec, 高速なコンビネータパーサ Daan Leijen University of Utrecht Dept. of Computer Science PO.Box 80.089, 3508 TB Utrecht The Netherlands daan@

    tanakaBox
    tanakaBox 2009/09/15
    コンビネーターパーサーってなんだろう?
  • JIT コンパイルまとめ - higepon blog

    Mosh のパフォーマンスを向上させたいので JIT コンパイル周りを調べてみました。誤りや不足がありましたらご指摘いただけると助かります。 何か? Just in time コンパイルの略。実行時に必要になった時点で動的にコードを生成する仕組み。 VM 型のインタプリタにおいて、実行時に bytecode を native code にコンパイルすることを指すことが多い。 必要になった時点のコンパイルではあるが、Pre-JIT のように起動時にまとめて JIT コンパイルする場合もある。 目的・効果 インタプリタの良いところを維持しつつインタプリタ実行速度を高速化。AOT コンパイラが出力するコードの速度に近づける。 JIT が AOT (Ahead of time)と比較して有利な点 実行時の統計情報を利用できる 実行ホストに最適化されたコードを利用できる JIT コンパイルされる対象

    JIT コンパイルまとめ - higepon blog
  • Yaneu Labs --- コンピュータ将棋プログラムをLISPで書く

    *[hatefu:labs.yaneu.com/20090905/] コンピュータ将棋プログラムをLISPで書く 「コンピュータ将棋プログラムをLISPで書く」と言うとコンピュータ将棋開発関係者にすら完全にネタかと思われているのが実状ではあるが、私はこれを機にその誤解を解いておきたい。 ここでは、私がC#で書いたLISPエンジンのソースを公開し、これが実際にコンピュータ将棋プログラムの開発において非常に有効であることを示す。 * YaneLisp version 1.10 今回の記事はあまりに長文なので最後まで読む前に眠くなる人のために、まず始めに私が実装したLISPのバイナリとソースを配布しておく。ライセンスはNYSLとする。 勢いに任せて実装したので、かなり雑な作りだが、必要ならばC#側で関数を追加するなりすればいいと思う。このLISPの製作に要した時間は丸2日ぐらい。 # YaneL

    tanakaBox
    tanakaBox 2009/09/06
    パーサーが楽。機能拡張が容易に出来る。繰り返しの抽象をネイティブに任せちゃえば、簡単な実装でも速度は出る。時間があればソース読んでみよ~
  • ガベージコレクションの実装法と評価

    1.はじめに プログラミング言語とはシステム化する対象物を抽象化し、コンピュータで処理可能なコードを記述するために用いる人工言語である。プログラミング言語はコンピュータの機械語と一対一の対応をもったアセンブラから始まり、コンパイラを用いて機械語に翻訳することを前提としたコンパイラ言語、インタプリタと呼ばれるプログラムがソースコードを解釈し実行するスクリプト言語と、記述できる抽象度を高める方向へと進化してきた。 プログラミング言語はその存在理由から、より抽象度の高い記述が行えること、すばやい開発を行える事が求められる。抽象度の高い記述とは、プログラムがどういう処理を行うか(HOW)ではなく何の処理を行うか(WHAT)を記述しやすい構文、機能を持っていることを、すばやい開発とは記述性の高さ、コードの密度の高さ、バグの発生しにくい構文、機能を持っていることをさす。 この抽象度の高い記述、すばやい

  • https://www.kb.ecei.tohoku.ac.jp/~sumii/pub/cps.pdf

    tanakaBox
    tanakaBox 2009/07/28
    例外処理機構を備えた命令型言語のCPS変換とその定式化
  • https://cs.indiana.edu/~dyb/papers/3imp.pdf

    tanakaBox
    tanakaBox 2008/04/30
    VMの実装に関する論文。
  • d.y.d.構文解析の話をしよう

    16:46 08/03/30 YZ1.DLL 0.30 リリース しました。 具体的には、ヘッダの格納ファイル数フィールドに実際より大きい値が入ってると変なとこ読もうとして落ちるバグ修正。 GreenPad の修正は来週くらいには…。 Booooooost Boost 1.35.0 来てました。 Asio と Fusion と GIL の三枚看板がでかいですが、Bimap が地味に便利だ。 あと、mbさんのEgg のレビューが明日からでしょうか。(また スケジュール から消えてますが…Protoが入る前までロールバックしてる?) 他人事ながらドキドキ。 17:36 08/03/28 ケース 十年来の疑問なんですが、"case" に単独で対応する日語ってなんになるんですかね。 "case-insensitive" や "lowercase" の "case"。単に "case-insens

    tanakaBox
    tanakaBox 2008/04/04
    良い解説。LLとLRを作ったことがあるってことか。その後は未経験。
  • Scheme - Mona OS developers Wiki

    2020-06-30 Google high DA links 2020-06-26 MonaServer 2020-06-15 High DA sites for link building 2020-05-27 High Authority 55 do-follow backlinks list 2020-05-22 High DA backlinks for 55 best link building 2020-05-14 top 55 high DA backlinks for best link building top 60 high DA backlinks for best link building top 75 high DA backlinks sites list top 70 high DA backlinks sites list top 80 high DA

    tanakaBox
    tanakaBox 2008/02/29
    ひげぽんのScheme実装メモ。
  • An Incremental Approach to Compiler Construction | Lambda the Ultimate

    Abdulaziz Ghuloum (Indiana University), An Incremental Approach to Compiler Construction Compilers are perceived to be magical artifacts, carefully crafted by the wizards, and unfathomable by the mere mortals. Books on compilers are better described as wizard-talk: written by and for a clique of all-knowing practitioners. Real-life compilers are too complex to serve as an educational tool. And the

    tanakaBox
    tanakaBox 2008/02/28
    Schemeで作るネイティブコンパイラ。
  • File Not Found: Indiana University

    File Not FoundSorry for the inconvenience, the page you requested could not be found.

    tanakaBox
    tanakaBox 2008/02/28
    Schemeで作るコンパイラ。
  • Redirection

    This page has moved to http://bellard.org/tcc/. You will be redirected to it in a few seconds. Update your bookmarks !

    tanakaBox
    tanakaBox 2008/02/28
    小さいと言えば小さいけど、3万行ある。
  • D. Souflis, J. Shapiro - TinyScheme Home

    Dimitrios Souflis dsouflis@acm.org Kevin Cozens kevin@REMOVEMEve3syb.ca Jonathan S. Shapiro shap.nospam@eros-os.org TinyScheme is a lightweight Scheme interpreter that implements as large a subset of R5RS as was possible without getting very large and complicated. It is meant to be used as an embedded scripting interpreter for other programs. As such, it does not offer IDEs or extensive toolkits a

    tanakaBox
    tanakaBox 2008/02/22
    小さなScheme処理系。驚いたことに再帰が全く無い。
  • コンパイラの作り方 (詳解)

    tanakaBox
    tanakaBox 2008/02/13
    CPS変換とか。
  • 速攻MinCamlコンパイラ概説

    tanakaBox
    tanakaBox 2008/02/12
    ML系のつくりかた。凄い。
  • LISPMEMO

    Emacs から SLIME を起動すると (http://lispuser.net/emacs/lisphacking.html , http://lispuser.net/commonlisp/clisp.html 参照) 、 CL-USER> というプロンプトが表示されていると思います。 CL-USER> ここに、プログラムを入力することで、 Lisp にプログラムを解釈させて結果を確認することができます。 さっそく Lisp にプログラムを実行させてみましょう。 CL-USER> (+ 1 2) 3 これは、 1 + 2 を計算させるプログラムです。 (+ 1 2) の意味は、関数 + パラメータとして 1 と 2 を渡す、という意味になります。 乗算を行いたい場合には関数 * を使用してみてください。 CL-USER> (* 3 4) 12 もちろん、式を入れ個にする事もできます

    tanakaBox
    tanakaBox 2008/02/12
    楽しげ。やっぱLispはLispで作るのがイイかも!!
  • 俺様言語 Lazy を作る。その6。祝!遅延評価完成! - 言語ゲーム

    実行環境: http://languagegame.org/pub/lazy/Lazy.html ソースコード: http://languagegame.org/dev/!svn/bc/32/trunk/lazy/Lazy.js (343 行) 屈折四ヶ月。やりました!ようやく最初の目的だった遅延評価が完成しました!しんどいのでメモだけ。ほとんど SICP 4.1 章と同じやり方です。 関数を適用する際に、引数を評価せず Thunk という物で包む。サンク = 式 + 環境 Thunk は force と言うメソッドで再帰的に中を force し値を取り出す。 関数を適用する際に、関数自体は force する。 関数を適用する際に、プリミティブなら引数も force する。 たったこれだけで遅延評価できます。Haskell のに書いてある、パターンマッチの時だけ force するというの

    俺様言語 Lazy を作る。その6。祝!遅延評価完成! - 言語ゲーム
    tanakaBox
    tanakaBox 2008/02/05
    遅延評価Lisp。おもろい。SICP読まないと・・・。
  • COSAK

    初めての方は、仕様やサンプルソースをお読みください。 更新履歴 [2007/04/14] 完成 [2007/07/13] 公開 [2011/06/19] Iコンビネータおよび、Iコンビネータを生成する^^を追加 概要 COSAK(Constructed from Only S And K)はその名の通り、"S"と"K"だけから構成される関数型(?)言語です。 構文として、sとkと、それらを使った関数適用しか用意していません。関数抽象なんてどうでもいいです。 もちろん変数なんてありません。これで変数のスコープがどうとかいうことで悩む必要はなくなりましたね。 こう書くと、何も出来なさそうですが、実は、高階関数(のようなもの)を使えるなど、その表現力は意外と高いです。 実用的かどうかは、サンプルソースを見て実際に試してみて考えてください。すぐに分かります(笑) 入力: 出力: 仕様 構文: fo

    tanakaBox
    tanakaBox 2008/02/04
    unlambdaライクな言語。(((s k) k) s)
  • A正規形まとめ - Scheme VM を書く - higepon blog

    A正規形についてまとめました。日語の資料があまりに少ないのでまとめたのですが、正直理解できているか不安です。間違いを含んでいる可能性がある点にご注意ください。 間違いのご指摘やツッコミ大歓迎です。 あと念のため書いておきますが題材は、Schemeですが、A正規形自体はLispやSchemeに特化した話ではなく、もっと一般的な話です。 A正規形の論文 The Essence of Compiling with Continuations - Flanagan, Sabry, Duba, Felleisen (ResearchIndex)という論文で解説されています。 この論文を読んで自分なりに理解できたことをここに書いています。 理解の前提 Scheme の let 式が分かっていないと理解が難しいかもしれません。 A正規形は何の役にたちますか? コンパイラのコード生成時の中間表現として使

    A正規形まとめ - Scheme VM を書く - higepon blog
    tanakaBox
    tanakaBox 2008/02/02
    最適化なんていつの日になることやら・・・。
  • Ikuo NAKATA's HomePage

    〒184-8584 東京都小金井市梶野町3-7-2 法政大学 情報科学研究科 客員教授(2008年3月31日まで) 著書 中田育男: 「コンパイラの構成と最適化」第2版 朝倉書店,東京, 2009. 中田育男,渡辺坦,佐々政孝,滝宗宏: 「コンパイラの基盤技術と実践」 ーコンパイラ・インフラストラクチャCOINSを用いてー 朝倉書店,東京, 2008. 文中のいくつか例題と正誤表はウェブページ にあります. 中田育男: 「コンパイラの構成と最適化」 朝倉書店,東京, 1999(現在第7刷). 2000年度大川出版賞受賞 中田育男: 「コンパイラ」 オーム社, 東京, 1995(2010年12月第17刷). (PL/0'コンパイラのJava版、 JavaCC版、 yacc版もあります。また、COINS版は、 COINSのホームページの「Coins を使って新たなコンパイラを作る」の項にあ

    tanakaBox
    tanakaBox 2008/01/29
    中田先生のところ。
  • わーい \(^o^)/ PL/0を JS で書いたよー! - ockeghem's blog

    最近、JavaScriptで小さな処理系を書くのが流行っているらしい。 45歳を過ぎた私もやってみたいと思い、昔とった杵柄で、PL/0の処理系をJavaScriptで書いてみた。こちらをどうぞ。 amachangみたいに4時間というわけにはいかなくて、動き出すには6時間くらい(何日かに小分けにしたので)かかったと思う。 PL/0については、Wikipediaの解説が詳しい。 この実装の特徴としては、 教科書的な降下型パーサ(1トークン先読み) 簡単なPコードインタプリタでの実行(この部分だけ以前Cで書いたものを流用・移植した) 上記のごとくあまり特徴はない。素直にPL/0をJavaScriptで実装した まだ、手抜きが多い。単項マイナスもまだ。実装は容易です。 思ったこと もうPascalでは書けないと思いました(^^; デバッガもないCabezonで、よく8000行も書いたなぁー Fir

    わーい \(^o^)/ PL/0を JS で書いたよー! - ockeghem's blog
    tanakaBox
    tanakaBox 2008/01/28
    PL/0面白そう。