view regexParser/TODO @ 296:28c695dac305

Todo
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 02 Feb 2016 11:50:33 +0900
parents 0c663f46954d
children 63213964502a
line wrap: on
line source

Tue Feb  2 11:21:14 JST 2016

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

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

Tue Feb  2 09:55:40 JST 2016

    % ./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 を作成する