2008-11-01から1ヶ月間の記事一覧
またまた議事録の元ネタを書かせて頂きました。今までの要約はこちらです。途中参加も全然可能ですので、興味がある人はぜひ。
今現在のtgsetup.pyがまた動きませんねえ。*1駄目になった修正と思われるr5755を見てみたんですけど、なんだこれ。エラー処理を強化してるのはわかるんですけど、以下のコードがまずすぎです。 else: if argv: from setuptools.command.easy_install import …
ワタクシは横浜人ですので。
連載も第四回となりました。今回が正規表現エンジンを作る上で一番重要な部分で*1、正規表現とNFAの関係を説明しています。結局は当たり前のことしか言ってないんですが、そこはコロンブスの卵でして、知ってるのと知らないのとでは大違いです。さて、この連…
正規表現エンジンを作ろう(3)では、簡単のためすべて演算が右結合となるように構文解析を実装しました。ただ、ちょっとこれは乱暴過ぎたかなと反省もしてます。そんなわけで、 なお、引き算、割り算等のような、5-3-2が5-(3-2)のように右結合になると結果…
第三回の公開です。今回は字句解析と構文解析を自作しました。 本格的な構文解析器は、通常 yacc 等のツールを利用して自動で作ることが多いですが、今回の正規表現の文法は単純なので自作してしまいます。 じゃあ、ツールを利用するとどうなるの? ってのを…
CodeZineさんで第ニ回が公開されました。今回は最も底辺の部分である、NFAとDFAを実装しています。ただし、NFAの実行部に関しては以下の通り実装しませんでした。 このためNFAを実行するソースはDFAに比べてかなり複雑になります。ただし、今回はNFAを実行す…
CodeZineさんで連載を始めました。全6回でDFAエンジンの実装方法を紹介する予定なので、興味のある方はぜひ*1。ところで、第一回で出て来た /^([a-z]*)\1$/ と言う正規表現ですが、 残念なことに、数学的な3つの定義ではこの正規表現が表す文字列集合を表現…
問題 文字列'abcccde'に対して、以下の最短一致マッチ(non-greedy match)を使った(1)から(4)の正規表現をかけたときのマッチ結果は? (マッチするかしないかではなく、どの部分がマッチして $& に入るかです。) foreach my $regexp ( qr/bc*/ , # (1) qr/bc*…