+ public final String token;
+
+ /**
+ * {@link Terminator} that matched current token
+ */
+ public final Terminator terminator;
+
+ public final Matcher matcher;
+
+ private Tokenizer tokenizer;
+
+ public TokenizerMatch(final String token, final Terminator terminator, Matcher matcher, Tokenizer tokenizer) {
+ this.token = token;
+ this.terminator = terminator;
+ this.matcher = matcher;
+ this.tokenizer = tokenizer;
+ }
+
+ public boolean isGroup(String group){
+ if (terminator == null){
+ return group == null;
+ }
+
+ if (terminator.group == null){
+ return group == null;
+ }
+
+ return terminator.group.equals(group);
+ }
+
+ public String[] getRegExpGroups(){
+ String[] result = new String[matcher.groupCount()];
+
+ for (int i = 0; i< result.length; i++){
+ result[i] = matcher.group(i+1);
+ }
+
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder result = new StringBuilder();
+ result.append("TokenizerMatch\n" +
+ " token='" + token + "'\n" +
+ " terminator=" + terminator + "\n" +
+ " groups:\n");
+
+ int i = 0;
+ for (String s : getRegExpGroups()) {
+ result.append(" " + i + ": " + s + "\n");
+ i++;
+ }
+
+ return result.toString();
+ }