タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

parserとhaskellに関するaikeのブックマーク (5)

  • Haskell で parser を書くには (初心者編)

    Haskell で parser を書くには (初心者編) 勝手に Haskell Advent Calendar 2011 Haskell Advent Calendar 2011 にはエントリーできませんでしたけど、一人寂しく「勝手に Haskell Advent Calendar 2011」を開催して、わくわくクリスマスを待ちたいと思います。 目的: Parsec3 と attoparsec の基的使用法, Applicative スタイルを習得する 前置き: Haskell で parser を書くにはどうすればいいのでしょうか? 私は、これを勉強すべく情報源を探しましたが、一体どこからどう始めればいいのか分からず、非常に混乱しました。「この記事を読めば大体概要が全部分かる」という情報源が日語でも英語でも見つけられなかったからです。なので自分でまとめてみることにしました。 (私

  • HaskellとDSL - あどけない話

    LL Planets の「メタプログラミングの光と闇」で Haskell について話してきました。PerlPythonRuby が概ね内部 DSL を作る話だったのに対し、Haskell では外部DSLを内部に埋め込むという話をしました。短い時間で説明不足になった感があるので、この記事で二点ほど補足します。 Haskell では文法がうまく設計されており、コードを書けば自然とDSLっぽくなるので、わざわざ内部DSLなんて言わない。それよりもコンビネータという考え方を学ぶ方が新しい視野がひらけてよい。 Haskell ではパーサーを作るのが簡単。だから自分で言語を作るのも簡単。その言語を外部ファイルから読み込んでもいいし、HERE DOCUMENT のように内部に貼付けることもできる。 関数を二項演算子として扱う Haskell では関数をバッククォートで囲むと二項演算子になります。 i

    HaskellとDSL - あどけない話
  • 雑草ブログ HaskellでBrainfuckインタプリタ

    > Haskell Brainfuck の検索結果 約 56,600 件中 1 - 10 件目 (0.16 秒) …まあ気にしない。もう書いちゃったし。 BF的な仕様入力が無くなった場合はポインタの指す値を変更しないmod 256 処理系の仕様入出力はIntのリストで遅延評価 使い方interpretBF "コード" [入力...] → [出力...] [3] *Main> interpretBF ",.,.,." [1,2,3] [1,2,3] *Main> take 10 $ interpretBF "+[.+]" [1,2,3] [1,2,3,4,5,6,7,8,9,10] *Main> interpretBF "<<<" [1,2,3] [] *Main> interpretBF "<<<." [1,2,3] [*** Exception: Prelude.(!!): negati

  • Haskell で brainfuck - 言語ゲーム

    ふと思い立って Haskell で brainfuck を書いてみた。そんな事やってる人は沢山いると思うので、一つ制限をつけた。モナドは main 関数の中だけしか使わない。つまり、後は全部副作用なしでやる。 それから、大体の方針を立てた。brainfuck の文法はとても単純なので、もしかしてパーサすらいらないんじゃ無いかと思ったのだけど、ループがある関係上やっぱり最初に構文木を作ったほうがやりやすい。という事でオーソドックスに、ソースコード -> 構文木 -> 実行、と言う順序で進める事にした。 -- Parser data Command = Inc | Dec | Next | Prev | Put | Get | While [Command] deriving (Show, Eq) type Program = [Command] parse :: String -> Prog

    Haskell で brainfuck - 言語ゲーム
  • The BNF Converter

    Centre for Language Technology Chalmers University of Technology and University of Gothenburg What is the BNF Converter? The BNF Converter is a compiler construction tool generating a compiler front-end from a Labelled BNF grammar. It is currently generating code for the target languages Haskell, Agda, C, C++, Java, and OCaml, as well as XML representations and Pygment syntax highlighters. Given a

  • 1