Change root package

This commit is contained in:
2020-05-23 11:52:06 +02:00
parent 4ad81f68e4
commit 88f2089310
313 changed files with 1553 additions and 1556 deletions

View File

@@ -1,13 +1,13 @@
package io.smnp.callable.function
package com.bartlomiejpluta.smnp.callable.function
import io.smnp.callable.util.FunctionEnvironmentProvider
import io.smnp.callable.util.FunctionSignatureParser
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.ast.model.node.FunctionDefinitionNode
import io.smnp.dsl.ast.model.node.IdentifierNode
import io.smnp.evaluation.evaluator.BlockEvaluator
import io.smnp.evaluation.model.exception.Return
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.util.FunctionEnvironmentProvider
import com.bartlomiejpluta.smnp.callable.util.FunctionSignatureParser
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import com.bartlomiejpluta.smnp.evaluation.evaluator.BlockEvaluator
import com.bartlomiejpluta.smnp.evaluation.model.exception.Return
import com.bartlomiejpluta.smnp.type.model.Value
object CustomFunction {
fun create(node: FunctionDefinitionNode): Function {

View File

@@ -1,14 +1,14 @@
package io.smnp.callable.method
package com.bartlomiejpluta.smnp.callable.method
import io.smnp.callable.util.FunctionEnvironmentProvider
import io.smnp.callable.util.FunctionSignatureParser
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.ast.model.node.FunctionDefinitionNode
import io.smnp.dsl.ast.model.node.IdentifierNode
import io.smnp.evaluation.evaluator.BlockEvaluator
import io.smnp.evaluation.model.exception.Return
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.util.FunctionEnvironmentProvider
import com.bartlomiejpluta.smnp.callable.util.FunctionSignatureParser
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import com.bartlomiejpluta.smnp.evaluation.evaluator.BlockEvaluator
import com.bartlomiejpluta.smnp.evaluation.model.exception.Return
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
object CustomMethod {
fun create(type: Matcher, node: FunctionDefinitionNode): Method {

View File

@@ -1,13 +1,13 @@
package io.smnp.callable.util
package com.bartlomiejpluta.smnp.callable.util
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.ast.model.node.IdentifierNode
import io.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
import io.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
import io.smnp.environment.Environment
import io.smnp.error.ShouldNeverReachThisLineException
import io.smnp.evaluation.evaluator.ExpressionEvaluator
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import com.bartlomiejpluta.smnp.evaluation.evaluator.ExpressionEvaluator
import com.bartlomiejpluta.smnp.type.model.Value
object FunctionEnvironmentProvider {
private val evaluator = ExpressionEvaluator()

View File

@@ -1,17 +1,17 @@
package io.smnp.callable.util
package com.bartlomiejpluta.smnp.callable.util
import io.smnp.callable.signature.Signature
import io.smnp.dsl.ast.model.node.*
import io.smnp.error.InvalidSignatureException
import io.smnp.error.ShouldNeverReachThisLineException
import io.smnp.type.enumeration.DataType
import io.smnp.type.matcher.Matcher
import io.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.oneOf
import io.smnp.type.matcher.Matcher.Companion.optional
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.dsl.ast.model.node.*
import com.bartlomiejpluta.smnp.error.InvalidSignatureException
import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import com.bartlomiejpluta.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.oneOf
import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
object FunctionSignatureParser {
private data class SignatureMetadata(val hasRegular: Boolean, val hasOptional: Boolean, val hasVararg: Boolean)

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.model.entity
package com.bartlomiejpluta.smnp.dsl.ast.model.entity
import io.smnp.dsl.ast.model.enumeration.ParsingResult
import io.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.ast.model.enumeration.ParsingResult
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
class ParserOutput private constructor(val result: ParsingResult, val node: Node) {
fun map(mapper: (Node) -> Node): ParserOutput {

View File

@@ -0,0 +1,6 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.enumeration
enum class ParsingResult {
OK,
FAILED
}

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
abstract class AbstractIterableNode(items: List<Node>, position: TokenPosition) : Node(items, position) {
val items: List<Node>

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class AccessOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class AssignmentOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.Token
import com.bartlomiejpluta.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) {

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
abstract class BinaryOperatorAbstractNode(lhs: Node, operator: Node, rhs: Node) : Node(3, operator.position) {
operator fun component1() = children[0]

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class BlockNode(begin: Node, statements: List<Node>, end: Node) : Node(statements, begin.position) {
val statements: List<Node>

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class BoolLiteralNode(token: Token) : AtomAbstractNode(token)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class ConditionNode(trueBranchToken: Node, condition: Node, trueBranch: Node, falseBranchToken: Node, falseBranch: Node) : Node(3, trueBranchToken.position) {
operator fun component1(): Node = children[0]

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class ExtendNode(type: Node, functions: Node, position: TokenPosition) : Node(2, position) {
operator fun component1(): Node = children[0]

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class FloatLiteralNode(token: Token) : AtomAbstractNode(token)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class FunctionCallArgumentsNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class FunctionCallNode(identifier: Node, arguments: Node) : Node(2, identifier.position) {
operator fun component1() = children[0]

View File

@@ -1,5 +1,5 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class FunctionDefinitionArgumentsNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class FunctionDefinitionNode(identifier: Node, arguments: Node, body: Node, position: TokenPosition) : Node(3, position) {
operator fun component1() = children[0]

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class IdentifierNode(token: Token) : AtomAbstractNode(token)

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class ImportNode(path: List<Node>, position: TokenPosition) : Node(path, position) {
val path: List<Node>

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class IntegerLiteralNode(token: Token) : AtomAbstractNode(token)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class ListNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class LogicOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class LoopNode(iterator: Node, parameters: Node, operator: Node, statement: Node, filter: Node): Node(4, operator.position) {
operator fun component1() = children[0]

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class LoopParametersNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class MapEntryNode(key: Node, operator: Node, value: Node) : Node(2, operator.position) {
val key: Node

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class MapNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class MeasureNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class MinusOperatorNode(operator: Node, operand: Node) : UnaryOperatorAbstractNode(operator, operand)

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import io.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
abstract class Node(numberOfChildren: Int, val position: TokenPosition) {
var children: MutableList<Node> = MutableList(numberOfChildren) { NONE }

View File

@@ -0,0 +1,7 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class NoneNode : Node(0,
TokenPosition.NONE
)

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class NotOperatorNode(operator: Node, operand: Node) : UnaryOperatorAbstractNode(operator, operand)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class NoteLiteralNode(token: Token) : AtomAbstractNode(token)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class OptionalFunctionDefinitionArgumentNode(identifier: Node, type: Node, defaultValue: Node) : Node(3, identifier.position) {
val identifier: Node

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class PowerOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class ProductOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class RegularFunctionDefinitionArgumentNode(identifier: Node, type: Node, vararg: Node) : Node(3, identifier.position) {
val identifier

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class RelationOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class ReturnNode(value: Node) : Node(1, value.position) {
operator fun component1() = children[0]

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class RootNode(nodes: List<Node>, position: TokenPosition) : Node(nodes, position)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class SingleTypeNode(type: Node, specifiers: Node) : Node(2, type.position) {
val type: Node

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class StaffNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class StringLiteralNode(token: Token) : AtomAbstractNode(token)

View File

@@ -1,3 +1,3 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class SumOperatorNode(lhs: Node, operator: Node, rhs: Node) : BinaryOperatorAbstractNode(lhs, operator, rhs)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class ThrowNode(value: Node) : Node(1, value.position) {
val value: Node

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
class TimeSignatureNode(numerator: Node, denominator: Node) : Node(2, numerator.position) {
val numerator: Node

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
class TokenNode(token: Token) : AtomAbstractNode(token)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class TypeSpecifierNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class TypeSpecifiersNode(specifiers: List<Node>, position: TokenPosition) : Node(specifiers, position)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.ast.model.node
package com.bartlomiejpluta.smnp.dsl.ast.model.node
abstract class UnaryOperatorAbstractNode(operator: Node, operand: Node) : Node(2, operator.position) {
operator fun component1() = children[0]

View File

@@ -0,0 +1,5 @@
package com.bartlomiejpluta.smnp.dsl.ast.model.node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
class UnionTypeNode(items: List<Node>, position: TokenPosition) : AbstractIterableNode(items, position)

View File

@@ -1,10 +1,10 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
abstract class AbstractIterableParser(
private val beginTokenType: TokenType,

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.AssignmentOperatorNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class AssignmentOperatorParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,8 +1,8 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class AtomParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.BlockNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class BlockParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,12 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.BoolLiteralNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class BoolLiteralParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return terminal(TokenType.BOOL) { BoolLiteralNode(it) }.parse(input)
}
}

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class ComplexIdentifierParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,10 +1,10 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ConditionNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class ConditionParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class ExpressionParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,11 +1,11 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.BlockNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ExtendNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class ExtendParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,10 +1,10 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.NotOperatorNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.PowerOperatorNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class FactorParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,12 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FloatLiteralNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class FloatLiteralParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return terminal(TokenType.FLOAT) { FloatLiteralNode(it) }.parse(input)
}
}

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.FunctionCallArgumentsNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionCallArgumentsNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class FunctionCallArgumentsParser :
AbstractIterableParser(

View File

@@ -1,8 +1,8 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.FunctionCallNode
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionCallNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class FunctionCallParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class FunctionDefinitionArgumentParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class FunctionDefinitionArgumentsParser : AbstractIterableParser(
TokenType.OPEN_PAREN,

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class FunctionDefinitionParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,10 +1,10 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.ImportNode
import io.smnp.dsl.ast.model.node.Node
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ImportNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class ImportParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,12 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.IntegerLiteralNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class IntegerLiteralParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return terminal(TokenType.INTEGER) { IntegerLiteralNode(it) }.parse(input)
}
}

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.ListNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ListNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class ListParser : AbstractIterableParser(
TokenType.OPEN_SQUARE,

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class LiteralParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.LoopParametersNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.LoopParametersNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class LoopParametersParser : AbstractIterableParser(
TokenType.OPEN_PAREN,

View File

@@ -1,10 +1,10 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.LoopNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.LoopParametersNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class LoopParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.MapEntryNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class MapEntryParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.MapNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.MapNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class MapParser :
AbstractIterableParser(

View File

@@ -1,8 +1,8 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.MeasureNode
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.MeasureNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class MeasureParser : Parser() {

View File

@@ -0,0 +1,12 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.NoteLiteralNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class NoteLiteralParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return terminal(TokenType.NOTE) { NoteLiteralNode(it) }.parse(input)
}
}

View File

@@ -1,11 +1,11 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
import io.smnp.dsl.ast.model.node.UnionTypeNode
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 com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.UnionTypeNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class OptionalFunctionDefinitionArgumentParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,15 +1,15 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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
import io.smnp.error.PositionException
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.enumeration.ParsingResult
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.ast.model.node.TokenNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.Token
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.error.InvalidSyntaxException
import com.bartlomiejpluta.smnp.error.PositionException
abstract class Parser {
fun parse(input: TokenList): ParserOutput {

View File

@@ -1,11 +1,11 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
import io.smnp.dsl.ast.model.node.UnionTypeNode
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 com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.UnionTypeNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class RegularFunctionDefinitionArgumentParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,17 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ReturnNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class ReturnParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return allOf(
terminal(TokenType.RETURN),
optional(assert(ExpressionParser(), "expression"))
) { (_, value) ->
ReturnNode(value)
}.parse(input)
}
}

View File

@@ -1,12 +1,12 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
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.RootNode
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 com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.enumeration.ParsingResult
import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import com.bartlomiejpluta.smnp.dsl.ast.model.node.RootNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class RootParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,16 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class SimpleIdentifierParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
val identifierParser = terminal(TokenType.IDENTIFIER) { IdentifierNode(it) }
return oneOf(
identifierParser
).parse(input)
}
}

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.SingleTypeNode
import io.smnp.dsl.ast.model.node.TypeSpecifiersNode
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.SingleTypeNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.TypeSpecifiersNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class SingleTypeParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.StaffNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.StaffNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class StaffParser : AbstractIterableParser(
TokenType.DOLLAR,

View File

@@ -1,8 +1,8 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class StatementParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,12 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.StringLiteralNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class StringLiteralParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return terminal(TokenType.STRING) { StringLiteralNode(it) }.parse(input)
}
}

View File

@@ -1,11 +1,11 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.LogicOperatorNode
import io.smnp.dsl.ast.model.node.RelationOperatorNode
import io.smnp.dsl.ast.model.node.SumOperatorNode
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.LogicOperatorNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.RelationOperatorNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.SumOperatorNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class SubexpressionParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.ProductOperatorNode
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ProductOperatorNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class TermParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -0,0 +1,15 @@
package com.bartlomiejpluta.smnp.dsl.ast.parser
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.ThrowNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class ThrowParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {
return allOf(
terminal(TokenType.THROW),
optional(SubexpressionParser())
) { (_, value) -> ThrowNode(value) }.parse(input)
}
}

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.TimeSignatureNode
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.TimeSignatureNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class TimeSignatureParser : Parser() {

View File

@@ -1,9 +1,9 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.SingleTypeNode
import io.smnp.dsl.ast.model.node.UnionTypeNode
import io.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.SingleTypeNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.UnionTypeNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
class TypeParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.TypeSpecifierNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.TypeSpecifierNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class TypeSpecifierParser :
AbstractIterableParser(

View File

@@ -1,7 +1,7 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.node.UnionTypeNode
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.node.UnionTypeNode
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class UnionTypeParser : AbstractIterableParser(
TokenType.OPEN_ANGLE,

View File

@@ -1,10 +1,10 @@
package io.smnp.dsl.ast.parser
package com.bartlomiejpluta.smnp.dsl.ast.parser
import io.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.AccessOperatorNode
import io.smnp.dsl.ast.model.node.MinusOperatorNode
import io.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import com.bartlomiejpluta.smnp.dsl.ast.model.node.AccessOperatorNode
import com.bartlomiejpluta.smnp.dsl.ast.model.node.MinusOperatorNode
import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
class UnitParser : Parser() {
override fun tryToParse(input: TokenList): ParserOutput {

View File

@@ -1,6 +1,6 @@
package io.smnp.dsl.token.model.entity
package com.bartlomiejpluta.smnp.dsl.token.model.entity
import io.smnp.dsl.token.model.enumeration.TokenType
import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
data class Token(val type: TokenType, val value: Any, val rawValue: String, val position: TokenPosition) {
constructor(type: TokenType, value: String, position: TokenPosition): this(type, value, value, position)

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.token.model.entity
package com.bartlomiejpluta.smnp.dsl.token.model.entity
class TokenList(val tokens: List<Token>, val lines: List<String>) {
private var cursor = 0

View File

@@ -1,4 +1,4 @@
package io.smnp.dsl.token.model.entity
package com.bartlomiejpluta.smnp.dsl.token.model.entity
data class TokenPosition(val source: String, val line: Int, val beginCol: Int, val endCol: Int) {
companion object {

Some files were not shown because too many files have changed in this diff Show More