Chset wsp = new Chset(" \t\r\n");
// recognize standard methods
Parser<RequestContext> method = null;
for (String methodName : STANDARD_METHODS) {
Parser<RequestContext> p = new Strcaselit(methodName).action(
new ParserFactory.MethodAction(methodName));
if (method == null) {
method = p;
} else {
method = Parser.alternative(method, p);
}
}
// support nonstandard methods too
method = Parser.alternative(
method,
Chset.ALPHA.plus().action(new ParserFactory.MethodAction()));
Parser<RequestContext> uri
= Chset.not(wsp).plus().action(new ParserFactory.UriAction());
Parser<RequestContext> version =
Parser.sequence(new Strcaselit("http/"),
Chset.DIGIT.plus().action(new MajorVersionAction()));
version = Parser.sequence(version, new Chset('.'));
version = Parser.sequence(version,
Chset.DIGIT.plus().action(new MinorVersionAction()));