タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

parserとbnfに関するmanabouのブックマーク (1)

  • 面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね - Qiita

    この記事では、Scalaのパーサコンビネータを用いて、BNF風の定義を書くだけで、オブジェクトのマッピングからパースエラーのハンドリングまでできてしまう高機能なパーサを作る方法を解説します! パーサコンビネータとは? Scalaにはパーサコンビネータというライブラリがあります。BNFと似たの記法で構造を定義するだけで簡単にパーサを実装することができます。たとえば、□□□-□□□□のような形式の郵便番号をパースするコードは次のように書くことができます。 import scala.util.parsing.combinator._ object PostalCodeParser extends RegexParsers { def postalCode = """\d{3}""".r ~ "-" ~ """\d{4}""".r } println(PostalCodeParser.parseA

    面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね - Qiita
  • 1