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 parseSource( SourceText sourceText, Function, T> parseTokens ) { var tokens = tokenise(sourceText); var result = parseTokens.apply(tokens); tokens.skip(TokenType.END); return result; } }