1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
#include "../utf8.h"
#include "../str.h"
#include <stdio.h>
#include "../util.h"
#include "../dfa.h"
#define ADD_RANGE(X, Y) do { \
for (int i = 0; i + (X) <= (Y); i++) \
*(v+vlen++) = (NUM) i + (X); \
} while (0)
int
main(int UNUSED argc, char ** UNUSED argv)
{
UNUM vlen = 0;
NUM *v = MYALLOC(NUM, 1<<21);
ADD_RANGE(0x0020, 0x007f);
ADD_RANGE(0x2580, 0x259f);
ADD_RANGE(0x00a0, 0x00ff);
ADD_RANGE(0x25a0, 0x25ff);
ADD_RANGE(0x0100, 0x017f);
ADD_RANGE(0x2600, 0x26ff);
ADD_RANGE(0x0180, 0x024f);
ADD_RANGE(0x2700, 0x27bf);
ADD_RANGE(0x0250, 0x02af);
ADD_RANGE(0x27c0, 0x27ef);
ADD_RANGE(0x02b0, 0x02ff);
ADD_RANGE(0x27f0, 0x27ff);
ADD_RANGE(0x0300, 0x036f);
ADD_RANGE(0x2800, 0x28ff);
ADD_RANGE(0x0370, 0x03ff);
ADD_RANGE(0x2900, 0x297f);
ADD_RANGE(0x0400, 0x04ff);
ADD_RANGE(0x2980, 0x29ff);
ADD_RANGE(0x0500, 0x052f);
ADD_RANGE(0x2a00, 0x2aff);
ADD_RANGE(0x0530, 0x058f);
ADD_RANGE(0x2b00, 0x2bff);
ADD_RANGE(0x0590, 0x05ff);
ADD_RANGE(0x2e80, 0x2eff);
ADD_RANGE(0x0600, 0x06ff);
ADD_RANGE(0x2f00, 0x2fdf);
ADD_RANGE(0x0700, 0x074f);
ADD_RANGE(0x2ff0, 0x2fff);
ADD_RANGE(0x0780, 0x07bf);
ADD_RANGE(0x3000, 0x303f);
ADD_RANGE(0x0900, 0x097f);
ADD_RANGE(0x3040, 0x309f);
ADD_RANGE(0x0980, 0x09ff);
ADD_RANGE(0x30a0, 0x30ff);
ADD_RANGE(0x0a00, 0x0a7f);
ADD_RANGE(0x3100, 0x312f);
ADD_RANGE(0x0a80, 0x0aff);
ADD_RANGE(0x3130, 0x318f);
ADD_RANGE(0x0b00, 0x0b7f);
ADD_RANGE(0x3190, 0x319f);
ADD_RANGE(0x0b80, 0x0bff);
ADD_RANGE(0x31a0, 0x31bf);
ADD_RANGE(0x0c00, 0x0c7f);
ADD_RANGE(0x31f0, 0x31ff);
ADD_RANGE(0x0c80, 0x0cff);
ADD_RANGE(0x3200, 0x32ff);
ADD_RANGE(0x0d00, 0x0d7f);
ADD_RANGE(0x3300, 0x33ff);
ADD_RANGE(0x0d80, 0x0dff);
ADD_RANGE(0x3400, 0x4dbf);
ADD_RANGE(0x0e00, 0x0e7f);
ADD_RANGE(0x4dc0, 0x4dff);
ADD_RANGE(0x0e80, 0x0eff);
ADD_RANGE(0x4e00, 0x9fff);
ADD_RANGE(0x0f00, 0x0fff);
/* for (int i = 0; i < 190; i++)
* printf("v [%d] = %d\n", i, *(v+i)); */
dfa *dfap = dfa_from_bytes(vlen, v);
free(v);
if (dfap == NULL)
printf("returned null\n");
else
print_dfa(dfap);
/* char *s = MYALLOC(char, 5);
* str *strp = new_str(s, 5);
*
* for (int i = 0; i < 3; i++) {
* printf("\n\n");
*
* encode(v[i], strp);
*
* for (int j = 0; j < str_length(strp)-1;)
* printf("%d, ", *(s+j++)+(1<<8));
*
* printf("%d\n", *(s+str_length(strp)-1)+(1<<8));
* }
*
* destroy_str(strp, 1); */
/* BOOL result = run_dfa(dfap, 32239);
*
* printf("the result = %d\n", result); */
if (dfap) destroy_dfa(dfap);
return 0;
}
|