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,8 +1,8 @@
package io.smnp.callable.function
package com.bartlomiejpluta.smnp.callable.function
import io.smnp.environment.Environment
import io.smnp.type.model.Value
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.module.Module
abstract class Function(val name: String) {
private var definitions: List<FunctionDefinition> = mutableListOf()

View File

@@ -0,0 +1,7 @@
package com.bartlomiejpluta.smnp.callable.function
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.type.model.Value
class FunctionDefinition(val signature: Signature, val body: (Environment, List<Value>) -> Value)

View File

@@ -1,8 +1,8 @@
package io.smnp.callable.function
package com.bartlomiejpluta.smnp.callable.function
import io.smnp.callable.signature.Signature
import io.smnp.environment.Environment
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.type.model.Value
class FunctionDefinitionTool {
val definitions: MutableList<FunctionDefinition> = mutableListOf()

View File

@@ -1,9 +1,9 @@
package io.smnp.callable.method
package com.bartlomiejpluta.smnp.callable.method
import io.smnp.environment.Environment
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.module.Module
abstract class Method(val typeMatcher: Matcher, val name: String) {
private var definitions: List<MethodDefinition> = mutableListOf()

View File

@@ -0,0 +1,7 @@
package com.bartlomiejpluta.smnp.callable.method
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.type.model.Value
class MethodDefinition(val signature: Signature, val body: (Environment, Value, List<Value>) -> Value)

View File

@@ -1,8 +1,8 @@
package io.smnp.callable.method
package com.bartlomiejpluta.smnp.callable.method
import io.smnp.callable.signature.Signature
import io.smnp.environment.Environment
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.signature.Signature
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.type.model.Value
class MethodDefinitionTool {
val definitions: MutableList<MethodDefinition> = mutableListOf()

View File

@@ -1,7 +1,7 @@
package io.smnp.callable.signature
package com.bartlomiejpluta.smnp.callable.signature
import io.smnp.type.enumeration.DataType
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.type.model.Value
object ActualSignatureFormatter {
fun format(value: Value): String {

View File

@@ -1,6 +1,6 @@
package io.smnp.callable.signature
package com.bartlomiejpluta.smnp.callable.signature
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.model.Value
class ArgumentsList(val signatureMatched: Boolean, val arguments: List<Value>) {
operator fun get(index: Int) = arguments[index]

View File

@@ -1,7 +1,7 @@
package io.smnp.callable.signature
package com.bartlomiejpluta.smnp.callable.signature
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
interface Signature {
fun parse(arguments: List<Value>): ArgumentsList

View File

@@ -1,7 +1,7 @@
package io.smnp.callable.signature
package com.bartlomiejpluta.smnp.callable.signature
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
class SimpleSignature(private vararg val signature: Matcher) :
Signature {

View File

@@ -1,7 +1,7 @@
package io.smnp.callable.signature
package com.bartlomiejpluta.smnp.callable.signature
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
class VarargSignature(private val varargMatcher: Matcher, private vararg val signature: Matcher) :
Signature {

View File

@@ -1,4 +1,4 @@
package io.smnp.collection
package com.bartlomiejpluta.smnp.collection
class Stack<T> private constructor(private val list: MutableList<T>) : List<T> by list {
fun push(item: T) {

View File

@@ -1,7 +1,7 @@
package io.smnp.data.entity
package com.bartlomiejpluta.smnp.data.entity
import io.smnp.data.enumeration.Pitch
import io.smnp.math.Fraction
import com.bartlomiejpluta.smnp.data.enumeration.Pitch
import com.bartlomiejpluta.smnp.math.Fraction
class Note(val pitch: Pitch, val octave: Int, duration: Fraction, dot: Boolean) {
val duration = if(dot) duration * Fraction(3, 2) else duration

View File

@@ -1,4 +1,4 @@
package io.smnp.data.enumeration
package com.bartlomiejpluta.smnp.data.enumeration
enum class Pitch {
C, C_S, D, D_S, E, F, F_S, G, G_S, A, A_S, H;

View File

@@ -1,9 +1,9 @@
package io.smnp.environment
package com.bartlomiejpluta.smnp.environment
import io.smnp.callable.function.Function
import io.smnp.callable.method.Method
import io.smnp.type.model.Value
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.module.Module
interface Environment {
fun loadModule(path: String)

View File

@@ -1,3 +1,3 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
class CustomException(message: String?) : SmnpException("Error", message)

View File

@@ -1,6 +1,6 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
import io.smnp.environment.Environment
import com.bartlomiejpluta.smnp.environment.Environment
class EnvironmentException(exception: SmnpException, val environment: Environment) : SmnpException(
exception.friendlyName, exception.message, exception

View File

@@ -1,3 +1,3 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
class EvaluationException(message: String?) : SmnpException("Runtime error", message)

View File

@@ -1,3 +1,3 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
class FunctionInvocationException(message: String?) : SmnpException("Function invocation error", message)

View File

@@ -1,3 +1,3 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
class MethodInvocationException(message: String?) : SmnpException("Method invocation error", message)

View File

@@ -1,4 +1,4 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
class ShouldNeverReachThisLineException : Exception(
"This exception should never be thrown. Please check stack trace and investigate the source of error."

View File

@@ -1,4 +1,4 @@
package io.smnp.error
package com.bartlomiejpluta.smnp.error
abstract class SmnpException(val friendlyName: String, message: String? = null, val exception: SmnpException? = null) : Exception(message) {
val exceptionChain: List<SmnpException>

View File

@@ -1,9 +1,9 @@
package io.smnp.ext.provider
package com.bartlomiejpluta.smnp.ext.provider
import io.smnp.callable.function.Function
import io.smnp.callable.method.Method
import io.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import com.bartlomiejpluta.smnp.type.module.Module
abstract class HybridModuleProvider(path: String) : ModuleProvider(path) {
open fun functions(): List<Function> = emptyList()

View File

@@ -1,7 +1,7 @@
package io.smnp.ext.provider
package com.bartlomiejpluta.smnp.ext.provider
import io.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import com.bartlomiejpluta.smnp.type.module.Module
abstract class LanguageModuleProvider(path: String) : ModuleProvider(path) {
open fun files() = listOf("main.mus")

View File

@@ -1,8 +1,8 @@
package io.smnp.ext.provider
package com.bartlomiejpluta.smnp.ext.provider
import io.smnp.environment.Environment
import io.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import com.bartlomiejpluta.smnp.type.module.Module
import org.pf4j.ExtensionPoint
abstract class ModuleProvider(val path: String) : ExtensionPoint {

View File

@@ -1,10 +1,9 @@
package io.smnp.ext.provider
package com.bartlomiejpluta.smnp.ext.provider
import io.smnp.callable.function.Function
import io.smnp.callable.method.Method
import io.smnp.ext.provider.ModuleProvider
import io.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import com.bartlomiejpluta.smnp.type.module.Module
abstract class NativeModuleProvider(path: String) : ModuleProvider(path) {
open fun functions(): List<Function> = emptyList()

View File

@@ -1,7 +1,7 @@
package io.smnp.ext.registry
package com.bartlomiejpluta.smnp.ext.registry
import io.smnp.environment.Environment
import io.smnp.ext.provider.ModuleProvider
import com.bartlomiejpluta.smnp.environment.Environment
import com.bartlomiejpluta.smnp.ext.provider.ModuleProvider
interface ModuleRegistry {
fun requestModuleProviderForPath(path: String): ModuleProvider?

View File

@@ -0,0 +1,7 @@
package com.bartlomiejpluta.smnp.interpreter
import com.bartlomiejpluta.smnp.environment.Environment
interface LanguageModuleInterpreter {
fun run(code: String, source: String): Environment
}

View File

@@ -1,4 +1,4 @@
package io.smnp.math
package com.bartlomiejpluta.smnp.math
class Fraction(val numerator: Int, val denominator: Int) : Comparable<Fraction> {
init {

View File

@@ -1,8 +1,8 @@
package io.smnp.runtime.model
package com.bartlomiejpluta.smnp.runtime.model
import io.smnp.collection.Stack
import io.smnp.type.model.Value
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.collection.Stack
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.module.Module
class CallStack {

View File

@@ -1,10 +1,10 @@
package io.smnp.runtime.model
package com.bartlomiejpluta.smnp.runtime.model
import io.smnp.callable.signature.ActualSignatureFormatter
import io.smnp.collection.Stack
import io.smnp.error.EvaluationException
import io.smnp.type.model.Value
import io.smnp.type.module.Module
import com.bartlomiejpluta.smnp.callable.signature.ActualSignatureFormatter
import com.bartlomiejpluta.smnp.collection.Stack
import com.bartlomiejpluta.smnp.error.EvaluationException
import com.bartlomiejpluta.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.module.Module
data class CallStackFrame(
val module: Module,

View File

@@ -1,7 +1,7 @@
package io.smnp.type.enumeration
package com.bartlomiejpluta.smnp.type.enumeration
import io.smnp.data.entity.Note
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.type.model.Value
import kotlin.reflect.KClass
enum class DataType(private val kotlinType: KClass<out Any>, val stringifier: (Any) -> String) {

View File

@@ -1,7 +1,7 @@
package io.smnp.type.matcher
package com.bartlomiejpluta.smnp.type.matcher
import io.smnp.type.enumeration.DataType
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.type.model.Value
class Matcher(val type: DataType?, private val matcher: (Value) -> Boolean, private val string: String, val optional: Boolean = false) {

View File

@@ -1,8 +1,8 @@
package io.smnp.type.model
package com.bartlomiejpluta.smnp.type.model
import io.smnp.data.entity.Note
import io.smnp.error.ShouldNeverReachThisLineException
import io.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.data.entity.Note
import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import com.bartlomiejpluta.smnp.type.enumeration.DataType
data class Value(val type: DataType, val value: Any, val properties: Map<String, Value> = emptyMap()) {
init {

View File

@@ -1,8 +1,8 @@
package io.smnp.type.module
package com.bartlomiejpluta.smnp.type.module
import io.smnp.callable.function.Function
import io.smnp.callable.method.Method
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.callable.function.Function
import com.bartlomiejpluta.smnp.callable.method.Method
import com.bartlomiejpluta.smnp.type.model.Value
class Module(
var name: String,

View File

@@ -1,7 +1,7 @@
package io.smnp.util.config
package com.bartlomiejpluta.smnp.util.config
import io.smnp.error.ShouldNeverReachThisLineException
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import com.bartlomiejpluta.smnp.type.model.Value
class ConfigMap(private val map: Map<Value, Value>) {
private val raw by lazy { map.map { (key, value) -> key.unwrap() to value }.toMap() as Map<String, Value> }

View File

@@ -1,9 +1,9 @@
package io.smnp.util.config
package com.bartlomiejpluta.smnp.util.config
import io.smnp.error.CustomException
import io.smnp.type.enumeration.DataType
import io.smnp.type.matcher.Matcher
import io.smnp.type.model.Value
import com.bartlomiejpluta.smnp.error.CustomException
import com.bartlomiejpluta.smnp.type.enumeration.DataType
import com.bartlomiejpluta.smnp.type.matcher.Matcher
import com.bartlomiejpluta.smnp.type.model.Value
class ConfigMapSchema {
private data class Parameter(val matcher: Matcher, val required: Boolean, val default: Value)

View File

@@ -1,7 +0,0 @@
package io.smnp.callable.function
import io.smnp.callable.signature.Signature
import io.smnp.environment.Environment
import io.smnp.type.model.Value
class FunctionDefinition(val signature: Signature, val body: (Environment, List<Value>) -> Value)

View File

@@ -1,7 +0,0 @@
package io.smnp.callable.method
import io.smnp.callable.signature.Signature
import io.smnp.environment.Environment
import io.smnp.type.model.Value
class MethodDefinition(val signature: Signature, val body: (Environment, Value, List<Value>) -> Value)

View File

@@ -1,7 +0,0 @@
package io.smnp.interpreter
import io.smnp.environment.Environment
interface LanguageModuleInterpreter {
fun run(code: String, source: String): Environment
}

View File

@@ -24,7 +24,7 @@ jar {
zip64 true
manifest {
attributes 'Main-Class': 'io.smnp.SMNPKt'
attributes 'Main-Class': 'com.bartlomiejpluta.smnp.SMNPKt'
}
// This line of code recursively collects and copies all of a project's files

View File

@@ -1,17 +1,17 @@
package io.smnp
package com.bartlomiejpluta.smnp
import com.bartlomiejpluta.smnp.cli.model.entity.Arguments
import com.bartlomiejpluta.smnp.cli.model.enumeration.ModulesPrintMode
import com.bartlomiejpluta.smnp.environment.DefaultEnvironment
import com.bartlomiejpluta.smnp.error.EnvironmentException
import com.bartlomiejpluta.smnp.error.PositionException
import com.bartlomiejpluta.smnp.error.SmnpException
import com.bartlomiejpluta.smnp.ext.registry.DefaultModuleRegistry
import com.bartlomiejpluta.smnp.interpreter.DefaultInterpreter
import com.bartlomiejpluta.smnp.preset.PresetProvider.providePresetCode
import com.bartlomiejpluta.smnp.type.model.Value
import com.xenomachina.argparser.ArgParser
import com.xenomachina.argparser.mainBody
import io.smnp.cli.model.entity.Arguments
import io.smnp.cli.model.enumeration.ModulesPrintMode
import io.smnp.environment.DefaultEnvironment
import io.smnp.error.EnvironmentException
import io.smnp.error.PositionException
import io.smnp.error.SmnpException
import io.smnp.ext.registry.DefaultModuleRegistry
import io.smnp.interpreter.DefaultInterpreter
import io.smnp.preset.PresetProvider.providePresetCode
import io.smnp.type.model.Value
import kotlin.system.exitProcess
fun main(args: Array<String>): Unit = mainBody {

View File

@@ -1,9 +1,9 @@
package io.smnp.cli.model.entity
package com.bartlomiejpluta.smnp.cli.model.entity
import com.bartlomiejpluta.smnp.cli.model.enumeration.ModulesPrintMode
import com.bartlomiejpluta.smnp.preset.PresetProvider
import com.xenomachina.argparser.ArgParser
import com.xenomachina.argparser.default
import io.smnp.cli.model.enumeration.ModulesPrintMode
import io.smnp.preset.PresetProvider
import java.io.File
class Arguments(parser: ArgParser) {

View File

@@ -1,4 +1,4 @@
package io.smnp.cli.model.enumeration
package com.bartlomiejpluta.smnp.cli.model.enumeration
enum class ModulesPrintMode {
LIST,

View File

@@ -1,6 +1,6 @@
package io.smnp.preset
package com.bartlomiejpluta.smnp.preset
import io.smnp.error.PresetException
import com.bartlomiejpluta.smnp.error.PresetException
import java.io.File
import java.nio.file.Paths

View File

@@ -11,7 +11,7 @@ configure(subprojects - project(':modules')) {
mavenCentral()
}
group 'io.bartek'
group 'com.bartlomiejpluta'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

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,

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