view regexParser/TODO @ 324:879dc5d1cb6a default tip

fix
author mir3636
date Fri, 27 May 2016 21:21:09 +0900
parents c48a8671ce34
children
line wrap: on
line source

Mon Feb  8 12:13:08 JST 2016

    word の処理をする前に、CharClassをobjectにする方が良いか? CbCっぽくはなくなるが。

Sat Feb  6 19:50:04 JST 2016

    ちょっとあれだけど、

    各blockはstate 1から始める
    終わりの状態が1でなかったら、そこだけやりなおす

    ってのが簡単。最悪、全部やり直す可能性があるが...

Wed Feb  3 21:15:49 JST 2016

    blockedSearch だと一つはoverrapさせる必要がある。

    (aaa|aaabb)
        state : 1 [a-a] (14)
        state : 2*
        state : 4 [a-a] (8)
        state : 8 [a-a] (2)
        state : 10 [a-a] (20)
        state : 20 [a-a] (40)
        state : 40 [b-b] (80)
        state : 80 [b-b] (2)
        state : 14 [a-a] (28)
        state : 28 [a-a] (42)
        state : 42* [b-b] (80)

              a | a | a    bbb 
 prev        14  28   
 curret          7F   ... ..

            a   a   | a | a    bbb 
 prev       14  28   
 curret               7F   ... ..

    false positive がある  → 再判定
    maxmum match による見落としがある (元々そういうものはあるのだが...)
    なくそうと思うと、ちょっと大変(可能な resultを全部推移させる必要がある)
    内部の非決定性がなければ、こういう問題は出ない


Wed Feb  3 08:20:06 JST 2016

    state : 1 [w-w] (4)
    state : 4 [o-o] (8)
    state : 8 [r-r] (10)
    node : a 10 -> 2 [d-d] (2)

    w  |  o r  d
    4     8 10 2

    x  |  w  o  r  d
    1     4  8 10  2

Tue Feb  2 11:21:14 JST 2016 kono

    あとは word の処理だけだ
    charClassMergeをなおさないといけない
        merge で文字列のlistにする
        長いものは分割
        部分文字列は分解する?

    Cerirum 側で、最初のmatchが表示されてない

Tue Feb  2 09:55:40 JST 2016 kono

    % ./regexParser -subst -regex '(a|b)*a(a|b)(a|b)'
    ---Print Node----
                        a(1)->(1)
                    |
                        b(1)->(1)
                *
            +
                a(4)->(4)
        +
                a(4)->(8)
            |
                b(4)->(8)
     +
            a(8)->(2)
        |
            b(8)->(2)
    -----------------
    state : 1 
    node : + 1 -> 1
                        [a-a] (5)
                    [b-b] (1)

    state : 2*
    node : e 2 -> 1

    state : 4 
    node : | 4 -> 1
                    [a-a] (8)
                        [b-b] (8)

    state : 8 
    node : | 8 -> 1
                    [a-a] (2)
                        [b-b] (2)

    state : 5 
                    [a-a] (1)
                        [b-b] (9)

    state : 9 
                    [a-a] (1)          <---- 間違い  2 とmergeしているはずだが...
                        [b-b] (3)

    state : 3*
                        [a-a] (5)
                    [b-b] (1)

    やはり charClassMerge のbugだった。

    createCharClassRangeで、同じものだったら新しく作らないってのがあると良い
    charClassMerg が同じものを返す場合があるってことね
    同じレンジで同じ状態のものだけなので、それほどあるとは思えないが。


Mon Feb  1 01:51:10 JST 2016 kono

    非決定性がある時の maxmum match がよろしくない
    これ以上拡張できないという終了条件の実現は?

         ./regexParser -ts  -subset -regex '(a|b)*a' -file ahoaho.txt

    で、bの後にaが来なくなると、bの手前までをacceptする

    subset construction はいじらない方針で。


        state : 1 
        node : + 1 -> 1
                            [a-a] (3)
                        [b-b] (1)

        state : 2*
        node : e 2 -> 1

        state : 3*
                            [a-a] (3)
                        [b-b] (1)

    * はaccept state。 

    [a-a] (3) で stateMatch で良いが、maxmum だと match している間は stateMatch はしない。
    現状は、*の付いているstateで、条件にmatchしない時に stateMatch してる。 
    これだと state 3 で b で satete 1 に行ってしまい、b 以降に a がない時に失敗する。b に行く前の state 3 で stateMatchするべき。

    matchする可能性がなくなったところで、前の部分でmatchさせる必要がある。
        * match してなければ、match top をupdate
        * match している間は直前matchをupdate
        * match fail  したところで、直前のmatch があれば、それを返す
    という感じか?

    minimum match は
        * match してなければ、match top をupdate
        * match したところで、直前のmatch があれば、それを返す
    か?

    ソース生成を CbC に対応させる。(でないと動かないらしい)


Sun Jan 31 20:37:49 JST 2016 masa
    並列処理時のバグ Ok
    (mili|have) のsubset construction のミス   Ok
    tSearch の segv  Ok

    '(main|int) '   ..  Ok
    '(main|int)\('  ..  Ok

    とかが動かない。

    start state に accept flag が立っていると''にmatchしてしまう。それは別に生成する。

Sat Jan  2 15:29:16 JST 2016 kono

     stateよりもstate transitionの方が大きいので、subset contructionで CharClassWalkするのは良くない。
     mergeTransition した時に、state listに新しいものを接続してやれば、CharClassWalkの必要はない。
     その時に、stateArray には入れないでおく。sateArrayは処理済みなので。

     EOF stateには cc がないので特別扱いする必要がある。

Tue Dec 29 17:55:17 JST 2015 kono

    Todo は上に付け加えていく。

         abc*d     +
                  / \
                 +   d
                / \
               +   *
              / \  |
             a   b c

    Parserを書き換えて、

         abc*d  +
               / \
              a   + 
                 / \
                b   +
                   / \
                  *   d
                  |
                  c

    とすることもできる。たぶん、こっちの方が良い。でも、
          ((ab)(c*))d
    と書いても良いはずで、しかも、これは abc*d とおなじになるので解決になってない。

    sub treeは、最初の状態を返す必要がある。そうでないと、
         (ab*|bc*)
    とかがうまく動かない。

    最後が*で終わっている時には、次の式と重ねる必要がある。なので、
         最後の*があれば、それを持ち歩く
    方式が良いと思います。

    stateAllocateをgenerateTransitionは1 passにすると stateArrayの大きさを徐々に増やす必要がある。
    少なくともループは一つにした方が間違いが少ないだろう。


2015年 12月27日 日曜日 19時31分03秒 JST
    例題 特定の IP のアクセス数をカウントする
    concordance 
    regex をつかった条件付き concordance
    regex をつかった条件付き wordcount
    これを行う perl スクリプトと比較

2015年 12月26日 土曜日 18時07分00秒 JST
    TODO CharClassWalker の routine test を作成する
    TODO CharClassMerge の routine test を作成する
    TODO searchBit の routine test を作成する
    TODO subsetConstraction の routine test を作成する