1 4 package jfun.parsec; 5 6 final class FollowedByParser<R> extends Parser<R> { 7 private final Parser<?> sep; 8 9 private final Parser<R> p; 10 11 FollowedByParser(String n, Parser<?> sep, Parser<R> p) { 12 super(n); 13 this.sep = sep; 14 this.p = p; 15 } 16 17 boolean apply(final ParseContext ctxt) { 18 final boolean r1 = p.parse(ctxt); 19 if (!r1) 20 return r1; 21 final R ret = p.getReturn(ctxt); 22 if (!sep.parse(ctxt)) 23 return false; 24 ctxt.setReturn(ret); 25 return true; 26 } 27 } | Popular Tags |