[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

parserに関するpochi-mkのブックマーク (10)

  • GitHub - pest-parser/pest: The Elegant Parser

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - pest-parser/pest: The Elegant Parser
    pochi-mk
    pochi-mk 2018/01/21
    rust版 instaparse みたいなもんか。強そう。
  • combine: マクロのいらないRustのパーサーコンビネーター - 簡潔なQ

    はじめに Rustには有名なnomというパーサーコンビネーターライブラリがあるが、せっかく高級な型システムと最適化があるのにマクロで何とかしようとするのは勿体無いと思うので、マクロに深く依存しないcombineを使ってみた。 combineの主な特徴 parsec リスペクトのパーサーコンビネーター コンビネーターはマクロではなく、 Parser traitを実装する値で表す バイトストリーム、文字(Unicodeコードポイント)ストリーム、トークンストリームの全てに対応 メモリ上の文字列だけではなく、入力ストリームからの直接のパースにも対応 まだ計測はしていないが、 Box を多用していたりはしないので、速度的に大きく遅れをとるようなことはないのではないかと思う。 以下、parsecについて知っていたほうが読みやすい構成になっているので、必要ならparsecの資料を探して読むといいかもし

    combine: マクロのいらないRustのパーサーコンビネーター - 簡潔なQ
  • JavaScriptでパーサコンビネータのコンセプトを理解する(「正規表現だけに頼ってはいけない」の続き) - id:anatooのブログ

    前回の記事の続き。前回は、正規表現が使えない時はパーサコンビネータを使ってみると良いということを書いた。 パーサコンビネータのためのライブラリは、以下のように各言語ごとにいくつかある。 JavaScript - Parsimmon Ruby - rparsec treetop Python - parsy PHP - PHPPEG 各言語でいくつかあるのだが、正規表現と違ってパーサコンビネータには統一的な書き方があるわけではないし、ライブラリによって使い方も様々である。なので、今まで正規表現だけ使ってきた開発者がちょっと使ってみようと思っても、使い方がよくわからずに面らってしまうことがある。 パーサコンビネータはテキストをパースするための非常に強力な仕組みだが、その背後にある考え方を理解しなければこれらのパーサコンビネータのライブラリを使う際の障害になるだろう。逆に言うと、それさえ理解で

    JavaScriptでパーサコンビネータのコンセプトを理解する(「正規表現だけに頼ってはいけない」の続き) - id:anatooのブログ
  • instaparseでCSVパーサーを書いてみる - Code Aquarium

    instaparseは文脈自由文法(CFG)による構文解析ライブラリです。ほぼそのままのEBNFと正規表現を使えます。ここでは手ごろなところでCSVの解析器を作ってみます。 leiningenプロジェクト依存モジュール 何はともあれproject.clj。最低限必要なライブラリは以下の二つ。 :dependencies [[org.clojure/clojure "1.5.1"] [instaparse "1.0.1"]] CSVのBNF CSVはRFC4180にBNFが記述されているのでこれを拝借します。 file = [header CRLF] record *(CRLF record) [CRLF] header = name *(COMMA name) record = field *(COMMA field) name = field field = (escaped / non

    instaparseでCSVパーサーを書いてみる - Code Aquarium
  • 文脈自由文法とパーサコンビネータ Pasberth December 20, 2013 概 要 この文書は文脈自由文法とパーサコンビネータの簡単な教科書であ る.これを読めば,きっと,文脈自由文法とパーサコンビ�

    文脈自由文法とパーサコンビネータ Pasberth December 20, 2013 概 要 この文書は文脈自由文法とパーサコンビネータの簡単な教科書であ る.これを読めば,きっと,文脈自由文法とパーサコンビネータを理解 する手助けとなるであろう.書は主に Haskell におけるパーサコンビ ネータを扱う.たとえば,Parsec や Attoparsec,Trifecta の使い方を簡 単に勉強するのが書の目標である.もしあなたがパーサコンビネータ に興味があるなら,ぜひ手にとってみてほしい.きっと役に立つだろう. 目 次 1 はじめに 2 1.1 ソースコード . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 ソースコードの入手方法 . . . . . . . . . . . . . . . . . . .

  • instaparseで遊ぶ - みどりねこ日記

    この記事はClojure Advent Calendar 2013 - Qiita [キータ]19日目の記事です。 instaparse 記事ではinstaparseというライブラリを使って遊んでみます。 instaparseはEBNFやABNFで記述された文脈自由文法から自動的にパーサを生成してくれます。 左再帰、右再帰、曖昧性など、いかなる文脈自由文法でも動作します。 生成されたパーサは文字列からenliveまたはhiccup風の木構造を生成します。 今回は型なしラムダ計算を題材にします。 型なしラムダ計算 型なしラムダ計算は、型がない(または型がひとつしかない)ラムダ計算です。 ラムダ計算はとてもシンプルで、すべての計算が関数定義と関数適用だけで実現可能です。 ラムダ計算の構文は以下の3つからなります。 t ::= 項 x 変数 | \x . t ラムダ抽象 | t t 関数適用

    instaparseで遊ぶ - みどりねこ日記
  • PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回

    こんにちは、久保田です。 皆さん正規表現は使っていますか? PHPに限らずどんな言語を使っていても、正規表現にお世話になっていないプログラマはいないと思います。しかし、その正規表現がどのように実装されているかについては知らない方が多いのではないのでしょうか。 この記事では、その正規表現エンジンの実装方法の一つである仮想マシンによる正規表現エンジンの実装方法を解説しつつ実際に簡単な正規表現エンジンを作っていきたいと思います。 正規表現エンジンの実装方法 正規表現エンジンの実装方法はいくつかあるのですが、それの一つに仮想マシンによって正規表現のマッチング処理を実行するやり方があります。PHPで利用している正規表現エンジンであるPCREはこの方式を採用しています。 仮想マシンによる実装方法は、正規表現というよりもプログラミング言語の実装方法の一つとして知られています。Rubyの最もメジャーな実装

    PHPで仮想マシンベースの正規表現エンジンを作ってみる 第一回
    pochi-mk
    pochi-mk 2013/06/21
    なぜphpにしたw
  • [Clojure]instaparseでパーサを作成 | DevelopersIO

    instaparseとは 今、Clojure使いの間では大きな話題となっている、パーサ(構文解析プログラム)作成用ライブラリです。 正規表現を使うのと同じくらい簡単にパーサが作成できるとのことです。 Clojure作者である、Rich Hickeyも大興奮(ソース:twitter)らしいです。 では簡単にinstaparseの特徴を解説します。 githubに機能一覧があるのですが、そこから代表的ないくつかの特徴を抜粋。 入力として文字列を受け取り、EBNF記法を用いて構文解析ツリーを生成する 出力フォーマットは、Clojureで人気の形式(hiccupとenlive)の両方をサポート 解析エラーの詳細なレポートを出してくれる 文字列をEBNF記法でうけとってパーサが簡単に書けるというみたいです。 Githubのチュートリアルを参考に、instaparseを動かしてみましょう。 環境構築方

    pochi-mk
    pochi-mk 2013/04/16
    instaparse の解説記事。わかりやすくて良い。BNF を文字列で記述するのは確かに違和感なくはないけど、多分慣れてしまえば問題ないんだろうなぁ(MLの議論追っかけてない...)。
  • はてなブログ | 無料ブログを作成しよう

    ビールとポップコーンと映画 ラストマイルを見た。良い映画だった。 映画館でべそべそ泣いて、鼻を啜りながら車で帰った。感想はこのブログでは書かない。みんな映画館に行って感じてみてほしい。 帰ってからツイッターで感想を漁り、うんうん、わかるわかる、そうだよね、とまた映画を思い出して…

    はてなブログ | 無料ブログを作成しよう
  • ANTLRを使ってみる

    始める前に とりあえず、まずはANTLRとはどんなものか使ってみましょう。 ANTLR のページからダウンロードします。 今回は、現在(2006/07/18)の安定最新版である 2.7.6 を使うことにしました。 ANTLRのようなツールを使うときに、最低限知っておく必要のある事があります。 それは正規表現です。 これを知っていないと、正直ANTLRを使うのは厳しいです。 基的なところだけ知っていれば充分ですので、 まずは正規表現を学んでおきましょう。 簡単な例 ANTLRでは、一つのパーサを作成するのに Parser / Lexer を対で使います。 今回はAntlrのサイトに習って(パクって?)、数値演算式を解析するパーサを作成します。 まず、以下の内容をファイルに保存します。 expr.g class ExprParser extends Parser; expr: mexpr (

    pochi-mk
    pochi-mk 2012/11/27
    ANTLR、勉強せにゃいかんのかなぁ。
  • 1