タグ

パーサコンビネータに関するtatuyanのブックマーク (2)

  • Rust でパーサコンビネータを作ってみる (前編)

    パーサーコンビネータ とは、小さなパーサーを 合成(combine) して複雑なパーサーを作り上げていく手法です。この記事では、Rust で簡単なパーサーコンビネータのライブラリを作成し、それを使って JSON をパースすることを目指します。 パーサーコンビネータの使用例 今回作成するパーサーコンビネータを使うと以下のようなコードが書けます。 // カンマ区切りの整数列を受け付けるパーサー let digits_seq = separated(digits, character(',')); // "empty" というキーワードを受け取り、空の Vec を返すパーサー let empty_keyword = map(string("empty"), |_| vec![]); // カンマ区切りの整数列 または "empty" というキーワードを受け付けるパーサー let parser =

    Rust でパーサコンビネータを作ってみる (前編)
  • Java パーサコンビネータ 超入門 - Qiita

    構文を解析するプログラムをパーサと呼びます。実装方法にはいくつか種類がありますが、今回はパーサコンビネータという方式を取り上げます。既存の実装を使うのではなく、1から実装しながら説明します。 この記事は再帰下降構文解析の知識を前提とします。詳細は次の記事を参照してください。 Java 再帰下降構文解析 超入門 2016.05.16 Javaには既存のパーサコンビネータがありますが、この記事では使用しません。 jparsec ParsecJ この記事ではHaskellのParsecを参考にしています。もちろんHaskellやモナドの知識は前提としません。それと断らずにモナドに由来する何かは出て来ますが、それが見抜けなくても問題ありません。興味があれば以下の記事を参照してください。 Haskell 構文解析 超入門 2015.07.31 今回はラムダ式を多用するためJava 8以降を対象としま

    Java パーサコンビネータ 超入門 - Qiita
  • 1