aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java
blob: 8971f8a242b59d6ac77427789d61e5ff8074ef2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package org.zwobble.mammoth.styles.parsing;

import org.parboiled.BaseParser;
import org.parboiled.Parboiled;
import org.parboiled.Rule;
import org.parboiled.parserunners.ReportingParseRunner;
import org.parboiled.support.ParsingResult;

import java.util.function.Function;

public class Parsing {
    public static <T, U extends BaseParser<T>, V> void parse(Class<U> parserType, Function<U, Rule> rule, String value) {
        U parser = Parboiled.createParser(parserType);
        ReportingParseRunner<T> runner = new ReportingParseRunner<>(rule.apply(parser));
        ParsingResult<T> result = runner.run(value);
        if (result.hasErrors()) {
            // TODO: wrap in result
            throw new RuntimeException("Parse error");
        }
    }
}