タグ

compilerに関するmogwaingのブックマーク (19)

  • antlr/構文木を使った解析 - PukiWiki

    ここでは、antlr/ANTLRWorksを使ってみるに続いて、例題を構文木を使った 解析に変更して、ANTLRWorksでのデバッグ方法も合わせて紹介する。 構文木生成 † 例題を四則演算に戻し、変数を導入したのが以下のE3.gです。 grammar E3; options{ output = AST; ASTLabelType = CommonTree; } tokens{ ASSIGN; ALU_ADD; ALU_SUB; ALU_MUL; ALU_DIV; } prog : ( statement { if ($statement.tree != null) System.out.println($statement.tree.toStringTree());} )+ ; statement : expression NEWLINE! | IDENTIFIER '=' expres

  • Hiveのソースを見てみた。 - wyukawa's diary

    対象はCloudera版の0.7 どこがエントリポイントかっていう話がまずあるわけだが、hiveコマンドをたたくとこうなりますよね。 $ hive Hive history file=/tmp/wyukawa/hive_job_log_wyukawa_201107032314_538554893.txt >hiveコマンドの実態である$HIVE_HOME/bin/hiveをみると、hiveコマンドをたたくとcliって最後に実行してますね。 cliっていうのはシェルの関数で実態は$HIVE_HOME/bin/ext/cli.shに書かれてます。 で、最終的にはorg.apache.hadoop.hive.cli.CliDriverを実行します。ここにmainメソッドがあります。 >!pwd;みたいな!ではじまるものが指定された場合はそのコマンドがそのまま実行されます。 HiveQLが指定され

    Hiveのソースを見てみた。 - wyukawa's diary
  • Internal Hive

    The document provides an overview of Hive architecture and workflow. It discusses how Hive converts HiveQL queries to MapReduce jobs through its compiler. The compiler includes components like the parser, semantic analyzer, logical and physical plan generators, and logical and physical optimizers. It analyzes sample HiveQL queries and shows the transformations done at each compiler stage to genera

    Internal Hive
    mogwaing
    mogwaing 2011/10/18
    すばらしい
  • 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

    mogwaing
    mogwaing 2009/01/30
    ともてわかりやすい。LL, LR, SLR, LALR
  • Index of Compiler Resume

    コンパイラ演習レジュメ '98年度情報科学実験IIコンパイラ演習のレジュメです。1から8までは田浦さん、9は遠藤さんによるものです。 ただし、ここにはレジュメの約半分、課題までの部分は載せてありますが、課題の答えは載っていません。(^^) 課題説明 仕様説明 CPSの定義 最適化(1) Closure変換 Register割り当て + 抽象機械コード生成 実マシンコード生成 Garbage Collection 一般教養としてのGarbage Collection 〔トップページへ〕 〔「ソフトウェアの作成」のindexページへ〕 <vu@is.s.u-tokyo.ac.jp> Last updated on 16 May, 1999

  • https://www.is.s.u-tokyo.ac.jp/vu/97/jugyo/processor/compilerresume/

  • コンパイラを変えるだけでパフォーマンス向上、インテル コンパイラーの実力を見る | OSDN Magazine

    「よりパフォーマンスの高いプログラムを作成するにはアセンブラを駆使すべし」という話を聞いたことがある人も多いだろう。これは、C/C++言語で記述されたプログラムには冗長な部分があるため、ノウハウを持つプログラマがアセンブラでチューニングしたプログラムの方が高いパフォーマンスを得られる、ということであった。しかし、現在では必ずしもこのことは当てはまらなくなっている。その理由は、コンパイラの進化と、CPUおよびPCアーキテクチャの複雑化にある。 最近のコンパイラのほとんどは最適化機能と呼ばれる、ソースコードをより効率の良い形に自動変換する機能を備えている。基的な最適化の例としては、プログラム内で実際には使われていない処理の省略や、冗長なforループの自動展開などが挙げられるが、最近ではこのほかにも高速に処理を行えるようプログラムの実行順序を入れ替えたり、頻繁に呼び出される関数を自動的にインラ

    コンパイラを変えるだけでパフォーマンス向上、インテル コンパイラーの実力を見る | OSDN Magazine
  • C++: 水面下の仕組み - Microsoft Visual C++ Web Site

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    C++: 水面下の仕組み - Microsoft Visual C++ Web Site
  • 言語理論とコンパイラの日程

    青山学院大学 2007 年前期、Martin J. Dürst 参考文献 4月13日 授業の概要、言語理論とコンパイラの応用分野、コンパイラ全体の仕組み 4月20日 形式言語の重要性、種類、定義 4月27日 有限オートマトンと線形文法 5月 4日 (休日) 5月11日 正規表現と 字句解析 5月18日 lex 系ツールの演習 5月25日 字句解析と構文解析 6月 1日 上向き構文解析と下向き構文解析 6月 8日 yacc 系ツールの使い方 6月15日 yacc 系ツールの演習 6月22日 yacc 系ツールの演習 (続き)・意味解析と中間表現 6月29日 コード生成 7月 6日 最適化 7月13日 実行環境、仮想計算機、ゴミ集め、動的コンパイラ 7月20日 (金) 11:10 - 12:35 期末試験 【成績評価方法】授業中のミニテスト: 20%、演習課題: 30%、最終試験: 50%

  • Cコンパイラ設計(yacc・lexの応用)

    近年、Linuxやcygwinの普及によってだれでもyacc/lexを使って新しい言語を作成し、その処理系を作成することができるようになってきた。 G・フリードマンの「Cコンパイラ設計」は、yacc/lexの使い方を丁寧に説明した名著であるが、英語の原も日も絶版で、amazonのオークションでも買えないため日語訳を借り、OCRから復刻することにした。 Linux、cygwinではbison, flexが使われているので若干書と内容が異なる部分があるが、それも別枠で整理してみたいと考えている。 4章以降は、竹 浩のページ(Wiki)に追加中2008/05/15 コンピュータの発達とともに、これまでにCOBOL,FORTRAN、Pasca1,Lisp、C等、数多くのコンピュータ言語が作られてきました。一般には,新たなコンピュータ言語、あるいはそのコンパイラを作るなどということは

  • d.y.d.

    00:18 05/11/26 経県値 母上からの指摘で秋田県が赤くなりました。修正。 山形と茨城もこれでよかったか微妙に自信なし。 (追記:茨城も赤いことが判明。) 木和 私の Tree Summing のコードが見たい人は、このページのソース内コメント 読んで下さい。「もっと読む」機能とか実装するの面倒なので手抜きばんざい。 あーでも、自分で解いてみて、できれば2日くらい悩んでみた人じゃないと 読んでも全然面白くないと思いますよん。 C言語の言語仕様の隅を突いてコードを短くする技能ってのは完璧に趣味の領域に 属すると思いますが、それとは別の「短く簡潔に書けるアルゴリズムを考える」能力の 方は、普段からわりと重要なのではないかという気もします。単純な話、コードの量が 少ないほど、バグの元も少ないわけで。例えば今回の問題を解くためだけに、自分 でTreeクラスを定義してそれを生成するpars

  • http://mahata.net/mt-dev/2007/10/compiler.html

  • 「コンパイラ」第8回

    実施日: 2007-06-06(水) 1限内容: 構文解析(1) …文脈自由文法との関係、LL(1)文法(概要、FIRST())配布資料あり(第5章)前回までお話した文脈自由文法を基に、構文解析の話を始めました。構文解析には大きく分けて下向き構文解析と上向き構文解析がありますが、この講義では下向き構文解析、しかもその特殊な場合である予測型構文解析についてのみ扱います。 文脈自由文法は導出を繰り返すことで終端記号列を得る仕掛けであり、一方構文解析はトークン列(終端記号列)を順次読んで解析木を得る処理です。両者は関係ありそうで関係なさそう、というように見えます。一つの解釈としては、導出により得られた記号列(文形式)を先頭から順次入力記号列と照合していき、その過程で解析木を作っていく、というものが考えられます。この講義では、この解釈に基づいて文脈自由文法と下向き構文解析を結びつけました。この解釈

    mogwaing
    mogwaing 2007/10/23
    first, followについて
  • 「コンパイラ」第9回

    実施日: 2007-06-13(水) 1限内容: LL(1)文法(FOLLOW()関数、判定法)、構文解析プログラム配布資料5.3節、5.4節(5.5節は時間の都合で割愛)前回に引き続きLL(1)文法の説明を行い、最後にLL(1)文法に対する予測型構文解析プログラムの概略を説明しました。前回説明したFIRST()関数に比べて、FOLLOW()関数は、どういうものか、なんのために必要か、ややつかみにくいかと思います。そのため、かなり時間をかけて説明をしました(その結果、プログラムの説明の時間がなくなってしまいました…)。 講義で使った例(配布資料を作成した後に考えた例なので、資料には載っていません)を再掲します。 S→aAB, A→b|c|ε, B→dこのような文法に対して、終端記号列adの構文解析を考えてみます。最初の文字aを読んで、SをaABに展開します(Sの子節点にa, A, Bを作成

    mogwaing
    mogwaing 2007/10/22
    first, followについて
  • 言語理論とコンパイラの日程

    mogwaing
    mogwaing 2007/10/08
    青学の言語理論とコンパイラの授業。よくまとまっている
  • お手軽パーザー

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • Yacc - Wikipedia

    Yacc(英: yet another compiler compiler、ヤック)はパーサジェネレータの一つである。1970年代にAT&TでUNIX用にスティーヴン・カーティス・ジョンソンが開発した。 概要[編集] 名称[編集] Yacc は yet another compiler compiler(またひとつのコンパイラコンパイラ)に由来する。コンピュータ黎明期には「自動プログラミング」と呼ばれたプログラミング言語処理系の技術の進展の方向として、当時、機械語プログラムを生成するコンパイラの次はコンパイラを生成するコンパイラコンパイラであろう、ということで盛んに研究がされており、そのためコンパイラコンパイラを名乗る研究が他にもあれこれ存在した。 パーサはコンパイラの全てではないので、コンパイラコンパイラと呼ぶには Yacc のようなパーサジェネレータは不足と言えなくもないが、特段意識さ

  • B3 OS/Programming(東京工業大学の授業:コンパイラのつくりかた)

    シラバス コースは、プログラミングの基について、ひととおりの技術を学び終えた受講者を対象とする。コースの目的は、実際のソフトウェアを開発する際に、具体的にどのようにプログラムを設計し、またどのように OS の機能を利用していけばよいか、感覚をつかんでもらうことである。このため、コースは講義中心ではなく、いくつかのソフトウェアの作成演習をとおして、そのソフトウェアのプログラムはなぜそのように設計されているのか等を考えてもらう。 1. 簡単な C コンパイラ 言語仕様を簡略化したCコンパイラを作成し、言語処理系の基構成を学ぶ。また関数呼び出しや配列参照など、C言語の各基機能が実際にどのような機械語に変換されていくのかを学ぶ。 実際に作成する処理系は2つで、まずはじめに字句解析の練習として、ごく簡単なLispインタプリタを作る。 その後、構文解析、コード生成の演習のため、C言語風の手続

    mogwaing
    mogwaing 2007/08/15
    東工大千葉先生の授業の資料 これはいい。 compiler, user level thread, gui, web server
  • Basics of Compiler Design

    I have taught an undergraduate compilers course for over a decade. In the last many years, I have used my own textbook "Basics of Compiler Design", which I have decided to make available online. Permission to copy and print for personal use is granted. Differences between editions Each new edition has fixed errors and rephrased some explanations. Additionally, the 2008 edition added a chapter abou

  • 1