Skip to content

Latest commit

 

History

History
35 lines (21 loc) · 2.05 KB

README.ja.md

File metadata and controls

35 lines (21 loc) · 2.05 KB

postgresql-cst-parser

概要

postgresql-cst-parserは、Pure Rust で開発された PostgreSQL 専用の Lossless Syntax Tree(CST)パーサーです。この文書では、パーサーの特徴、動機、使用方法、および実装の詳細について説明します。

主な特徴

  • 自動生成された CST パーサー: PostgreSQL の文法から自動的に生成されるため、幅広い文法に対応。
  • 部分的な制限: スキャナーの一部の実装が不完全であるため、全ての文法に対応しているわけではありません。

開発の動機

  1. Rust から利用でき、広範な文法をサポートする PostgreSQL の CST パーサーが不足している。
  2. pg_query.rsはとても素晴らしいライブラリだが、CST は構築できず WebAssembly(wasm)でビルドできない。

使用方法

以下のコード例のようにして使用します。

let resolved_root = postgresql_cst_parser::parse("SELECT 1;");
dbg!(resolved_root);

さらに、このパーサーを実際に体験してみたい場合は、こちらでオンラインで直接試すことができます。実際のコードを入力し、パーサーがどのように動作するかを確認してみましょう。

実装方法

実装には、PostgreSQL の scan.lgram.y に対する libpg_query の patchを適用したものを使用しています。scan.l は Rust 用に書き換えられ、scan.lgram.y を基にして構文解析表を作成し、パーサーを構築しています。

ライセンス

kwlist.h, scan.l, gram.y は PostgreSQL License です。 その他のファイルは MIT License の下で公開されています。