xref: /aosp_15_r20/external/marisa-trie/bindings/perl/sample.pl (revision ab8db090fce404b23716c4c9194221ee27efe31c)
1*ab8db090SAndroid Build Coastguard Workeruse marisa;
2*ab8db090SAndroid Build Coastguard Worker
3*ab8db090SAndroid Build Coastguard Worker$keyset = new marisa::Keyset;
4*ab8db090SAndroid Build Coastguard Worker$keyset->push_back("cake");
5*ab8db090SAndroid Build Coastguard Worker$keyset->push_back("cookie");
6*ab8db090SAndroid Build Coastguard Worker$keyset->push_back("ice");
7*ab8db090SAndroid Build Coastguard Worker$keyset->push_back("ice-cream");
8*ab8db090SAndroid Build Coastguard Worker
9*ab8db090SAndroid Build Coastguard Worker$trie = new marisa::Trie;
10*ab8db090SAndroid Build Coastguard Worker$trie->build($keyset);
11*ab8db090SAndroid Build Coastguard Workerprint("no. keys: ", $trie->num_keys(), "\n");
12*ab8db090SAndroid Build Coastguard Workerprint("no. tries: ", $trie->num_tries(), "\n");
13*ab8db090SAndroid Build Coastguard Workerprint("no. nodes: ", $trie->num_nodes(), "\n");
14*ab8db090SAndroid Build Coastguard Workerprint("size: ", $trie->io_size(), "\n");
15*ab8db090SAndroid Build Coastguard Worker
16*ab8db090SAndroid Build Coastguard Worker$agent = new marisa::Agent;
17*ab8db090SAndroid Build Coastguard Worker
18*ab8db090SAndroid Build Coastguard Worker$agent->set_query("cake");
19*ab8db090SAndroid Build Coastguard Worker$trie->lookup($agent);
20*ab8db090SAndroid Build Coastguard Workerprint($agent->query_str(), ": ", $agent->key_id(), "\n");
21*ab8db090SAndroid Build Coastguard Worker
22*ab8db090SAndroid Build Coastguard Worker$agent->set_query("cookie");
23*ab8db090SAndroid Build Coastguard Worker$trie->lookup($agent);
24*ab8db090SAndroid Build Coastguard Workerprint($agent->query_str(), ": ", $agent->key_id(), "\n");
25*ab8db090SAndroid Build Coastguard Worker
26*ab8db090SAndroid Build Coastguard Worker$agent->set_query("cockoo");
27*ab8db090SAndroid Build Coastguard Workerif ($trie->lookup(agent)) {
28*ab8db090SAndroid Build Coastguard Worker  print($agent->query_str(), ": not found\n");
29*ab8db090SAndroid Build Coastguard Worker}
30*ab8db090SAndroid Build Coastguard Worker
31*ab8db090SAndroid Build Coastguard Workerprint("ice: ", $trie->lookup("ice"), "\n");
32*ab8db090SAndroid Build Coastguard Workerprint("ice-cream: ", $trie->lookup("ice-cream"), "\n");
33*ab8db090SAndroid Build Coastguard Workerif ($trie->lookup("ice-age") == $marisa::INVALID_KEY_ID) {
34*ab8db090SAndroid Build Coastguard Worker  print("ice-age: not found\n");
35*ab8db090SAndroid Build Coastguard Worker}
36*ab8db090SAndroid Build Coastguard Worker
37*ab8db090SAndroid Build Coastguard Worker$trie->save("sample.dic");
38*ab8db090SAndroid Build Coastguard Worker$trie->load("sample.dic");
39*ab8db090SAndroid Build Coastguard Worker
40*ab8db090SAndroid Build Coastguard Worker$agent->set_query(0);
41*ab8db090SAndroid Build Coastguard Worker$trie->reverse_lookup($agent);
42*ab8db090SAndroid Build Coastguard Workerprint($agent->query_id(), ": ", $agent->key_str(), "\n");
43*ab8db090SAndroid Build Coastguard Worker$agent->set_query(1);
44*ab8db090SAndroid Build Coastguard Worker$trie->reverse_lookup($agent);
45*ab8db090SAndroid Build Coastguard Workerprint($agent->query_id(), ": ", $agent->key_str(), "\n");
46*ab8db090SAndroid Build Coastguard Worker
47*ab8db090SAndroid Build Coastguard Workerprint("2: ", $trie->reverse_lookup(2), "\n");
48*ab8db090SAndroid Build Coastguard Workerprint("3: ", $trie->reverse_lookup(3), "\n");
49*ab8db090SAndroid Build Coastguard Worker
50*ab8db090SAndroid Build Coastguard Worker$trie->mmap("sample.dic");
51*ab8db090SAndroid Build Coastguard Worker
52*ab8db090SAndroid Build Coastguard Worker$agent->set_query("ice-cream soda");
53*ab8db090SAndroid Build Coastguard Workerwhile ($trie->common_prefix_search($agent)) {
54*ab8db090SAndroid Build Coastguard Worker  print($agent->query_str(), ": ", $agent->key_str(), " (",
55*ab8db090SAndroid Build Coastguard Worker        $agent->key_id(), ")\n");
56*ab8db090SAndroid Build Coastguard Worker}
57*ab8db090SAndroid Build Coastguard Worker
58*ab8db090SAndroid Build Coastguard Worker$agent->set_query("ic");
59*ab8db090SAndroid Build Coastguard Workerwhile ($trie->predictive_search($agent)) {
60*ab8db090SAndroid Build Coastguard Worker  print($agent->query_str(), ": ", $agent->key_str(), " (",
61*ab8db090SAndroid Build Coastguard Worker        $agent->key_id(), ")\n");
62*ab8db090SAndroid Build Coastguard Worker}
63