KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > bnf > RuleRepeat


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.bnf;
6
7 import java.util.HashMap JavaDoc;
8
9 public class RuleRepeat implements Rule {
10     
11     Rule rule;
12     
13     RuleRepeat(Rule rule) {
14         this.rule = rule;
15     }
16
17     public String JavaDoc name() {
18         return rule.name();
19     }
20
21     public Rule last() {
22         return this;
23     }
24
25     public void setLinks(HashMap JavaDoc ruleMap) {
26 // rule.setLinks(ruleMap);
27
}
28
29     public String JavaDoc random(Bnf config, int level) {
30         return rule.random(config, level);
31     }
32     
33     public String JavaDoc matchRemove(String JavaDoc query, Sentence sentence) {
34         if(sentence.stop()) {
35             return null;
36         }
37         if(query.length()==0) {
38             return null;
39         }
40         while(true) {
41             String JavaDoc s = rule.matchRemove(query, sentence);
42             if(s==null) {
43                 return query;
44             } else if(s.length()==0) {
45                 return s;
46             }
47             query = s;
48         }
49     }
50
51     public void addNextTokenList(String JavaDoc query, Sentence sentence) {
52         if(sentence.stop()) {
53             return;
54         }
55         while(true) {
56             rule.addNextTokenList(query, sentence);
57             String JavaDoc s = rule.matchRemove(query, sentence);
58             if(s == null || s==query) {
59                 break;
60             }
61             query = s;
62         }
63     }
64
65 }
66
Popular Tags