FParsecで左再帰を試してみる

F# のパーサーコンビネーター FParsec を使って、左再帰の文法を書くとどうなるか試してみた。左再帰についての説明は Wikipedia から引用しておく。 左再帰(英: Left recursion)とは、言語(普通、形式言語について言うが、自然言語に対しても考えられ得…

F#で正規表現を使って日本語をマッチさせる

まずひらがな。 Regex.IsMatch("あ", "\p{IsHiragana}") // => true F# では .Net の Regex クラスによって正規表現を扱う。Unicodeのコードポイントの範囲ごとに IsHiragana のような名前が付けられており、その名前を \p{IsHiragana} のように指定すること…

Vimで置換・検索時のエラーを抑制する

Vim で置換や検索をした際に、パターンが見つからなかった場合は E486: Pattern not found エラーが返る。たとえばマクロはエラーが発生するとそこで停止してしまうので、エラーが返らないようにしたくなるケースもある。ということで今回はその方法について…

F#で要素数が2つ以上のリストをマッチさせる

前に書いたこの記事に関連して。 F#で要素数が1つのリストをマッチさせる 今度は要素数が2つ以上のリストにマッチさせる方法について。こちらも前回同様 Cons パターン :: を使って次のように書ける。 match some_list with | _::_::_ -> printfn "two or mo…

Vimで正規表現にマッチした文字列を置換先でも使う

Vim で置換する際に、正規表現でマッチした文字列をそのまま置換先でも使いたいという場面にちょくちょく遭遇するのでやり方を調べた。後方参照と呼ぶらしい。 (後方参照というワードを知らなかったので調べるのにちょっと苦労した) やり方 (ヘルプ) はこち…

F#で要素数が1つのリストをマッチさせる

F# で書かれているとあるコードを読んでいて、以下のようなコードが出てきてよくわからなかったので調べた。 a::[] の部分。 match some_list with | a::[] -> printfn "%A" a | b -> printfn "%A" b まず :: は Cons パターンというもので、パターンマッチ…

justCTF [*] 2020 writeup & 復習

はじめに もう一週間以上経ってしまいましたが、justCTF [*] 2020に参加してpwnを解いた(解こうとした)ので、writeupと他の方のwriteupを見て復習した内容を書いておきます。といっても一問しか解けなかったのですが… justCTF [*] 2020 土, 30 1月 2021, 0…

Malleus CTF Pwnを読んだ

前々からCTF(特にpwn)に興味があったので、Malleus CTF Pwnを読みました。 sanya.sweetduet.info ページ数もそこまで多くないしさらっと読めるかなと思って買ったのですが、CTFやpwnに関する事前知識ゼロだったので、結局時間をかけてじっくり読むことにな…

はじめてCTFに参加した (Harekaze mini CTF 2020)

はじめに はじめてCTFというものに参加しました。というのも、最近 Malleus CTF Pwn という本を読んでpwnめちゃくちゃおもしろいなと思っていたところに、ちょうど初心者向けっぽいCTFが開催されるという噂を耳にしたからです。どうせならということで、思い…