Mercurial > hg > Members > masakoha > testcode
annotate c/regexParser/transition.h @ 112:ec485345daf9 pairPro
some function use static
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 23 Nov 2015 15:54:19 +0900 |
parents | a3adc5c24e19 |
children | 66c633575b53 |
rev | line source |
---|---|
110 | 1 typedef struct transition { |
2 CharClassPtr condition; | |
3 BitVectorPtr nextState; | |
4 struct transition *next; | |
5 } Transition, TransitionPtr; | |
6 | |
7 | |
8 typedef struct state { | |
9 TransitionPtr transition; | |
10 struct state *next; | |
11 } State; StatePtr; | |
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 */ |