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
sre_introduction.pdf
Search
Niyarin
July 06, 2019
Programming
0
460
sre_introduction.pdf
Niyarin
July 06, 2019
Tweet
Share
More Decks by Niyarin
See All by Niyarin
Scheme用nREPLの開発(エラー出力の改善)
niyarin
0
120
bel lispの紹介
niyarin
0
550
nanopass-compiler-frameworkを使ってみました
niyarin
0
330
Gorgos-parser-combinator-written-in-scheme
niyarin
0
300
outputting-beautiful-s-expression
niyarin
0
280
Serialisp
niyarin
1
610
Mongo DBとS式検索
niyarin
0
220
goodbye-python-repl
niyarin
0
250
SchemeのEphemeronとWeak Pairの説明
niyarin
0
760
Other Decks in Programming
See All in Programming
What We Can Learn From OSS
inouehi
0
400
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
190
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
110
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
100
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
360
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
250
1인 개발자로 행복하게 살기 - GDG 송도 헬로월드 2024
benjaminkim
1
5.6k
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
370
今、知っておきたい! 生成AIエージェントの世界
elith
3
340
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
220
Ruby Pattern Matching
bkuhlmann
0
920
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
180
Featured
See All Featured
Fireside Chat
paigeccino
20
2.6k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
GraphQLとの向き合い方2022年版
quramy
31
12k
Web Components: a chance to create the future
zenorocha
305
41k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
29
6k
Typedesign – Prime Four
hannesfritz
36
2.1k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
990
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Done Done
chrislema
178
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