正規表現

ワークフローを正規表現で制御する案

簡単なワークフローは状態遷移図で表すことができます(簡単でなくても気力があればできるけど)。それならば、ワークフローの設定を有限オートマトンでやれば良いんじゃないのかなと思って、ちょっと書いてみました。すぐ下にあるテストコードの一番下にあ…

DFAベース正規表現エンジンを追加(Python)

前回のものにDFAを構成しながらマッチングするクラスを追加しました。 class State(object): def transfer(self, c, nlist): pass def appendTo(self, nlist): nlist.append(self) SuccessState = State() class CharState(State): def __init__(self, c): s…

NFAベースの正規表現エンジン(Python)

lexerを書いていないので、全体で100行少しです。インプットとしては正規表現をpostfix形式に変換して入力する必要があります。'a|b'の場合'ab|'といった感じです。あとは文字列の接続に'.'を使ってます。なので'abc'は'ab.c.'、'ab*c'は'ab*.c.'となります…

正規表現エンジン(RE1)への道(2)

re1を読むために作ったプロジェクトregexp_vm(d58ae...)に(RE1の)pikevmを追加しました。ビルドは次のようにすると、reという実行ファイルができあがります。 git git@github.com:nnabeyang/regexp_vm.git regexp_vm cd regexp_vm make 使い方もvmを指定する…

RE1(正規表現エンジン)への道(1)

Google RE2の前の実験的実装としてRE1があります。VMを使った正規表現エンジンの勉強に最適だと思います。ここではRE1実装ができるまでの実装を細かく追っていくことを目的に再開発します。blogで解説したいと思っているのですが、どうかけば良いか考え中で…

正規表現エンジンの実装(1)

これから数回をかけて正規表現エンジンをC言語で実装します。この回では、メタ記号('(',')', '|','?','+'..)無しの正規表現を作ります。すると結局、文字列の比較をするプログラムを作るということになります。例えば"./a.out hello hello"としたら"match\n"…