public static final void main(String[] args) {
int token;
PatternMatcherInput input;
PatternMatcher matcher;
PatternCompiler compiler;
Pattern[] patterns;
Pattern tokenSeparator = null;
MatchResult result;
if(args.length < 1) {
System.err.println("Usage: prefixExample < sample input >");
System.exit(1);
}
input = new PatternMatcherInput(args[0]);
compiler = new AwkCompiler();
patterns = new Pattern[tokens.length];
try {
tokenSeparator = compiler.compile(whitespace);
for(token=0; token < tokens.length; token++)
patterns[token] = compiler.compile(tokens[token]);
} catch(MalformedPatternException e) {
System.err.println("Bad pattern.");
e.printStackTrace();
System.exit(1);
}
matcher = new AwkMatcher();
_whileLoop:
while(!input.endOfInput()) {
for(token = 0; token < tokens.length; token++)
if(matcher.matchesPrefix(input, patterns[token])) {
int offset;
result = matcher.getMatch();
offset = input.getCurrentOffset();
input.setCurrentOffset(result.endOffset(0));
if(matcher.matchesPrefix(input, tokenSeparator)) {
input.setCurrentOffset(matcher.getMatch().endOffset(0));
System.out.println(types[token] + ": " + result);
continue _whileLoop;
} else if(input.endOfInput()) {
System.out.println(types[token] + ": " + result);
break _whileLoop;
}
input.setCurrentOffset(offset);
}
if(matcher.matchesPrefix(input, tokenSeparator))
input.setCurrentOffset(matcher.getMatch().endOffset(0));
else {
System.err.println("Unrecognized token starting at offset: " +
input.getCurrentOffset());
break;
}
}
}
|