From 74d42588a45dec9676582e16e2bb7b96080fc1bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 6 Mar 2020 22:31:06 +0100 Subject: [PATCH] Migrate import parser to Kotlin --- .../kotlin/dsl/ast/model/node/ImportNode.kt | 12 ++++++++++ .../kotlin/dsl/ast/parser/ImportParser.kt | 23 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/main/kotlin/dsl/ast/model/node/ImportNode.kt create mode 100644 src/main/kotlin/dsl/ast/parser/ImportParser.kt diff --git a/src/main/kotlin/dsl/ast/model/node/ImportNode.kt b/src/main/kotlin/dsl/ast/model/node/ImportNode.kt new file mode 100644 index 0000000..c39ea2c --- /dev/null +++ b/src/main/kotlin/dsl/ast/model/node/ImportNode.kt @@ -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 + } +} \ No newline at end of file diff --git a/src/main/kotlin/dsl/ast/parser/ImportParser.kt b/src/main/kotlin/dsl/ast/parser/ImportParser.kt new file mode 100644 index 0000000..dab6b93 --- /dev/null +++ b/src/main/kotlin/dsl/ast/parser/ImportParser.kt @@ -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) + } +} \ No newline at end of file