static void token_word_test(const char *tokens, const char *test_tab[]) { ACL_TOKEN *token_tree; const char *ptr; int i; token_tree = acl_token_tree_create(tokens); acl_token_tree_print(token_tree); for (i = 0; test_tab[i] != NULL; i++) { ptr = test_tab[i]; printf("match %s %s\n", ptr, acl_token_tree_word_match(token_tree, ptr) ? "yes" : "no"); } acl_token_tree_destroy(token_tree); }
int acl_xml3_tag_selfclosed(const char *tag) { const ACL_TOKEN *token; char buf[256]; if (tag_tree == NULL) return (0); ACL_SAFE_STRNCPY(buf, tag, sizeof(buf)); acl_lowercase(buf); token = acl_token_tree_word_match(tag_tree, buf); if (token) return 1; else return 0; }
static void test2(void) { ACL_TOKEN *tree; ACL_TOKEN *token; const char *n1 = "名称1", *n2 = "名称2", *n3 = "名称3"; const char *v1 = "变量1", *v2 = "变量2", *v3 = "变量3"; const char *s = "中国人民名称1,在这个世界上,你在哪儿名称2? " "我不知道你的名称,你能告诉我吗?我的名称3是..."; const char *p = s; if (1) { tree = acl_token_tree_create(NULL); acl_token_tree_add(tree, n1, ACL_TOKEN_F_STOP, v1); acl_token_tree_add(tree, n2, ACL_TOKEN_F_STOP, v2); acl_token_tree_add(tree, n3, ACL_TOKEN_F_STOP, v3); } else tree = acl_token_tree_create("名称1|p 名称2|p 名称3|p"); printf("-----------------------------------\n"); acl_token_tree_print(tree); token = acl_token_tree_word_match(tree, "名称1"); if (token) printf("find, %s: %s\n", acl_token_name1(token), (const char*) token->ctx); else printf("no find\n"); printf("-----------------------------------\n"); while (*p) { token = acl_token_tree_match(tree, &p, NULL, NULL); if (token == NULL) break; printf("%s: %s\n", acl_token_name1(token), (const char*) token->ctx); } printf("-----------------------------------\n"); acl_token_tree_destroy(tree); }