タグ

2012年3月9日のブックマーク (10件)

  • yacc/lex (bison/flex) パーサ(構文解析プログラム)自動生成ツール

    yacc (yet another compiler compiler)はパーサ(構文解析を行うプログラム)を自動生成するツールです。 構文解析とは、入力された文について正しい文かどうか、どういう構造をした文か、などを分析することです。 lex (lexical analyser generator)はレキシカルアナライザ(字句解析を行うプログラム)を自動生成するツールです。 英語で例えると、入力された文に You や She などの単語が現れたら主語、run や write が現れたら動詞に分類するのが字句解析です。 そのうえで、S (主語) + V (動詞) + O (目的語) + . (ピリオド) のように英語の語順として正しく並んでいるかどうかを分析するのが構文解析です。 つまり、まず字句解析(lex 又は flex)をしたうえで、次に構文解析(yacc 又は bison)を行うこ

    mnru
    mnru 2012/03/09
  • CGI Error

    mnru
    mnru 2012/03/09
  • yacc入門

    このページでは、yaccの実践的な入門講座を目指します。 YACC(Yet Another Compiler Compiler)は、コンパイラの開発を手助けしてくれるソフトウェアです。BNF(Backus-Naur Form)という形式で文法を記述すると、構文解析のためのプログラムを自動生成してくれます。つまり、YACCは構文解析の自動化ツールです。 YACCの入力は、YACC文法ファイル(拡張子は通常.y)で、この中にはBNFで書かれた構文ルールと、C言語で記述された各構文毎の処理(セマンティック・アクション)が書かれています。 YACCは、YACC文法ファイルを読みこみ、C言語のソースを出力します。 したがって、YACCを習得するためには、BNFの書き方と、C言語を知っていることが前提となります。 YACCの種類とインストール kmyaccについて bisonについて YACCを使って

    mnru
    mnru 2012/03/09
  • Getting started with Play 2.0, Heroku and Scala

    This is another tutorial of the category ‘quick start for absolute beginners’. This time the topic is on Play 2.0, Heroku and Scala. The reason for this tutorial is that recent announcements indicate that the three topics will have a bright future together. A really nice overview of all three topics can be found in this presentation on slideshare (simply skip the Akka part. Or even better, read it

    Getting started with Play 2.0, Heroku and Scala
  • 『Play2.0をherokuで動かすとテンプレートの日本語が文字化する件』

    以前のエントリーでPlay2.0を動かしていたら、テンプレートの日語が文字化するという問題に直面した。 色々調べた結果、heroku側の設定の問題で解決できることがわかった。 以下が解決するためのコマンド。 プロジェクトのカレントディレクトリで実行します。

    『Play2.0をherokuで動かすとテンプレートの日本語が文字化する件』
    mnru
    mnru 2012/03/09
  • Play!framework+ScalaのアプリをHerokuにデプロイする - Keep on moving

    HerokuでもPlay!が使えるようになりました。 Play!+Scalaがデプロイできること、他のPaasでも動くアプリが問題なくデプロイできることをたしかめて見ました。 参考 Heroku | Play! on Heroku Getting Started with Play Framework on Heroku ソース cloudbeesにPlay!+Scalaアプリをデプロイする - Ehrenの日記で使ったアプリ。 cloudbeesで動作することを確認済み masahitojp/play_scala_helloworld · GitHub 準備 herokuのインストール rvmを利用して、そこからgemherokuを導入する。 $ rvm use 1.9.2 $ gem install heroku Procfileの追加 ソースをgit cloneで取得 Declar

    Play!framework+ScalaのアプリをHerokuにデプロイする - Keep on moving
    mnru
    mnru 2012/03/09
  • Scala の Macro について

    2.10.0-M2 になって ScalaMacro が(まだコンパイルオプションが必要で、試験段階といった感じだが)入って、ここ数日、自分のまわりでなんとなく流行っていたので。 自分の発言とか特に、単に試してみただけであまり正確ではないだろうし、最終的にリリースされるころには色々と仕様変更される可能性(そもそも現状ちゃんとした仕様あるのか?)あるので注意してください

    Scala の Macro について
  • PlayBay で Play2.0 + pjax の話をしてきたよ - がくぞーのメモ

    パソナテックさんのエンジニアカフェで行われた PlayBay - Play!Framework + WebSocket勉強会に講師として参加してきました。 発表スライド DEMOのソースコード Ustでも動画がみれるそうです。 WebSocketと謳ってるのに全く関係ない pjax の話をさせてもらいました^^;;; 当は Play2.0 上で pjax を実現するうえで注意しなければいけない点や苦労ポイントだとかを発表できればと思ってたんですが、Play2.0 の柔軟さと Scala の強力さのお陰で、思いのほか苦労もせず実現できちゃったので、スライドは pjax に至るまでの流れが中心となってます。 ともあれ、話を聞いてくださった皆様、他の講師の方々、会場を提供してくださった株式会社パソナテック エンジニアカフェ運営事務局様、ありがとうございました。

    PlayBay で Play2.0 + pjax の話をしてきたよ - がくぞーのメモ
    mnru
    mnru 2012/03/09
    PlayBay で Play2.0 + pjax の話をしてきたよ
  • Clojure のエレガントなところ - hozumiの日記

    リスト、ハッシュマップ、ベクタ、集合のリテラルがある ;リスト (1 2 3 4) ;ハッシュマップ {:a 1, :b 2, :c 3} ;ベクタ [1 2 3 4] ;集合 #{1 2 3 4} よく使う基データ型のリテラルがあるというのはソースコードに図が入ってるみたいで考えるよりも早く理解できる。しかもいじりやすい。他の多くの言語でもこれらの基データ型のリテラルは用意されているが、Clojure ではこれらはとてもよく使う重要なビルディングブロック。 リスト、ハッシュマップ、ベクタ、集合、文字列 をシーケンスとして抽象化 (take 2 '(a b c d)) ;リスト ;=> (a b) (take 2 {:a 1 :b 2 :c 3 :d 4}) ;ハッシュマップ ;=> ([:a 1] [:b 2]) (take 2 [:a :b :c :d]) ;ベクタ ;=> (:a

    Clojure のエレガントなところ - hozumiの日記
    mnru
    mnru 2012/03/09
  • Haskellの文法(再帰編) - あどけない話

    構造化定理によれば、分岐、反復、逐次があれば、すべてのロジックは記述できます。分岐については、Haskellの文法(分岐編)で説明しました。今日は反復について説明します。逐次に関しては、少し難しい内容ですが、QAで学ぶMonadを読んで下さい。 for 文 多くの言語では、素朴な繰り返しを実現するためには for 文や while 文を使います。for文を単純に数え上げとして使う場合、カウンターである変数 i が再代入できるとことが前提になっています。 Haskell では、変数に再代入はできません。それは、for 文がないことを意味します。どうやって、繰り返しを実現するのでしょうか? その答えは、再帰です。 対比するための言語として JavaScript を用いることにします。まず、以下のように渡された整数の配列の要素をすべて足し合わせるプログラムを考えて下さい。 function su

    Haskellの文法(再帰編) - あどけない話
    mnru
    mnru 2012/03/09