1 5 package org.h2.bnf; 6 7 import java.util.HashMap ; 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 name() { 18 return rule.name(); 19 } 20 21 public Rule last() { 22 return this; 23 } 24 25 public void setLinks(HashMap ruleMap) { 26 } 28 29 public String random(Bnf config, int level) { 30 return rule.random(config, level); 31 } 32 33 public String matchRemove(String 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 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 query, Sentence sentence) { 52 if(sentence.stop()) { 53 return; 54 } 55 while(true) { 56 rule.addNextTokenList(query, sentence); 57 String s = rule.matchRemove(query, sentence); 58 if(s == null || s==query) { 59 break; 60 } 61 query = s; 62 } 63 } 64 65 } 66 | Popular Tags |