Move all classes to new io.smnp package
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
import interpreter.Interpreter
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val interpreter = Interpreter()
|
||||
interpreter.run("extend list<note, int> as this { function play() { play(this); return null; } function x() {} }")
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class BoolLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class FloatLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class IdentifierNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class IntegerLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,7 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
|
||||
class NoneNode : Node(0,
|
||||
TokenPosition.NONE
|
||||
)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class NoteLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
|
||||
class RootNode(nodes: List<Node>, position: TokenPosition) : Node(nodes, position)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class StringLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +0,0 @@
|
||||
package dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
|
||||
class TokenNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,12 +0,0 @@
|
||||
package dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.BoolLiteralNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
|
||||
class BoolLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.BOOL) { BoolLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.FloatLiteralNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
|
||||
class FloatLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.FLOAT) { FloatLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.IntegerLiteralNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
|
||||
class IntegerLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.INTEGER) { IntegerLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.NoteLiteralNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
|
||||
class NoteLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.NOTE) { NoteLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
package dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.StringLiteralNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
|
||||
class StringLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.STRING) { StringLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package evaluation.environment
|
||||
|
||||
class Environment {
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package evaluation.evaluator
|
||||
|
||||
import data.model.Value
|
||||
import dsl.ast.model.node.BoolLiteralNode
|
||||
import dsl.ast.model.node.Node
|
||||
import evaluation.environment.Environment
|
||||
import evaluation.model.entity.EvaluatorOutput
|
||||
|
||||
class BoolLiteralEvaluator : Evaluator {
|
||||
override fun evaluate(node: Node, environment: Environment): EvaluatorOutput {
|
||||
val value = (node as BoolLiteralNode).token.value as Boolean
|
||||
return EvaluatorOutput.value(Value.bool(value))
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package evaluation.evaluator
|
||||
|
||||
import data.model.Value
|
||||
import dsl.ast.model.node.FloatLiteralNode
|
||||
import dsl.ast.model.node.Node
|
||||
import evaluation.environment.Environment
|
||||
import evaluation.model.entity.EvaluatorOutput
|
||||
|
||||
class FloatLiteralEvaluator : Evaluator {
|
||||
override fun evaluate(node: Node, environment: Environment): EvaluatorOutput {
|
||||
val value = (node as FloatLiteralNode).token.value as Float
|
||||
return EvaluatorOutput.value(Value.float(value))
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package evaluation.evaluator
|
||||
|
||||
import data.model.Value
|
||||
import dsl.ast.model.node.IntegerLiteralNode
|
||||
import dsl.ast.model.node.Node
|
||||
import evaluation.environment.Environment
|
||||
import evaluation.model.entity.EvaluatorOutput
|
||||
|
||||
class IntegerLiteralEvaluator : Evaluator {
|
||||
override fun evaluate(node: Node, environment: Environment): EvaluatorOutput {
|
||||
val value = (node as IntegerLiteralNode).token.value as Int
|
||||
return EvaluatorOutput.value(Value.int(value))
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
package evaluation.evaluator
|
||||
|
||||
import data.entity.Note
|
||||
import data.model.Value
|
||||
import dsl.ast.model.node.Node
|
||||
import dsl.ast.model.node.NoteLiteralNode
|
||||
import evaluation.environment.Environment
|
||||
import evaluation.model.entity.EvaluatorOutput
|
||||
|
||||
class NoteLiteralEvaluator : Evaluator {
|
||||
override fun evaluate(node: Node, environment: Environment): EvaluatorOutput {
|
||||
val value = (node as NoteLiteralNode).token.value as Note
|
||||
return EvaluatorOutput.value(Value.note(value))
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
package evaluation.evaluator
|
||||
|
||||
import data.model.Value
|
||||
import dsl.ast.model.node.Node
|
||||
import dsl.ast.model.node.StringLiteralNode
|
||||
import evaluation.environment.Environment
|
||||
import evaluation.model.entity.EvaluatorOutput
|
||||
|
||||
class StringLiteralEvaluator : Evaluator {
|
||||
override fun evaluate(node: Node, environment: Environment): EvaluatorOutput {
|
||||
val value = (node as StringLiteralNode).token.value as String
|
||||
return EvaluatorOutput.value(Value.string(value))
|
||||
}
|
||||
}
|
||||
5
src/main/kotlin/io/smnp/SMNP.kt
Normal file
5
src/main/kotlin/io/smnp/SMNP.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package io.smnp
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package data.entity
|
||||
package io.smnp.data.entity
|
||||
|
||||
import data.enumeration.Pitch
|
||||
import io.smnp.data.enumeration.Pitch
|
||||
|
||||
class Note private constructor(val pitch: Pitch, val octave: Int, val duration: Int, val dot: Boolean) {
|
||||
data class Builder(var pitch: Pitch = Pitch.A, var octave: Int = 4, var duration: Int = 4, var dot: Boolean = false) {
|
||||
@@ -1,6 +1,6 @@
|
||||
package data.enumeration
|
||||
package io.smnp.data.enumeration
|
||||
|
||||
import data.entity.Note
|
||||
import io.smnp.data.entity.Note
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
enum class DataType(val kotlinType: KClass<out Any>?) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package data.enumeration
|
||||
package io.smnp.data.enumeration
|
||||
|
||||
enum class Pitch {
|
||||
C, C_S, D, D_S, E, F, F_S, G, G_S, A, A_S, H;
|
||||
@@ -1,7 +1,7 @@
|
||||
package data.model
|
||||
package io.smnp.data.model
|
||||
|
||||
import data.entity.Note
|
||||
import data.enumeration.DataType
|
||||
import io.smnp.data.entity.Note
|
||||
import io.smnp.data.enumeration.DataType
|
||||
|
||||
class Value private constructor(val type: DataType, val value: Any?, val properties: Map<String, Value> = emptyMap()) {
|
||||
init {
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.model.entity
|
||||
package io.smnp.dsl.ast.model.entity
|
||||
|
||||
import dsl.ast.model.enumeration.ParsingResult
|
||||
import dsl.ast.model.node.Node
|
||||
import io.smnp.dsl.ast.model.enumeration.ParsingResult
|
||||
import io.smnp.dsl.ast.model.node.Node
|
||||
|
||||
class ParserOutput private constructor(val result: ParsingResult, val node: Node) {
|
||||
fun map(mapper: (Node) -> Node): ParserOutput {
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.enumeration
|
||||
package io.smnp.dsl.ast.model.enumeration
|
||||
|
||||
enum class ParsingResult {
|
||||
OK,
|
||||
@@ -1,6 +1,6 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
abstract class AbstractIterableNode(items: List<Node>, position: TokenPosition) : Node(items, position) {
|
||||
val items: List<Node>
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class AccessOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class AssignmentOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,6 +1,6 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.Token
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
abstract class AtomAbstractNode(val token: Token) : Node(1, token.position) {
|
||||
override fun pretty(prefix: String, last: Boolean, first: Boolean) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
abstract class BinaryOperatorAbstractNode(lhs: Node, operator: Node, rhs: Node) : Node(3, operator.position) {
|
||||
val lhs: Node
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class BlockNode(begin: Node, statements: List<Node>, end: Node) : Node(statements, begin.position) {
|
||||
val statements: List<Node>
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class BoolLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class ConditionNode(trueBranchToken: Node, condition: Node, trueBranch: Node, falseBranchToken: Node, falseBranch: Node) : Node(3, trueBranchToken.position) {
|
||||
val condition: Node
|
||||
@@ -1,6 +1,6 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class ExtendNode(type: Node, identifier: Node, functions: Node, position: TokenPosition) : Node(3, position) {
|
||||
val type: Node
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class FloatLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class FunctionCallArgumentsNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class FunctionCallNode(identifier: Node, arguments: Node) : Node(2, identifier.position) {
|
||||
val identifier: Node
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class FunctionDefinitionArgumentsNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)
|
||||
@@ -1,6 +1,6 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class FunctionDefinitionNode(identifier: Node, arguments: Node, body: Node, position: TokenPosition) : Node(3, position) {
|
||||
val identifier: Node
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class IdentifierNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,6 +1,6 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class ImportNode(path: Node, position: TokenPosition) : Node(1, position) {
|
||||
val path: Node
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class IntegerLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class ListNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class LogicOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class LoopNode(iterator: Node, parameters: Node, operator: Node, statement: Node, filter: Node): Node(4, operator.position) {
|
||||
val iterator: Node
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class LoopParametersNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class MapEntryNode(key: Node, operator: Node, value: Node) : Node(2, operator.position) {
|
||||
val key: Node
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class MapNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class MinusOperatorNode(operator: Node, operand: Node) : UnaryOperatorAbstractNode(operator, operand)
|
||||
@@ -1,6 +1,6 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
abstract class Node(numberOfChildren: Int, val position: TokenPosition) {
|
||||
var children: MutableList<Node> = MutableList(numberOfChildren) { NONE }
|
||||
7
src/main/kotlin/io/smnp/dsl/ast/model/node/NoneNode.kt
Normal file
7
src/main/kotlin/io/smnp/dsl/ast/model/node/NoneNode.kt
Normal file
@@ -0,0 +1,7 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class NoneNode : Node(0,
|
||||
TokenPosition.NONE
|
||||
)
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class NotOperatorNode(operator: Node, operand: Node) : UnaryOperatorAbstractNode(operator, operand)
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class NoteLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class OptionalFunctionDefinitionArgumentNode(identifier: Node, type: Node, defaultValue: Node) : Node(3, identifier.position) {
|
||||
val identifier: Node
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class PowerOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class ProductOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class RegularFunctionDefinitionArgumentNode(identifier: Node, type: Node, vararg: Node) : Node(3, identifier.position) {
|
||||
val identifier
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class RelationOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class ReturnNode(value: Node) : Node(1, value.position) {
|
||||
val value: Node
|
||||
5
src/main/kotlin/io/smnp/dsl/ast/model/node/RootNode.kt
Normal file
5
src/main/kotlin/io/smnp/dsl/ast/model/node/RootNode.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class RootNode(nodes: List<Node>, position: TokenPosition) : Node(nodes, position)
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class StringLiteralNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,3 +1,3 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class SumOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class ThrowNode(value: Node) : Node(1, value.position) {
|
||||
val value: Node
|
||||
5
src/main/kotlin/io/smnp/dsl/ast/model/node/TokenNode.kt
Normal file
5
src/main/kotlin/io/smnp/dsl/ast/model/node/TokenNode.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
|
||||
class TokenNode(token: Token) : AtomAbstractNode(token)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
class TypeNode(type: Node, specifiers: Node) : Node(2, type.position) {
|
||||
val type: Node
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class TypeSpecifierNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)
|
||||
@@ -1,5 +1,5 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
|
||||
class TypeSpecifiersNode(specifiers: List<Node>, position: TokenPosition) : Node(specifiers, position)
|
||||
@@ -1,4 +1,4 @@
|
||||
package dsl.ast.model.node
|
||||
package io.smnp.dsl.ast.model.node
|
||||
|
||||
abstract class UnaryOperatorAbstractNode(operator: Node, operand: Node) : Node(2, operator.position) {
|
||||
val operator: Node
|
||||
@@ -1,10 +1,10 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.Node
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.Node
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
abstract class AbstractIterableParser(
|
||||
private val beginTokenType: TokenType,
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.AssignmentOperatorNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.AssignmentOperatorNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class AssignmentOperatorParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,8 +1,8 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class AtomParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.BlockNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.BlockNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class BlockParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
12
src/main/kotlin/io/smnp/dsl/ast/parser/BoolLiteralParser.kt
Normal file
12
src/main/kotlin/io/smnp/dsl/ast/parser/BoolLiteralParser.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.BoolLiteralNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class BoolLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.BOOL) { BoolLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
|
||||
class ComplexIdentifierParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,10 +1,10 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.ConditionNode
|
||||
import dsl.ast.model.node.Node
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.ConditionNode
|
||||
import io.smnp.dsl.ast.model.node.Node
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class ConditionParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
|
||||
class ExpressionParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,11 +1,11 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.BlockNode
|
||||
import dsl.ast.model.node.ExtendNode
|
||||
import dsl.ast.model.node.Node
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.BlockNode
|
||||
import io.smnp.dsl.ast.model.node.ExtendNode
|
||||
import io.smnp.dsl.ast.model.node.Node
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class ExtendParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,10 +1,10 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.NotOperatorNode
|
||||
import dsl.ast.model.node.PowerOperatorNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.NotOperatorNode
|
||||
import io.smnp.dsl.ast.model.node.PowerOperatorNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class FactorParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
12
src/main/kotlin/io/smnp/dsl/ast/parser/FloatLiteralParser.kt
Normal file
12
src/main/kotlin/io/smnp/dsl/ast/parser/FloatLiteralParser.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.FloatLiteralNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class FloatLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.FLOAT) { FloatLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.node.FunctionCallArgumentsNode
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.node.FunctionCallArgumentsNode
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class FunctionCallArgumentsParser :
|
||||
AbstractIterableParser(TokenType.OPEN_PAREN, ExpressionParser(), TokenType.CLOSE_PAREN, { list, tokenPosition ->
|
||||
@@ -1,8 +1,8 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.FunctionCallNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.FunctionCallNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
|
||||
class FunctionCallParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
|
||||
class FunctionDefinitionArgumentParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.node.FunctionDefinitionArgumentsNode
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class FunctionDefinitionArgumentsParser : AbstractIterableParser(
|
||||
TokenType.OPEN_PAREN,
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.FunctionDefinitionNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.FunctionDefinitionNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class FunctionDefinitionParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.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
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.ImportNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class ImportParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -0,0 +1,12 @@
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.IntegerLiteralNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class IntegerLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.INTEGER) { IntegerLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.node.ListNode
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.node.ListNode
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class ListParser : AbstractIterableParser(
|
||||
TokenType.OPEN_SQUARE,
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
|
||||
class LiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.node.LoopParametersNode
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.node.LoopParametersNode
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class LoopParametersParser : AbstractIterableParser(
|
||||
TokenType.OPEN_PAREN,
|
||||
@@ -1,10 +1,10 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.LoopNode
|
||||
import dsl.ast.model.node.LoopParametersNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.LoopNode
|
||||
import io.smnp.dsl.ast.model.node.LoopParametersNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class LoopParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.MapEntryNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.MapEntryNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class MapEntryParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,7 +1,7 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.node.MapNode
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.node.MapNode
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class MapParser :
|
||||
AbstractIterableParser(TokenType.OPEN_CURLY, MapEntryParser(), TokenType.CLOSE_CURLY, { list, tokenPosition ->
|
||||
12
src/main/kotlin/io/smnp/dsl/ast/parser/NoteLiteralParser.kt
Normal file
12
src/main/kotlin/io/smnp/dsl/ast/parser/NoteLiteralParser.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.NoteLiteralNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class NoteLiteralParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
return terminal(TokenType.NOTE) { NoteLiteralNode(it) }.parse(input)
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class OptionalFunctionDefinitionArgumentParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,14 +1,14 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.enumeration.ParsingResult
|
||||
import dsl.ast.model.node.Node
|
||||
import dsl.ast.model.node.TokenNode
|
||||
import dsl.token.model.entity.Token
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.entity.TokenPosition
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import error.InvalidSyntaxException
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.enumeration.ParsingResult
|
||||
import io.smnp.dsl.ast.model.node.Node
|
||||
import io.smnp.dsl.ast.model.node.TokenNode
|
||||
import io.smnp.dsl.token.model.entity.Token
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.entity.TokenPosition
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.error.InvalidSyntaxException
|
||||
|
||||
abstract class Parser {
|
||||
fun parse(input: TokenList): ParserOutput {
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class RegularFunctionDefinitionArgumentParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
@@ -1,9 +1,9 @@
|
||||
package dsl.ast.parser
|
||||
package io.smnp.dsl.ast.parser
|
||||
|
||||
import dsl.ast.model.entity.ParserOutput
|
||||
import dsl.ast.model.node.ReturnNode
|
||||
import dsl.token.model.entity.TokenList
|
||||
import dsl.token.model.enumeration.TokenType
|
||||
import io.smnp.dsl.ast.model.entity.ParserOutput
|
||||
import io.smnp.dsl.ast.model.node.ReturnNode
|
||||
import io.smnp.dsl.token.model.entity.TokenList
|
||||
import io.smnp.dsl.token.model.enumeration.TokenType
|
||||
|
||||
class ReturnParser : Parser() {
|
||||
override fun tryToParse(input: TokenList): ParserOutput {
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user