Change root package
This commit is contained in:
@@ -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()
|
||||||
@@ -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)
|
||||||
@@ -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()
|
||||||
@@ -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()
|
||||||
@@ -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)
|
||||||
@@ -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()
|
||||||
@@ -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 {
|
||||||
@@ -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]
|
||||||
@@ -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
|
||||||
@@ -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 {
|
||||||
@@ -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 {
|
||||||
@@ -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) {
|
||||||
@@ -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
|
||||||
@@ -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;
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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."
|
||||||
@@ -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>
|
||||||
@@ -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()
|
||||||
@@ -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")
|
||||||
@@ -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 {
|
||||||
@@ -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()
|
||||||
@@ -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?
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.bartlomiejpluta.smnp.interpreter
|
||||||
|
|
||||||
|
import com.bartlomiejpluta.smnp.environment.Environment
|
||||||
|
|
||||||
|
interface LanguageModuleInterpreter {
|
||||||
|
fun run(code: String, source: String): Environment
|
||||||
|
}
|
||||||
@@ -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 {
|
||||||
@@ -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 {
|
||||||
@@ -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,
|
||||||
@@ -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) {
|
||||||
@@ -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) {
|
||||||
|
|
||||||
@@ -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 {
|
||||||
@@ -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,
|
||||||
@@ -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> }
|
||||||
@@ -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)
|
||||||
@@ -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)
|
|
||||||
@@ -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)
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package io.smnp.interpreter
|
|
||||||
|
|
||||||
import io.smnp.environment.Environment
|
|
||||||
|
|
||||||
interface LanguageModuleInterpreter {
|
|
||||||
fun run(code: String, source: String): Environment
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
@@ -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) {
|
||||||
@@ -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,
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
@@ -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 {
|
||||||
@@ -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()
|
||||||
@@ -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)
|
||||||
@@ -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 {
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.bartlomiejpluta.smnp.dsl.ast.model.enumeration
|
||||||
|
|
||||||
|
enum class ParsingResult {
|
||||||
|
OK,
|
||||||
|
FAILED
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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) {
|
||||||
@@ -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]
|
||||||
@@ -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>
|
||||||
@@ -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)
|
||||||
@@ -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]
|
||||||
@@ -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]
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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]
|
||||||
@@ -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)
|
||||||
@@ -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]
|
||||||
@@ -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)
|
||||||
@@ -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>
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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]
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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 }
|
||||||
@@ -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
|
||||||
|
)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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)
|
||||||
@@ -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]
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
@@ -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]
|
||||||
@@ -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)
|
||||||
@@ -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
Reference in New Issue
Block a user