タグ

parserとdslに関するmanabouのブックマーク (3)

  • 面倒くさいパーサの実装も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
  • Domain Specific Query Parser (Hetero Grammatical Query Parser) 実装 - Qiita

    概要 Supership株式会社インフラ事業開発部・検索グループで11月から (2016年4月よりサービス事業部 Syn.事業部 検索サービス部に改組) エンジニアとしてジョインした@ShingoOKAWAです。 弊社検索グループでは、KDDIグループのハウスエージェンシーとしてのauポータルサイトの検索サービスの開発や、その他自社で提供するサービス・プロダクトの種々の検索機能の開発業務に取り組んでいます。 『Elasticsearch Advent Calendar 2015』に投稿させて頂いたことからもお分かりかと思いますが、バックエンドの検索エンジンは Elasticsearch を採用しております。検索サービスの拡充及び改善のため、日々開発業務に取り組んでいるわけですが、投稿では、その中でも弊社バックエンドのコア機能として開発中の『Domain Specific Query

    Domain Specific Query Parser (Hetero Grammatical Query Parser) 実装 - Qiita
  • 言語実装のカレンダー | Advent Calendar 2015 - Qiita

    コンパイラ、インタプリタ、外部/内部DSLなどの言語の実装の最適化、理論などのAdventCalendarです。 学術寄りな内容が多いのかなと思ってカテゴリを学術にしましたが特に縛りは設けません 例 * 構文解析 * CPS * SSA * 最適化 * CFG * DFG * コードエミッション * GC * JIT * コンパイラ言語におけるREPLの実装方法 * 名前空間の実装方法 * インライン化戦略 * DSLのエラーハンドリング * 複数バックエンドを持つ際の意味論の保持 * スタックマシン vs レジスタマシン

    言語実装のカレンダー | Advent Calendar 2015 - Qiita
  • 1