Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
sre_introduction.pdf
Niyarin
July 06, 2019
Programming
0
390
sre_introduction.pdf
Niyarin
July 06, 2019
Tweet
Share
More Decks by Niyarin
See All by Niyarin
Scheme用nREPLの開発(エラー出力の改善)
niyarin
0
74
bel lispの紹介
niyarin
0
390
nanopass-compiler-frameworkを使ってみました
niyarin
0
240
Gorgos-parser-combinator-written-in-scheme
niyarin
0
220
outputting-beautiful-s-expression
niyarin
0
200
Serialisp
niyarin
1
550
Mongo DBとS式検索
niyarin
0
170
goodbye-python-repl
niyarin
0
180
SchemeのEphemeronとWeak Pairの説明
niyarin
0
610
Other Decks in Programming
See All in Programming
OIDC仕様に準拠した Makuake ID連携基盤構築の裏側
ymtdzzz
0
600
良質な技術記事を量産する秘訣 / #MeetsPro
jnchito
16
4.8k
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
0
400
LIFFで動く割り勘アプリTATEKAをリリースしてみた話
inoue2002
0
270
Cloudflare WorkersでGoを動かすライブラリを作っている話
syumai
1
330
Functional Fun in Kotlin
nomisrev
1
130
Swift Concurrency in GoodNotes
inamiy
4
1.4k
Hatena Engineer Seminar #23「新卒研修で気軽に『ありがとう』を伝え合える Slack アプリを開発した話」
slashnephy
0
400
10年以上続くプロダクトの フロントエンド刷新プロジェクトのふりかえり
yotahada3
2
360
社会人 20 年目エンジニア、発信で技術学びなおしてる話
e99h2121
1
150
はじめての「R」
masaha03
0
110
AWSにおける標的型Bot対策
hacomono
0
440
Featured
See All Featured
In The Pink: A Labor of Love
frogandcode
132
21k
Thoughts on Productivity
jonyablonski
49
2.7k
Visualization
eitanlees
129
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
152
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
236
1.1M
Principles of Awesome APIs and How to Build Them.
keavy
117
15k
The Straight Up "How To Draw Better" Workshop
denniskardys
226
130k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
10
1.3k
GraphQLとの向き合い方2022年版
quramy
20
9.9k
A Tale of Four Properties
chriscoyier
149
21k
Product Roadmaps are Hard
iamctodd
38
7.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
182
15k
Transcript
SchemeのS式正規表現は良いぞ (本当はClojureに移植した話をするつもりだった) Niyarin
SREとは ・正規表現をS式で表現したもの [ABC]+[0-9]{0,3}.? `(: (+ ,char-set:ABC) (repeated 0 3 num)
(? any)) 1
・SRFI115 あるいは R7RS large (scheme regex) Sagittarius Scheme、Chibi Schemeとか ・Guileのirregex
文法はSREとだいたい同じ SREの仕様 2
・たとえば、1文字以上の繰り返しは、+だけでなく、 one-or-moreという表現ができる --> 不慣れでも読みやすい正規表現が書ける SREの紹介(1)シンボルが使えるメリット1 (+ “abc”) (one-or-more “abc”) 3
・文字列とシンボルの2つあるのはいいことだ ・無制限に名前付けができる SREの紹介(2)シンボルが使えるメリット2 任意の一文字: any アルファベット:alphabetic 16進数文字:hex-digit 単語:word 4
・部分的にSchemeコードを挿入して評価で展開できる SREの紹介(3)quasi-quote `(one-or-more “abc” ,something “def”) 5
・SRFI44(scheme set char) 文字の集合データ構造 ・[ ] ⇐よりも自由に文字の集合を使える SREの紹介(4)データ構造の挿入ができる (char-set #\a
#\b #\c) ;a,b,cの文字の集合 (char-set-filter (lambda (c ) (not (char=? c #\z))) char-set:letter) ;z以外のレターの集合 6
・のんびりしていたから ・当初SRE->Clojure(Java)正規表現をやるつもりだった マッチングは実装しなくてよいしすぐ終わると思っていた.. X SREの表現力の幅のほうが大きかった Clojureへの移植が遅れた言い訳 無理ではないけど、表現を落とす実装コストがかかる 7
・S式なのでパーサ実装コストは省ける ・マッチングはNFA/DFA、VM 、微分型とかで実装できる “正規表現技術入門 ――最新エンジン実装と理論的背景” という本が良い → CLに移植しませんか? それでも実装は楽 8
・S式で表現するとのはよいこと ・実装遅れたのはSREが良すぎたせい ・暇な人は実装しよう まとめ
・S式にするとよいものは他になにがあるのか? SXML(S式XML文法) おわり (tag (@ (attr1 "value1") (attr2 "value2")) (nested
"Text node") (empty)) DBクエリとか? SXQL