Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UNTIL. LT #0x07 n4mlz
Search
n4mlz
May 17, 2025
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UNTIL. LT #0x07 n4mlz
n4mlz
May 17, 2025
More Decks by n4mlz
See All by n4mlz
自作OSでLinuxコンテナを動かす
n4mlz
1
3.8k
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
420
NUMA環境とコンテナランタイム ― youki における Linux Memory Policy 実装
n4mlz
1
1.5k
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
280
Code Review Best Practice
trishagee
74
20k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
430
A Soul's Torment
seathinner
6
3.4k
Fireside Chat
paigeccino
42
4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
410
Unsuck your backbone
ammeep
672
58k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
The Cost Of JavaScript in 2023
addyosmani
55
10k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Cult of Friendly URLs
andyhume
79
7k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
Transcript
TypeScript 小ネタ: 型のみで実装する正規表現エンジン n4mlz GitHub: https://github.com/n4mlz Twitter: https://twitter.com/n4mlz UNTIL. LT
#0x07 2025-05-17
2 後で書く 自己紹介
3 TypeScript の型はチューリング完全 ⚫ 例: 数独チェッカー TypeScript の型 ⚫ 例:
Brainfuck インタプリタ https://github.com/gruhn/typescript-sudoku/ https://github.com/susisu/typefuck
4 TypeScript の型はチューリング完全 TypeScript の型 うおお、俺もなんか作りてえ 正規表現エンジン作るぞ
5 TypeScript の型だけで正規表現エンジン作った ⚫ Regex<Pattern, Text> により true または false
に評価される 成果物
6 準備: 論理演算の定義 ⚫ 条件型 (Conditional Types) を使用して分岐を作る 型で正規表現エンジンを作る
7 準備: 文字列操作の定義 ⚫ テンプレートリテラル型 (Template Literal Types) を使用して 先頭文字の抽出、残りの文字の抽出、文字の結合を作る
型で正規表現エンジンを作る
8 1文字に対するマッチング ⚫ Pattern も Text も1文字であると仮定しているので、 ワイルドカード (.) のみ気にすればよい
型で正規表現エンジンを作る
9 ? や * を先頭に含む文字列に対応する ⚫ ? や * がマッチした場合、その後は自身を再帰的に適用することで
「文字列」に対応 型で正規表現エンジンを作る
10 文字の終端に対応する ⚫ ? や * を含む文字列を取りまとめ、 パターンの終端が $ であるかをチェックする
型で正規表現エンジンを作る
11 マッチングの開始点を作る ⚫ 先頭が ^ でない場合: ‹Pattern› と ^.*‹Pattern› が等価であること
を利用し、任意の開始点からのマッチングに対応する (テク) ⚫ Regexp<“bc”, “abcd”> が true に評価されるようになる 型で正規表現エンジンを作る
12 完成 ⚫ 型のみで簡易的な正規表現エンジンを作ることができた 完成
13 最後に Gist に公開しています! 気になったら見ていってください https://gist.github.com/n4mlz 次はスタックマシンや一次元セルオートマトンを作りたい