private static void printContext(Object caller, Context<Object> context) { String message = ErrorUtils.printErrorMessage("%s:%s:%s", "", context.getCurrentIndex(), context.getCurrentIndex() + 1, context.getInputBuffer()); System.err.println("*** " + caller + message + "\n\t" + Joiner.on("\n\t - ").join(context.getValueStack())); } }
@Override public Position get(Context<Object> context) { return context.getPosition(); }
@Override public String get(Context<Object> context) { return context.getMatch(); }
public Rule SingleQuoted() { return NodeSequence( !Character.isLetter(getContext().getInputBuffer().charAt(getContext().getCurrentIndex() - 1)), '\'', push(new QuotedNode(QuotedNode.Type.Single)), OneOrMore(TestNot(SingleQuoteEnd()), Inline(), addAsChild()), SingleQuoteEnd() ); }
@Override public Object get(Context<Object> context) { return context.getValueStack().pop(); }
@Override public boolean run(Context<CfgElement> context) { if (!context.inErrorRecovery()) { final int start = context.getMatchStartIndex(); final int end = context.getMatchEndIndex(); final InputBuffer ibuf = context.getInputBuffer(); final String value = ibuf.extract(start, end); ValueElement elemVal = new ValueElement(ibuf.getOriginalIndex(start), ibuf.getOriginalIndex(end), value); context.getValueStack().push(elemVal); } return true; }
public Rule NodeSequence(Object... nodeRules) { return Sequence( push(getContext().getCurrentIndex()), Sequence(nodeRules), setIndices() ); }
boolean debug(String text, Context context) { System.out.println("DEBUG("+context.getCurrentIndex()+"):" + text + " nodes:" +context.getSubNodes()); return true; }
@Override public boolean run(Context<CfgElement> context) { final ValueStack<CfgElement> stack = context.getValueStack(); if (!context.hasError()) { int size = stack.size(); switch (size) { case 1: CfgElement elemKey = stack.pop(); parsedProps.setProperty(unescape(elemKey.getText()), ""); cfgFile.getElements().add(new PairElement(elemKey)); break; case 2: // NOTE: stack popping order below is important! final CfgElement elemValue = stack.pop(); elemKey = stack.pop(); parsedProps.setProperty(unescape(elemKey.getText()), unescape(elemValue.getText())); cfgFile.getElements().add(new PairElement(elemKey, elemValue)); break; default: throw new IllegalStateException(String.format("Cannot manage %d values on the parsing stack", size)); } } else { stack.clear(); } return true; }
public Rule TableRow() { Var<Boolean> leadingPipe = new Var<Boolean>(Boolean.FALSE); return NodeSequence( push(new TableRowNode()), Optional('|', leadingPipe.set(Boolean.TRUE)), OneOrMore(TableCell(), addAsChild()), leadingPipe.get() || ((Node) peek()).getChildren().size() > 1 || getContext().getInputBuffer().charAt(matchEnd() - 1) == '|', Sp(), Newline() ); }
/** * Returns true if the current rule is running somewhere underneath a Test/TestNot rule. * Useful for example for making sure actions are not run inside of a predicate evaluation: * <code> * return Sequence( * ..., * inPredicate() || actions.doSomething() * ); * </code> * * @return true if in a predicate */ public boolean inPredicate() { check(); return context.inPredicate(); }
void registerComment(Context<Node> context, Comment c) { List<Comment> list = registeredComments.get(context); if (list == null) { list = Lists.newArrayList(); registeredComments.put(context.getSubNodes().get(0), list); } list.add(c); }
@Override public final T get(Context<Object> context) { @SuppressWarnings("unchecked") B builder = (B) context.getValueStack().pop(); return build(builder); }
public boolean apply(Tuple2<Context<?>, Boolean> tuple) { int line = tuple.a.getInputBuffer().getPosition(tuple.a.getCurrentIndex()).line; return firstLine <= line && line <= lastLine; } };
@Override public boolean run(Context<CfgElement> context) { if (!context.inErrorRecovery()) { final int start = context.getMatchStartIndex(); final int end = context.getMatchEndIndex(); final InputBuffer ibuf = context.getInputBuffer(); final String key = ibuf.extract(start, end); KeyElement elemKey = new KeyElement(ibuf.getOriginalIndex(start), ibuf.getOriginalIndex(end), key); context.getValueStack().push(elemKey); } return true; }
Var<SuperNode> tightFirstItem = new Var<SuperNode>(); return Sequence( push(getContext().getCurrentIndex()), FirstOf(CrossedOut(BlankLine(), block), tight.set(true)), CrossedOut(itemStart, block), Line(block), ZeroOrMore( push(getContext().getCurrentIndex()),
boolean markWhiteSpace(boolean whiteSpace) { if (!getContext().inPredicate()) { if (update != null) { update.trimRight(whiteSpace); update = null; } this.whiteSpace = whiteSpace; } return true; }
void registerComment(Context<Node> context, Comment c) { List<Comment> list = registeredComments.get(context); if (list == null) { list = Lists.newArrayList(); registeredComments.put(context.getSubNodes().get(0), list); } list.add(c); }
@Override public final boolean run(Context<Object> context) { Object value = get(context); context.getValueStack().push(value); return true; } }
private static void printContext(Object caller, Context<Object> context) { String message = ErrorUtils.printErrorMessage("%s:%s:%s", "", context.getCurrentIndex(), context.getCurrentIndex() + 1, context.getInputBuffer()); System.err.println("*** " + caller + message + "\n\t" + Joiner.on("\n\t - ").join(context.getValueStack())); } }