Skip to content

Conversation

@igapyon
Copy link
Owner

@igapyon igapyon commented Jan 28, 2026

develの成果をmainに反映

SQLパーサー強化 + ブラウザデモ追加 + ドキュメント整備

概要
SQL Formatter 実装に向けた前段のパーサーを強化し、ブラウザで SQL→AST を確認できるデモを追加。テスト拡充とドキュメント整備も実施。

変更点

パーサー機能強化
lexer 実用化(コメント/文字列エスケープ/指数/引用識別子)
構文厳密化(FROM/HAVING/JOIN/Window frame/ORDER+FETCH 制約)
MATCH_RECOGNIZE をテーブル修飾として解釈
NATURAL を句キーワードとして扱い別名誤認を防止
ブラウザ利用向け window.CalciteLexer/Parser の公開
テスト拡充
回帰ケース(MATCH_RECOGNIZE / PIVOT / WINDOW のバリエーション)
lexer ケース(コメント/引用識別子/指数/先頭ドット数値)
DDL/DML ケース(SET/RESET/ALTER/EXPLAIN/DESCRIBE/CALL)
異常系テスト追加(HAVING without GROUP, NATURAL JOIN + ON 等)
ブラウザデモ追加
[index.html](https://file+.vscode-resource.vscode-cdn.net/Users/igapyon/.vscode/extensions/openai.chatgpt-0.4.67-darwin-arm64/webview/#) に Tailwind CSS ベースの SQL→AST Playground を追加
ドキュメント整備
README 追加(目的/構成/テスト手順/デモ)
スクリーンショット埋め込み
AGENTS.md 追加
TODO 更新
スクリーンショット
SQL Formatter WIPのデモ実装とパーサ強化/テスト拡充

概要
SQL Formatter の基盤整備として、AST/フォーマットの UI を追加し、パーサの厳密化とテスト拡充を実施。フォーマッタの初期骨格とルール定義、ドキュメントも更新。

主な変更点

フォーマッタ/UIを SQL Formatter WIP UI として新規作成
入力 SQL → AST → 整形の最小パイプラインを搭載
WHERE/QUALIFY/AND/OR/ORDER/GROUP/JOIN の整形ルールを実装
CTE (WITH) と基本的な関数/OVER を出力
コメント挿入(簡易)を追加
lexer の実用化(コメント/エスケープ/指数/引用識別子)
構文厳密化(FROM/HAVING/JOIN/FRAME/FETCH/OFFSET/SETOP など)
トークンに start/end を付与
…tter tests (#8)

Improve parser/formatter coverage, add comment preservation and formatter tests

概要:

パーサ/lexer の拡張(Unicode識別子、コメント保持、TableHints、ASOF MATCH_CONDITION など)
formatter(index.html と sql-formatter.js)の整形改善とコピーUI追加
テスト拡充(パーサ/フォーマッタ)

変更点:

Parser/Lexer:
Unicode識別子・Unicodeエスケープの実解釈と妥当性検証
-- コメントの保持(先頭/SELECT行)
TableHints (/*+ ... */) をトークン化して保持
TableRef 修飾子反映、ASOF JOIN の MATCH_CONDITION 対応
BRACKET/BigQuery/プレフィックス文字列など識別子/文字列拡張
数値リテラルの種別判定強化

Formatter (index.html):
FROM/ORDER BY 改行・インデント改善
サブクエリの描画修正
SELECT コメント保持
出力コピー用アイコンボタン追加
フォーマットテスト追加
@igapyon igapyon merged commit 5ca574d into main Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants