blob: 8144f11ac77c31243d08d4d4bee052de6e79f282 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package org.shedlang.compiler.parser;
import org.shedlang.compiler.tokeniser.TokenIterator;
import org.shedlang.compiler.types.NamespaceName;
import org.zwobble.sourcetext.SourceText;
import java.util.function.Function;
import static org.shedlang.compiler.parser.Tokeniser.tokenise;
public class SourceParser {
private SourceParser() {
}
public static NamespaceName parseNamespaceName(SourceText sourceText) {
return parseSource(sourceText, tokens -> Parser.parseNamespaceName(tokens));
}
private static <T> T parseSource(
SourceText sourceText,
Function<TokenIterator<TokenType>, T> parseTokens
) {
var tokens = tokenise(sourceText);
var result = parseTokens.apply(tokens);
tokens.skip(TokenType.END);
return result;
}
}
|