Migrate import parser to Kotlin
This commit is contained in:
12
src/main/kotlin/dsl/ast/model/node/ImportNode.kt
Normal file
12
src/main/kotlin/dsl/ast/model/node/ImportNode.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
|
||||
class ImportNode(path: Node, position: TokenPosition) : Node(1, position) {
|
||||
val path: Node
|
||||
get() = children[0]
|
||||
|
||||
init {
|
||||
children[0] = path
|
||||
}
|
||||
}
|
||||
23
src/main/kotlin/dsl/ast/parser/ImportParser.kt
Normal file
23
src/main/kotlin/dsl/ast/parser/ImportParser.kt
Normal file
@@ -0,0 +1,23 @@
|
||||
package dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.ImportNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
|
||||
class ImportParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
val pathParser = oneOf(
|
||||
UnitParser(),
|
||||
SimpleIdentifierParser(),
|
||||
StringLiteralParser()
|
||||
)
|
||||
|
||||
return allOf(
|
||||
terminal(TokenType.IMPORT),
|
||||
pathParser
|
||||
) {
|
||||
ImportNode(it[1], it[0].position)
|
||||
}.parse(input)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user