🐥

Rust で正規表現エンジンを実装した話 その①

2024/10/05に公開

概要

以下の2点から、Rustで正規表現エンジンを実装しました。

  • Rustを学ぶ
  • 正規表現の仕組みを理解する

知識の整理をかねて、実装したコードの解説を記載します。
ソースコードは以下のリポジトリに含まれています。

https://github.com/shu-kitamura/small-regex

本記事で使用するコードは、正規表現エンジンの処理を解説のしやすさを優先して、エラー処理を考慮していません。

正規表現エンジンの種類

正規表現エンジンには、以下の2種類の実装があります。

  • VM型
  • DFA型

今回実装したエンジンはVM型です。
2種類のエンジンの違いや、メリットなどに興味がある方は以下の本を読むことをお勧めします。

https://gihyo.jp/book/2015/978-4-7741-7270-5

処理の流れ

VM型の正規表現エンジンは大きく分けると、以下の3つの処理を行っています。

  1. パターンをパースし、抽象構文木(AST)を生成する
  2. ASTから命令列を生成する
  3. 文字列がパターンと一致するか評価する

その②以降で、各処理の説明・実装内容を記載していきます。
以下はリンクです。

  • その② - パターンをパースし、抽象構文木(AST)を生成する
  • その③ - ASTから命令列を生成する
  • その④ - 文字列がパターンと一致するか評価する

Discussion