annotate c/regexParser/transition.h @ 110:a3adc5c24e19 pairPro

start branch
author masa
date Fri, 20 Nov 2015 21:02:00 +0900
parents
children ec485345daf9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
110
a3adc5c24e19 start branch
masa
parents:
diff changeset
1 typedef struct transition {
a3adc5c24e19 start branch
masa
parents:
diff changeset
2 CharClassPtr condition;
a3adc5c24e19 start branch
masa
parents:
diff changeset
3 BitVectorPtr nextState;
a3adc5c24e19 start branch
masa
parents:
diff changeset
4 struct transition *next;
a3adc5c24e19 start branch
masa
parents:
diff changeset
5 } Transition, TransitionPtr;
a3adc5c24e19 start branch
masa
parents:
diff changeset
6
a3adc5c24e19 start branch
masa
parents:
diff changeset
7
a3adc5c24e19 start branch
masa
parents:
diff changeset
8 typedef struct state {
a3adc5c24e19 start branch
masa
parents:
diff changeset
9 TransitionPtr transition;
a3adc5c24e19 start branch
masa
parents:
diff changeset
10 struct state *next;
a3adc5c24e19 start branch
masa
parents:
diff changeset
11 } State; StatePtr;
a3adc5c24e19 start branch
masa
parents:
diff changeset
12 /*
a3adc5c24e19 start branch
masa
parents:
diff changeset
13 正規表現木を辿って transition のList をつくる
a3adc5c24e19 start branch
masa
parents:
diff changeset
14 HcarClass のかさなりを判定して重なりのない新しいCharClassをつくる
a3adc5c24e19 start branch
masa
parents:
diff changeset
15 重なっている状態はbitvectorのorをとる
a3adc5c24e19 start branch
masa
parents:
diff changeset
16 重なっている状態はそれぞれの状態について木をたどる
a3adc5c24e19 start branch
masa
parents:
diff changeset
17
a3adc5c24e19 start branch
masa
parents:
diff changeset
18 nextState == 0 は正規表現の末端を表す
a3adc5c24e19 start branch
masa
parents:
diff changeset
19 nextState == 1 は受理状態を表す
a3adc5c24e19 start branch
masa
parents:
diff changeset
20 正規表現のノードの番号 n に対応する 2^n のbitをセットした状態
a3adc5c24e19 start branch
masa
parents:
diff changeset
21
a3adc5c24e19 start branch
masa
parents:
diff changeset
22
a3adc5c24e19 start branch
masa
parents:
diff changeset
23 | の場合は両方のListを結合する
a3adc5c24e19 start branch
masa
parents:
diff changeset
24 + の場合は左のノードに * がある場合は右のリストも結合する
a3adc5c24e19 start branch
masa
parents:
diff changeset
25 左のノードにあすたがない場合は、右のほうだけみる
a3adc5c24e19 start branch
masa
parents:
diff changeset
26 * は直下のリストを使って、次の状態を自分自身にする
a3adc5c24e19 start branch
masa
parents:
diff changeset
27 */