タグ

parsecに関するruiccのブックマーク (6)

  • とりとめのないパーサー談義 - あどけない話

    パーサーに関して、調べたことと疑問を書いておきます。パーサーに詳しい人に答えて頂けると、とても嬉しいです。 チョムスキー階層によれば、以下のような関係が成り立ちます。 正規文法 < 文脈自由文法 < 文脈依存文法 < 制限のない文法 それで、文脈自由文法の中は、こういう関係が成り立ちます。 LL法 < SL法 < LALR法 < LR法 < GLR法 GLR法は、文脈自由文法の全体を解析できる能力を持ちます。 疑問1) GLR法は、文脈依存文法(の一部)も解析できるのか? LL(1) LL(1)に、収まっているのは XML や Lisp です。 LALR(1) LALR(1)に、収まっているのは、ほとんどのコンピュータ言語です。たとえば、C や Java。 GLR GLRに収まっているのは、C++ です。たとえば、D 言語の「テンプレート再訪」には、以下のように文脈がないと比較なのかテンプ

    とりとめのないパーサー談義 - あどけない話
    ruicc
    ruicc 2013/01/07
    「Parsec は、Haskell の実用的なモナディク・パーサー・コンビネーター・ライブラリです。無限先読みの文脈依存文法を解析でき、LL(1)のときに最高の性能を発揮します。」
  • SnowClust  Haskell: ParsecのParsecによるBrainfuck

    コンパイラ屋にとってのFizzBuzzであるbrainfuckを(今更)Haskellで実装してみる。 Haskell実装は型レベルで書いたりピュアに書いたり色々だけど、ここではParsec3の機能を使ってパースと評価を同時にやってみる。 参考サイトHaskell で Brainf*ck interpreter Brainfuck - Wikipedia Parsec 3活用事例: Keepalived構文チェッカ ソースmodule BrainFuck where import Text.Parsec import Control.Applicative hiding ((),many,optional) import Control.Monad.Trans (liftIO) import Control.Arrow (first, second) import Control.Mona

  • ホワット・ア・ワンダフル・ワールド Parsec 勉強中

    ものすごく基的なんだけど,整数と浮動小数点数のパースがけっこう面倒だった. これくらい,最初から用意しておいて欲しいな… と思いつついろいろやってみた. 面倒の原因は,Parsec が,なぜか文字を消費しない一文字先読みができないっぽい (いや,そんなバナナって感じなので,オイラが何か大きな勘違いをしてる可能性大だけど) ということ. さらに LISP のリーダなんかだと,数字で始まっていてもシンボルである可能性すらある (例えば,1.2ab とか) から,さらに面倒になる. 一文字先読みさえできれば,まず最初は整数としてパースを進めていって,'.' が表れたら try でバックトラックして浮動小数点数扱いでパースを進めていって,数字以外が表れたら try でシンボルとして最後までパースするということが簡単にできるんだけど. とりあえず. module Main where import

    ruicc
    ruicc 2010/03/02
    あとで
  • HaskellのParsecを,Rubyで - もち

    こんなのがあったんだなぁ.名前は,『rparsec』. rparsec is the Haskell Parsec implemented in Ruby. (中略) Feature hightlight: Operator precedence grammar Dynamic grammar, context-sensitive grammar. A calculator parser takes 10 lines of code; A sophisticated sql language parser takes only about 250 lines of code. ということで,ふつけるを読んだ人なら皆知っているであろう,HaskellのParsecライブラリをRubyで実装しましたよ,という代物.電卓なら10行で,洗練されたSQLパーサですらたったの250行で書けるという凄ま

    HaskellのParsecを,Rubyで - もち
  • Text.ParserCombinators.Parsec

  • 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@

  • 1