MCPcopy Create free account
hub / github.com/cschanck/single-file-java / seqOf

Method seqOf

src/main/java/org/sfj/PegLegParser.java:751–780  ·  view source on GitHub ↗

Core PEG rule: "Sequence". Matches a list of sub rules in order. All must match, or none do. Probably the most important rule. @param objs rules/string literals/char literals/execs @return sequence rule

(Object... objs)

Source from the content-addressed store, hash-verified

749 * @return sequence rule
750 */
751 public ParentRule seqOf(Object... objs) {
752 List<Step> steps = asSteps(objs);
753 PegLegRule<V> rule;
754 if (steps.size() == 1 && steps.get(0).isRule()) {
755 rule = steps.get(0).asRule();
756 } else {
757 rule = () -> {
758 get().pushFrame("seqOf()");
759 SingleNode<V> values = get().saveValues();
760 int cnt = get().frameDepth();
761 for (Step r : steps) {
762 if (r.isRule()) {
763 RuleReturn<V> ret = r.asRule().rule();
764 if (!ret.matched()) {
765 get().rollback(cnt, values);
766 return get().ruleReturn(false, false);
767 }
768 } else {
769 if (!r.asExec().exec()) {
770 get().rollback(cnt, values);
771 return get().ruleReturn(false, false);
772 }
773 }
774 }
775 get().trimFramesTo(cnt);
776 return get().ruleReturn(true, true);
777 };
778 }
779 return new ParentRule(rule);
780 }
781
782 /**
783 * Core PEG rule "Choice", here called firstOf. Tries each sub rule in turn, return first match.

Callers 15

innerTimesOfMethod · 0.95
testOfMethod · 0.95
testNotOfMethod · 0.95
abcdMethod · 0.80
abcd2Method · 0.80
fourCharsMethod · 0.80
oneMethod · 0.80
expressionMethod · 0.80
termMethod · 0.80
factorMethod · 0.80
numberMethod · 0.80
SMethod · 0.80

Calls 15

asStepsMethod · 0.95
getMethod · 0.95
isRuleMethod · 0.80
asRuleMethod · 0.80
pushFrameMethod · 0.80
saveValuesMethod · 0.80
frameDepthMethod · 0.80
matchedMethod · 0.80
rollbackMethod · 0.80
ruleReturnMethod · 0.80
execMethod · 0.80
asExecMethod · 0.80

Tested by 15

abcdMethod · 0.64
abcd2Method · 0.64
fourCharsMethod · 0.64
oneMethod · 0.64
expressionMethod · 0.64
termMethod · 0.64
factorMethod · 0.64
numberMethod · 0.64
SMethod · 0.64
AMethod · 0.64
BMethod · 0.64
stepsMethod · 0.64