org.unlaxer.parser.elementary.ParenthesesParser Maven / Gradle / Ivy
package org.unlaxer.parser.elementary;
import java.util.List;
import org.unlaxer.Name;
import org.unlaxer.Token;
import org.unlaxer.parser.Parser;
import org.unlaxer.parser.Parsers;
import org.unlaxer.parser.ascii.LeftParenthesisParser;
import org.unlaxer.parser.ascii.RightParenthesisParser;
import org.unlaxer.parser.combinator.LazyChain;
public class ParenthesesParser extends LazyChain {
private static final long serialVersionUID = 6964996290002171327L;
Parser inner;
public ParenthesesParser(Name name , Parser inner) {
super(name);
this.inner = inner;
}
public ParenthesesParser(Parser inner) {
super();
this.inner = inner;
}
public static Token getParenthesesed(Token parenthesesed ){
if(false == parenthesesed.parser instanceof ParenthesesParser){
throw new IllegalArgumentException("this token did not generate from " +
ParenthesesParser.class.getName());
}
Parser contentsParser = ParenthesesParser.class.cast(parenthesesed.parser).inner;
return parenthesesed.children.stream()
.filter(token->token.parser.equals(contentsParser))
.findFirst().get();
}
public Parser getParenthesesedParser(){
return inner;
}
List parsers;
@Override
public void initialize() {
parsers =
new Parsers(
new LeftParenthesisParser(),
new SpaceDelimitor(),
inner,
new SpaceDelimitor(),
new RightParenthesisParser()
);
}
@Override
public List getLazyParsers() {
return parsers;
}
public static Token getInnerParserParsed(Token thisParserParsed) {
return thisParserParsed.children.get(2);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy