annotate c/dfaTobin/main.cc @ 47:3d59066744d8

fix
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Mon, 25 May 2015 14:50:51 +0900
parents e13aac1cff0f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
47
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
2 #include <stdlib.h>
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
3 #include <string.h>
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
4
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
5
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
6 const char *usr_help_str = "./dfa2bin -regex [regex]";
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
7
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
8 typedef struct dfa{
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
9 short int state : 1;
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
10 }dfa,*dfaPtr;
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
11
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
12 void checkAppearChar(unsigned char* regex, int regexLength){
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
13 int charTable[256];
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
14
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
15 for (int i = 0; i < regexLength; i++) {
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
16 charTable[i] += 1;
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
17 }
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
18
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
19 for (int i = 0; i < 256; i++) {
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
20 printf("charTable[%d] : %d\n",i,charTable[i]);
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
21 }
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
22 }
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
23
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
24 void dfa2bin(unsigned char *regex){
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
25 int regexLength = strlen((char*)regex);
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
26 char *regexCharTable = (char*)malloc(sizeof(char)*regexLength);
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
27 dfaPtr dfa = (dfaPtr)malloc(sizeof(dfa)*(regexLength+1));
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
28
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
29 for (int i = 0; i < regexLength+1 ; i++) {
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
30 dfa[i].state = 0;
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
31 }
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
32
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
33 dfa[0].state = 1;
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
34
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
35 checkAppearChar(regex,regexLength);
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
36 }
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
37
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 int main(int argc, char *argv[]){
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
47
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
41 unsigned char *regex = 0;
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 for (int i = 1; argv[i]; ++i) {
47
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
44 if (strcmp(argv[i], "-regex") == 0){
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
45 regex = (unsigned char*)argv[i+1];
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 }
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 }
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
46
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 45
diff changeset
49 if (regex == 0){
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 puts(usr_help_str);
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 exit(1);
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 }
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
47
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
54 dfa2bin(regex);
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
55
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 46
diff changeset
56 printf("regex : %s\n",regex);
45
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 return 0;
89a198fa6b23 add dfrTobin
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 }