タグ

parserに関するigrepのブックマーク (7)

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

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

    とりとめのないパーサー談義 - あどけない話
  • GitHub - peti/parsec-class: Type class for types that can be constructed from their text representation

  • 【Haskell】ParsecでJSONパーサの作成 - Qiita

    HaskellのParsecで、JSONパーサを作成しました。仕様はこちらを参考にしましたが、意図的に緩和した仕様があります。 オブジェクトや配列の最後の要素の後には,が必要ですが、このパーサでは任意です キーは""で囲む必要がありますが、このパーサでは任意です(ただし囲っていない場合は、一文字目は英字もしくは_、2文字目以降は、英字もしくは数字、_でなければなりません) 同じ階層でのキー名の重複を許します 一番外側のデータ型は、オブジェクトでも配列でも構いません 整数値であっても、浮動小数点数として値を保持します JSONパーサのソースコード module Json ( parseJson ) where import Data.Char import Data.List import Numeric import Text.Parsec import Text.Parsec.Strin

    【Haskell】ParsecでJSONパーサの作成 - Qiita
  • Elm で構文解析しよう - Qiita

    こうすることによって、生の文字列よりもプログラムで扱うことが簡単になります。 しかし、どうすればこの構造を得ることができるのでしょうか?少し考えてみましょう。 split と trim で頑張る 正規表現で頑張る ループで頑張る 全部つらそうですね。 Elm の構文解析器(パーサー) elm-tools/parser は、そんな構文解析を超シンプルな記述で実現してしまうライブラリです。Elm の作者である Evan 氏自身によって書かれています。 例として公式のサンプルを引用してみます。ここでは ( 3, 4 ) のような文字列を2次元の座標として解釈するパーサー point を定義しています。 import Parser exposing (Parser, (|.), (|=), succeed, symbol, float, ignore, zeroOrMore) type alias

    Elm で構文解析しよう - Qiita
    igrep
    igrep 2017/12/02
    よくできてるなぁ。
  • GitHub - mrkkrp/megaparsec: Industrial-strength monadic parser combinator library

    The package is built around MonadParsec, an MTL-style monad transformer. Most features work with all instances of MonadParsec. One can achieve various effects combining monad transformers, i.e. building a monadic stack. Since the common monad transformers like WriterT, StateT, ReaderT and others are instances of the MonadParsec type class, one can also wrap ParsecT in these monads, achieving, for

    GitHub - mrkkrp/megaparsec: Industrial-strength monadic parser combinator library
    igrep
    igrep 2015/09/27
    “a fork of Parsec library originally written by Daan Leijen.”
  • parsec で極める文章編集

    正規表現をまったく使えない編集者はひとにぎりだと思いますが、正規表現だと原稿の半角丸括弧を全角に変換する作業とか頭痛いですよね。わたしもいつも困ってました。 というわけで、いまや編集者必須ツールといってもいい parsec を新人編集者にぜひ使ってもらおうということで、 「Haskell Advent Calendar 2012」18日目という場を借りた素人チュートリアル記事です。 Haskeller が書いてるわけではないので、 「その考え方は違う」とか「もっと効率的な書き方がある」といったコメントがもらえるとうれしいです。 ちなみに、わたしの周りに新人編集者はもう何年もいません。まだ見ぬ新人へ向けて書きます。 parsec で最速テキストフィルター 最初に parsec を使おうと思ったときにぶちあたるのは、プログラマ向けの解説しかないことだと思います。 編集者というものは、 CSV

  • Trifectaを触ってみた - wvogel日記

    Haskellのパーサーライブラリといえば、 Peggyなどもありますが、やはりParsecというイメージが強い。 で、これまで書いたprojectなんかも殆どParsecを使って書いてきました。 そしたらつい先日、TrifectaとかいうEkmettさんのライブラリが存在することを知りました。 特徴についてはA Parsing Trifectaなんかにも書かれています。 ParsecのようなMonadicパーサーは使いやすく、それに対してMonoidsは並列でincrementalである、と。 この二つを、記述上ではParsecを踏襲して作成したライブラリだそうです。 というわけで、まだその機能の全容を把握できたわけではないのですが、とりあえずこれを使ってXMLパーサを書いてみた。 こんな感じで定義。 同時に、いい感じにShowクラスのインスタンスにしておきます。 data XML =

    Trifectaを触ってみた - wvogel日記
  • 1