Mercurial > hg > Applications > Grep
annotate regexParser/transition.h @ 182:dbe004d03ef0 pairPro
implement stateAllocate()
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 24 Dec 2015 19:14:49 +0900 |
parents | d97bcab546e8 |
children | 1da1b2eacb84 |
rev | line source |
---|---|
116
66c633575b53
remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
1 #include "bitVector.h" |
66c633575b53
remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
2 |
110 | 3 typedef struct state { |
175
3be0fbcd4b52
implement createTransitionGenerator
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
173
diff
changeset
|
4 BitVector bitState; |
178
5e8c6857934c
implement charClassMerge
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
177
diff
changeset
|
5 CharClassPtr cc; |
5e8c6857934c
implement charClassMerge
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
177
diff
changeset
|
6 NodePtr node; |
110 | 7 struct state *next; |
116
66c633575b53
remove error and warning
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
112
diff
changeset
|
8 } State, *StatePtr; |
140
84a2a5209d3a
change some variable name
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
116
diff
changeset
|
9 |
177
8de9a33f6ae5
change createState aug
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
176
diff
changeset
|
10 StatePtr createState(BitVector bi); |
176
c092dd0e1ae0
implement appendState() and serchState()
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
175
diff
changeset
|
11 StatePtr appendState(StatePtr x,StatePtr y); |
110 | 12 /* |
13 正規表現木を辿って transition のList をつくる | |
112
ec485345daf9
some function use static
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
110
diff
changeset
|
14 CharClass のかさなりを判定して重なりのない新しいCharClassをつくる |
110 | 15 重なっている状態はbitvectorのorをとる |
16 重なっている状態はそれぞれの状態について木をたどる | |
112
ec485345daf9
some function use static
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
110
diff
changeset
|
17 |
110 | 18 nextState == 0 は正規表現の末端を表す |
19 nextState == 1 は受理状態を表す | |
20 正規表現のノードの番号 n に対応する 2^n のbitをセットした状態 | |
112
ec485345daf9
some function use static
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
110
diff
changeset
|
21 |
110 | 22 | の場合は両方のListを結合する |
23 + の場合は左のノードに * がある場合は右のリストも結合する | |
112
ec485345daf9
some function use static
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
110
diff
changeset
|
24 左のノードに*がない場合は、右のほうだけみる |
110 | 25 * は直下のリストを使って、次の状態を自分自身にする |
26 */ |