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 com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
abstract class Function(val name: String) { abstract class Function(val name: String) {
private var definitions: List<FunctionDefinition> = mutableListOf() 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 com.bartlomiejpluta.smnp.callable.signature.Signature
import io.smnp.environment.Environment import com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class FunctionDefinitionTool { class FunctionDefinitionTool {
val definitions: MutableList<FunctionDefinition> = mutableListOf() 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 com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.type.matcher.Matcher import com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
abstract class Method(val typeMatcher: Matcher, val name: String) { abstract class Method(val typeMatcher: Matcher, val name: String) {
private var definitions: List<MethodDefinition> = mutableListOf() 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 com.bartlomiejpluta.smnp.callable.signature.Signature
import io.smnp.environment.Environment import com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class MethodDefinitionTool { class MethodDefinitionTool {
val definitions: MutableList<MethodDefinition> = mutableListOf() 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 com.bartlomiejpluta.smnp.type.enumeration.DataType
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
object ActualSignatureFormatter { object ActualSignatureFormatter {
fun format(value: Value): String { 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>) { class ArgumentsList(val signatureMatched: Boolean, val arguments: List<Value>) {
operator fun get(index: Int) = arguments[index] 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 com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
interface Signature { interface Signature {
fun parse(arguments: List<Value>): ArgumentsList 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 com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class SimpleSignature(private vararg val signature: Matcher) : class SimpleSignature(private vararg val signature: Matcher) :
Signature { 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 com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class VarargSignature(private val varargMatcher: Matcher, private vararg val signature: Matcher) : class VarargSignature(private val varargMatcher: Matcher, private vararg val signature: Matcher) :
Signature { 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 { class Stack<T> private constructor(private val list: MutableList<T>) : List<T> by list {
fun push(item: T) { 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 com.bartlomiejpluta.smnp.data.enumeration.Pitch
import io.smnp.math.Fraction import com.bartlomiejpluta.smnp.math.Fraction
class Note(val pitch: Pitch, val octave: Int, duration: Fraction, dot: Boolean) { class Note(val pitch: Pitch, val octave: Int, duration: Fraction, dot: Boolean) {
val duration = if(dot) duration * Fraction(3, 2) else duration 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 { enum class Pitch {
C, C_S, D, D_S, E, F, F_S, G, G_S, A, A_S, H; 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 com.bartlomiejpluta.smnp.callable.function.Function
import io.smnp.callable.method.Method import com.bartlomiejpluta.smnp.callable.method.Method
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
interface Environment { interface Environment {
fun loadModule(path: String) 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) 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( class EnvironmentException(exception: SmnpException, val environment: Environment) : SmnpException(
exception.friendlyName, exception.message, exception 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) 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) 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) 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( class ShouldNeverReachThisLineException : Exception(
"This exception should never be thrown. Please check stack trace and investigate the source of error." "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) { abstract class SmnpException(val friendlyName: String, message: String? = null, val exception: SmnpException? = null) : Exception(message) {
val exceptionChain: List<SmnpException> 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 com.bartlomiejpluta.smnp.callable.function.Function
import io.smnp.callable.method.Method import com.bartlomiejpluta.smnp.callable.method.Method
import io.smnp.interpreter.LanguageModuleInterpreter import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
abstract class HybridModuleProvider(path: String) : ModuleProvider(path) { abstract class HybridModuleProvider(path: String) : ModuleProvider(path) {
open fun functions(): List<Function> = emptyList() 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 com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
abstract class LanguageModuleProvider(path: String) : ModuleProvider(path) { abstract class LanguageModuleProvider(path: String) : ModuleProvider(path) {
open fun files() = listOf("main.mus") 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 com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.interpreter.LanguageModuleInterpreter import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
import org.pf4j.ExtensionPoint import org.pf4j.ExtensionPoint
abstract class ModuleProvider(val path: String) : 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 com.bartlomiejpluta.smnp.callable.function.Function
import io.smnp.callable.method.Method import com.bartlomiejpluta.smnp.callable.method.Method
import io.smnp.ext.provider.ModuleProvider import com.bartlomiejpluta.smnp.interpreter.LanguageModuleInterpreter
import io.smnp.interpreter.LanguageModuleInterpreter import com.bartlomiejpluta.smnp.type.module.Module
import io.smnp.type.module.Module
abstract class NativeModuleProvider(path: String) : ModuleProvider(path) { abstract class NativeModuleProvider(path: String) : ModuleProvider(path) {
open fun functions(): List<Function> = emptyList() 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 com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.ext.provider.ModuleProvider import com.bartlomiejpluta.smnp.ext.provider.ModuleProvider
interface ModuleRegistry { interface ModuleRegistry {
fun requestModuleProviderForPath(path: String): ModuleProvider? 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> { class Fraction(val numerator: Int, val denominator: Int) : Comparable<Fraction> {
init { init {

View File

@@ -1,8 +1,8 @@
package io.smnp.runtime.model package com.bartlomiejpluta.smnp.runtime.model
import io.smnp.collection.Stack import com.bartlomiejpluta.smnp.collection.Stack
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
class CallStack { 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 com.bartlomiejpluta.smnp.callable.signature.ActualSignatureFormatter
import io.smnp.collection.Stack import com.bartlomiejpluta.smnp.collection.Stack
import io.smnp.error.EvaluationException import com.bartlomiejpluta.smnp.error.EvaluationException
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
import io.smnp.type.module.Module import com.bartlomiejpluta.smnp.type.module.Module
data class CallStackFrame( data class CallStackFrame(
val module: Module, 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 com.bartlomiejpluta.smnp.data.entity.Note
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
import kotlin.reflect.KClass import kotlin.reflect.KClass
enum class DataType(private val kotlinType: KClass<out Any>, val stringifier: (Any) -> String) { 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 com.bartlomiejpluta.smnp.type.enumeration.DataType
import io.smnp.type.model.Value 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) { 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 com.bartlomiejpluta.smnp.data.entity.Note
import io.smnp.error.ShouldNeverReachThisLineException import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import io.smnp.type.enumeration.DataType import com.bartlomiejpluta.smnp.type.enumeration.DataType
data class Value(val type: DataType, val value: Any, val properties: Map<String, Value> = emptyMap()) { data class Value(val type: DataType, val value: Any, val properties: Map<String, Value> = emptyMap()) {
init { 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 com.bartlomiejpluta.smnp.callable.function.Function
import io.smnp.callable.method.Method import com.bartlomiejpluta.smnp.callable.method.Method
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class Module( class Module(
var name: String, 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 com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class ConfigMap(private val map: Map<Value, 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> } 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 com.bartlomiejpluta.smnp.error.CustomException
import io.smnp.type.enumeration.DataType import com.bartlomiejpluta.smnp.type.enumeration.DataType
import io.smnp.type.matcher.Matcher import com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
class ConfigMapSchema { class ConfigMapSchema {
private data class Parameter(val matcher: Matcher, val required: Boolean, val default: Value) 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 zip64 true
manifest { 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 // 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.ArgParser
import com.xenomachina.argparser.mainBody 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 import kotlin.system.exitProcess
fun main(args: Array<String>): Unit = mainBody { 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.ArgParser
import com.xenomachina.argparser.default import com.xenomachina.argparser.default
import io.smnp.cli.model.enumeration.ModulesPrintMode
import io.smnp.preset.PresetProvider
import java.io.File import java.io.File
class Arguments(parser: ArgParser) { 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 { enum class ModulesPrintMode {
LIST, 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.io.File
import java.nio.file.Paths import java.nio.file.Paths

View File

@@ -11,7 +11,7 @@ configure(subprojects - project(':modules')) {
mavenCentral() mavenCentral()
} }
group 'io.bartek' group 'com.bartlomiejpluta'
version '1.0-SNAPSHOT' version '1.0-SNAPSHOT'
sourceCompatibility = 1.8 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 com.bartlomiejpluta.smnp.callable.util.FunctionEnvironmentProvider
import io.smnp.callable.util.FunctionSignatureParser import com.bartlomiejpluta.smnp.callable.util.FunctionSignatureParser
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.ast.model.node.FunctionDefinitionNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionNode
import io.smnp.dsl.ast.model.node.IdentifierNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import io.smnp.evaluation.evaluator.BlockEvaluator import com.bartlomiejpluta.smnp.evaluation.evaluator.BlockEvaluator
import io.smnp.evaluation.model.exception.Return import com.bartlomiejpluta.smnp.evaluation.model.exception.Return
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
object CustomFunction { object CustomFunction {
fun create(node: FunctionDefinitionNode): Function { 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 com.bartlomiejpluta.smnp.callable.util.FunctionEnvironmentProvider
import io.smnp.callable.util.FunctionSignatureParser import com.bartlomiejpluta.smnp.callable.util.FunctionSignatureParser
import io.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.ast.model.node.FunctionDefinitionNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionNode
import io.smnp.dsl.ast.model.node.IdentifierNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import io.smnp.evaluation.evaluator.BlockEvaluator import com.bartlomiejpluta.smnp.evaluation.evaluator.BlockEvaluator
import io.smnp.evaluation.model.exception.Return import com.bartlomiejpluta.smnp.evaluation.model.exception.Return
import io.smnp.type.matcher.Matcher import com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
object CustomMethod { object CustomMethod {
fun create(type: Matcher, node: FunctionDefinitionNode): Method { 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 com.bartlomiejpluta.smnp.dsl.ast.model.node.FunctionDefinitionArgumentsNode
import io.smnp.dsl.ast.model.node.IdentifierNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.IdentifierNode
import io.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.OptionalFunctionDefinitionArgumentNode
import io.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode import com.bartlomiejpluta.smnp.dsl.ast.model.node.RegularFunctionDefinitionArgumentNode
import io.smnp.environment.Environment import com.bartlomiejpluta.smnp.environment.Environment
import io.smnp.error.ShouldNeverReachThisLineException import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import io.smnp.evaluation.evaluator.ExpressionEvaluator import com.bartlomiejpluta.smnp.evaluation.evaluator.ExpressionEvaluator
import io.smnp.type.model.Value import com.bartlomiejpluta.smnp.type.model.Value
object FunctionEnvironmentProvider { object FunctionEnvironmentProvider {
private val evaluator = ExpressionEvaluator() 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 com.bartlomiejpluta.smnp.callable.signature.Signature
import io.smnp.dsl.ast.model.node.* import com.bartlomiejpluta.smnp.dsl.ast.model.node.*
import io.smnp.error.InvalidSignatureException import com.bartlomiejpluta.smnp.error.InvalidSignatureException
import io.smnp.error.ShouldNeverReachThisLineException import com.bartlomiejpluta.smnp.error.ShouldNeverReachThisLineException
import io.smnp.type.enumeration.DataType import com.bartlomiejpluta.smnp.type.enumeration.DataType
import io.smnp.type.matcher.Matcher import com.bartlomiejpluta.smnp.type.matcher.Matcher
import io.smnp.type.matcher.Matcher.Companion.anyType import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.anyType
import io.smnp.type.matcher.Matcher.Companion.listOfMatchers import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.listOfMatchers
import io.smnp.type.matcher.Matcher.Companion.mapOfMatchers import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.mapOfMatchers
import io.smnp.type.matcher.Matcher.Companion.ofType import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.oneOf import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.oneOf
import io.smnp.type.matcher.Matcher.Companion.optional import com.bartlomiejpluta.smnp.type.matcher.Matcher.Companion.optional
object FunctionSignatureParser { object FunctionSignatureParser {
private data class SignatureMetadata(val hasRegular: Boolean, val hasOptional: Boolean, val hasVararg: Boolean) 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 com.bartlomiejpluta.smnp.dsl.ast.model.enumeration.ParsingResult
import io.smnp.dsl.ast.model.node.Node import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
class ParserOutput private constructor(val result: ParsingResult, val node: Node) { class ParserOutput private constructor(val result: ParsingResult, val node: Node) {
fun map(mapper: (Node) -> Node): ParserOutput { 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) { abstract class AbstractIterableNode(items: List<Node>, position: TokenPosition) : Node(items, position) {
val items: List<Node> 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) 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) 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) { abstract class AtomAbstractNode(val token: Token) : Node(1, token.position) {
override fun pretty(prefix: String, last: Boolean, first: Boolean) { 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) { abstract class BinaryOperatorAbstractNode(lhs: Node, operator: Node, rhs: Node) : Node(3, operator.position) {
operator fun component1() = children[0] 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) { class BlockNode(begin: Node, statements: List<Node>, end: Node) : Node(statements, begin.position) {
val statements: List<Node> 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) { class ConditionNode(trueBranchToken: Node, condition: Node, trueBranch: Node, falseBranchToken: Node, falseBranch: Node) : Node(3, trueBranchToken.position) {
operator fun component1(): Node = children[0] 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) { class ExtendNode(type: Node, functions: Node, position: TokenPosition) : Node(2, position) {
operator fun component1(): Node = children[0] 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) { class FunctionCallNode(identifier: Node, arguments: Node) : Node(2, identifier.position) {
operator fun component1() = children[0] 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) 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) { class FunctionDefinitionNode(identifier: Node, arguments: Node, body: Node, position: TokenPosition) : Node(3, position) {
operator fun component1() = children[0] 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) { class ImportNode(path: List<Node>, position: TokenPosition) : Node(path, position) {
val path: List<Node> 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) 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) { class LoopNode(iterator: Node, parameters: Node, operator: Node, statement: Node, filter: Node): Node(4, operator.position) {
operator fun component1() = children[0] 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) { class MapEntryNode(key: Node, operator: Node, value: Node) : Node(2, operator.position) {
val key: Node 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) 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) { abstract class Node(numberOfChildren: Int, val position: TokenPosition) {
var children: MutableList<Node> = MutableList(numberOfChildren) { NONE } 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) 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) { class OptionalFunctionDefinitionArgumentNode(identifier: Node, type: Node, defaultValue: Node) : Node(3, identifier.position) {
val identifier: Node 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) 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) 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) { class RegularFunctionDefinitionArgumentNode(identifier: Node, type: Node, vararg: Node) : Node(3, identifier.position) {
val identifier 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) 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) { class ReturnNode(value: Node) : Node(1, value.position) {
operator fun component1() = children[0] 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) { class SingleTypeNode(type: Node, specifiers: Node) : Node(2, type.position) {
val type: Node 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) 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) { class ThrowNode(value: Node) : Node(1, value.position) {
val value: Node 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) { class TimeSignatureNode(numerator: Node, denominator: Node) : Node(2, numerator.position) {
val numerator: Node 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) { abstract class UnaryOperatorAbstractNode(operator: Node, operand: Node) : Node(2, operator.position) {
operator fun component1() = children[0] 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 com.bartlomiejpluta.smnp.dsl.ast.model.entity.ParserOutput
import io.smnp.dsl.ast.model.node.Node import com.bartlomiejpluta.smnp.dsl.ast.model.node.Node
import io.smnp.dsl.token.model.entity.TokenList import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenList
import io.smnp.dsl.token.model.entity.TokenPosition import com.bartlomiejpluta.smnp.dsl.token.model.entity.TokenPosition
import io.smnp.dsl.token.model.enumeration.TokenType import com.bartlomiejpluta.smnp.dsl.token.model.enumeration.TokenType
abstract class AbstractIterableParser( abstract class AbstractIterableParser(
private val beginTokenType: TokenType, private val beginTokenType: TokenType,

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