org.unlaxer.parser.combinator.ChildOccursWithTerminator Maven / Gradle / Ivy
package org.unlaxer.parser.combinator;
import java.util.Optional;
import java.util.function.Supplier;
import org.unlaxer.Name;
import org.unlaxer.parser.ChildOccurs;
import org.unlaxer.parser.Parser;
import org.unlaxer.parser.Parsers;
public abstract class ChildOccursWithTerminator extends ConstructedOccurs {
private static final long serialVersionUID = -4411440278839259161L;
Optional> terminator;
public ChildOccursWithTerminator(Supplier inner) {
this(inner,null);
}
public ChildOccursWithTerminator(Class extends Parser> inner) {
this(()->Parser.get(inner),null);
}
ChildOccursWithTerminator(Supplier inner,Supplier terminator) {
this(null,inner,terminator);
}
public ChildOccursWithTerminator(Name name , Supplier inner) {
this(name , inner, null);
}
public ChildOccursWithTerminator(Name name , Class extends Parser> inner) {
this(name , ()->Parser.get(inner), null);
}
public ChildOccursWithTerminator(Name name , Class extends Parser> inner , Class extends Parser> terminator) {
this(name , ()->Parser.get(inner) , ()->Parser.get(terminator));
}
public ChildOccursWithTerminator(Name name , Parser inner , Parser terminator) {
this(name , ()->inner , ()->terminator);
}
ChildOccursWithTerminator(Name name , Supplier inner,Supplier terminator) {
super(name , terminator == null ?
new Parsers(inner):
new Parsers(inner,terminator));
this.terminator = Optional.ofNullable(terminator);
}
@Override
public Parser createParser() {
return this;
}
@Override
public ChildOccurs getChildOccurs() {
return ChildOccurs.multi;
}
@Override
public Optional getTerminator(){
return terminator.map(Supplier::get);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy