All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.khbd.interp4j.processor.s.expr.SExpressionParser Maven / Gradle / Ivy

There is a newer version: 2.0.0_jre21
Show newest version
package dev.khbd.interp4j.processor.s.expr;

import lombok.NonNull;
import org.petitparser.context.Result;
import org.petitparser.tools.GrammarParser;

import java.util.Optional;

/**
 * 'S' expression parser.
 *
 * @author Sergei_Khadanovich
 */
public final class SExpressionParser {

    private static final SExpressionParser INSTANCE = new SExpressionParser();

    private SExpressionParser() {
    }

    private final GrammarParser parser = new GrammarParser(new SGrammarDefinition());

    /**
     * Parse supplied string literal to {@link SExpression}.
     *
     * @param literal string literal
     * @return parsed {@link SExpression} or empty if parsing was failed
     */
    public Optional parse(@NonNull String literal) {
        Result result = parser.parse(literal);
        if (result.isFailure()) {
            return Optional.empty();
        }
        return Optional.of(result.get());
    }

    public static SExpressionParser getInstance() {
        return INSTANCE;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy