20 lines
538 B
Kotlin
20 lines
538 B
Kotlin
package dsl.ast.parser
|
|
|
|
import dsl.ast.model.entity.ParserOutput
|
|
import dsl.ast.model.node.RootNode
|
|
import dsl.token.model.entity.TokenList
|
|
|
|
class RootParser : Parser() {
|
|
override fun tryToParse(input: TokenList): ParserOutput {
|
|
return repeat(
|
|
oneOf(
|
|
ImportParser(),
|
|
FunctionDefinitionParser(),
|
|
ExtendParser(),
|
|
StatementParser()
|
|
)
|
|
) { list, tokenPosition ->
|
|
RootNode(list, tokenPosition)
|
|
}.parse(input)
|
|
}
|
|
} |