正規表現の Subset Constraction の状態の集合を生成するために正規表現の Parser を記述している
正規表現の二分木が正しく構築できているかどうか確認するために、Tree を表示させるためのプログラムを書いている。
二分木を表示するための関数を作成
% ./regexParser -regex "test"
t
+
s
+
e
+
t
% ./regexParser -regex "a*bc"
c
+
b
+
*
a
同じ正規表現でも生成される木が違う(正しくもない)
% ./regexParser -regex "(a*b)"
+
b
+
*
a
% ./regexParser -regex "a*b"
b
+
*
a
理想
b
*
a
'|'の挙動が正しくない
% ./regexParser -regex "(a|b)c"
c
+
b
|
a
理想
c
+
b
|
a
'(' ')'まわりと '|' まわりの処理が正しくない
typedef struct node {
unsigned char type;
union value {
charClass *cc;
unsigned char character;
} Value, *ValuePtr;
struct node *self;
struct node *left;
struct node *right;
} Node, *NodePtr;
木を表示する際に、右ノード、親ノード、左ノードの順番で表示する。
右ノードから親ノードに移動する際、ノードを遡るための情報が node に持っていない。
親ノードの情報も持たせたほうが良さそう