From 6e9d3d06fb98fc15f00619aba7cc9dfd987c232b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 6 Mar 2020 17:46:48 +0100 Subject: [PATCH] Migrate list parser to Kotlin --- .../kotlin/dsl/ast/model/node/AbstractIterableNode.kt | 5 +++++ src/main/kotlin/dsl/ast/model/node/ListNode.kt | 5 +++++ src/main/kotlin/dsl/ast/parser/AbstractIterableParser.kt | 2 -- src/main/kotlin/dsl/ast/parser/AtomParser.kt | 3 ++- src/main/kotlin/dsl/ast/parser/ListParser.kt | 8 ++++++++ 5 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/main/kotlin/dsl/ast/model/node/AbstractIterableNode.kt create mode 100644 src/main/kotlin/dsl/ast/model/node/ListNode.kt create mode 100644 src/main/kotlin/dsl/ast/parser/ListParser.kt diff --git a/src/main/kotlin/dsl/ast/model/node/AbstractIterableNode.kt b/src/main/kotlin/dsl/ast/model/node/AbstractIterableNode.kt new file mode 100644 index 0000000..d70fdcf --- /dev/null +++ b/src/main/kotlin/dsl/ast/model/node/AbstractIterableNode.kt @@ -0,0 +1,5 @@ +package dsl.ast.model.node + +import dsl.token.model.entity.TokenPosition + +abstract class AbstractIterableNode(items: List, position: TokenPosition) : Node(items, position) \ No newline at end of file diff --git a/src/main/kotlin/dsl/ast/model/node/ListNode.kt b/src/main/kotlin/dsl/ast/model/node/ListNode.kt new file mode 100644 index 0000000..178246d --- /dev/null +++ b/src/main/kotlin/dsl/ast/model/node/ListNode.kt @@ -0,0 +1,5 @@ +package dsl.ast.model.node + +import dsl.token.model.entity.TokenPosition + +class ListNode(items: List, position: TokenPosition) : AbstractIterableNode(items, position) \ No newline at end of file diff --git a/src/main/kotlin/dsl/ast/parser/AbstractIterableParser.kt b/src/main/kotlin/dsl/ast/parser/AbstractIterableParser.kt index 6e2ba06..6f0a3e3 100644 --- a/src/main/kotlin/dsl/ast/parser/AbstractIterableParser.kt +++ b/src/main/kotlin/dsl/ast/parser/AbstractIterableParser.kt @@ -6,8 +6,6 @@ import dsl.token.model.entity.TokenList import dsl.token.model.entity.TokenPosition import dsl.token.model.enumeration.TokenType -class AbstractIterableNode(beginNode: Node, items: List) : Node(items, beginNode.position) - abstract class AbstractIterableParser( private val beginTokenType: TokenType, private val itemParser: Parser, diff --git a/src/main/kotlin/dsl/ast/parser/AtomParser.kt b/src/main/kotlin/dsl/ast/parser/AtomParser.kt index 67e752e..a5fd101 100644 --- a/src/main/kotlin/dsl/ast/parser/AtomParser.kt +++ b/src/main/kotlin/dsl/ast/parser/AtomParser.kt @@ -23,7 +23,8 @@ class AtomParser : Parser() { FloatLiteralParser(), IntegerLiteralParser(), NoteLiteralParser(), - StringLiteralParser() + StringLiteralParser(), + ListParser() ) ) diff --git a/src/main/kotlin/dsl/ast/parser/ListParser.kt b/src/main/kotlin/dsl/ast/parser/ListParser.kt new file mode 100644 index 0000000..a94e692 --- /dev/null +++ b/src/main/kotlin/dsl/ast/parser/ListParser.kt @@ -0,0 +1,8 @@ +package dsl.ast.parser + +import dsl.ast.model.node.ListNode +import dsl.token.model.enumeration.TokenType + +class ListParser : AbstractIterableParser(TokenType.OPEN_SQUARE, ExpressionParser(), TokenType.CLOSE_SQUARE, { + list, tokenPosition -> ListNode(list, tokenPosition) +}) \ No newline at end of file