タグ

parserに関するsiroccoのブックマーク (6)

  • Peggy - The Parser Generator for Haskell

    Peggyとは PeggyはHaskell向けのパーザジェネレータです。 シンプルで扱いやすく、表現力のある Parsing expression grammer (PEG) を採用し、効率のよいPackrat parserを生成出来ます。 Parsing Expression Grammer Peggy は文法としてParsing Expression Grammer (PEG)を採用しています。 PEGには次のような特徴があります。 CFG (LL(1), LR(1), LALR(1), etc…) にある shift/reduce 競合が存在しない シンプルで表現力がある 無制限の先読みが可能、パーザとスキャナを分離する必要がない 入力長に対して線形時間での解析 PeggyはさらにPEGを拡張しています。 sepBy拡張構文 強力なエラー検出とわかりやすいエラーメッセージの生成 左再

  • Overview

    Overview Overview API Support Tutorials Changelog About Nokogiri¶ Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby. It provides a sensible, easy-to-understand API for reading, writing, modifying, and querying documents. It is fast and standards-compliant by relying on native parsers like libxml2, libgumbo, and xerces. Guiding Principles¶ Some guiding principles Nokogiri

    Overview
  • 凉山亢兰汽车维修投资有限公司

  • Ruby Scraping - Hpricot

    あるページのリンク (aタグ) を全て抜き出すスクリプト。 require 'hpricot' require 'open-uri' doc = Hpricot( open("http://www.kmc.gr.jp/").read ) (doc/:a).each do |link| puts "#{link.inner_html} → #{link[:href]}" end

  • Ruby で packrat parser - まめめも

    packrat parsing というパーサの実装方法があります。特徴は、再帰下降パーサ + 無限先読み可能 + memoize*1 という感じです。僕が下手な説明をするより、英語わからなくても Haskell わかればわかる素晴らしいスライドやPappy (reference implementation) を参照してもらったほうがいいです。 で、練習として Ruby で packrat parser を使って足し算と掛け算だけの電卓を作ってみました。 $ ruby arith.rb 1 + 2 + 3 => 6 1 + 2 * 3 => 7 1 + 2 * (3 + 4) => 15文法はこんな感じ。 式      = 空白 加算式 文字列終端 加算式    = 乗算式 ("+" 乗算式)* 乗算式    = プリミティブ ("*" プリミティブ)* プリミティブ = 数値 / "("

    Ruby で packrat parser - まめめも
  • JavaScript で構文解析: Days on the Moon

    C++ の特徴のひとつである演算子オーバーロード、その粋を極めたのが Boost Lambda (無名関数) と Boost Spirit (構文解析) ではないかと思っています。JavaScript では無名関数が使えるので Lambda に関しては間に合っているとも言えますが、Spirit はそうも行きません。JavaScript 2 で演算子オーバーロードがサポートされるのならチャレンジしてみようかななどと思ってそれきりになっていました。 しかし、一部でパーサブームが起こっているというのを受け、Perl 6 Rules をつらつらと眺めているうち、正規表現のメタ文字を使えば文法定義をきれいに書けるのではと思い至りました。そこで実際に JavaScript でパーサジェネレータを作り、Spirit にあやかって Gin (ジン) と名づけてみました。 文法定義 正規表現リテラルを使うこ

  • 1