All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.strumenta.kolasu.semantics.symbol.description.SymbolDescription.kt Maven / Gradle / Ivy

package com.strumenta.kolasu.semantics.symbol.description

import com.strumenta.kolasu.language.KolasuLanguage
import com.strumenta.kolasu.model.Named
import com.strumenta.kolasu.model.Node

data class SymbolDescription(
    override val name: String,
    val identifier: String,
    val types: List,
    val fields: Map
) : Node(), Named

sealed class ValueDescription(open val value: Any? = null) : Node()

data class BooleanValueDescription(
    override val value: Boolean? = null
) : ValueDescription(value)

data class IntegerValueDescription(
    override val value: Int? = null
) : ValueDescription(value)

data class StringValueDescription(
    override val value: String? = null
) : ValueDescription(value)

object NullValueDescription : ValueDescription(null) {
    private fun readResolve(): Any = NullValueDescription
}

data class ReferenceValueDescription(
    override val value: String? = null
) : ValueDescription(value)

data class ContainmentValueDescription(
    override val value: String? = null
) : ValueDescription(value)

data class ListValueDescription(
    override val value: List = emptyList()
) : ValueDescription(value)

const val KOLASU_SYMBOL_DESCRIPTION_LANGUAGE_NAME = "com.strumenta.kolasu.semantics.symbol.SymbolDescriptionLanguage"

val KOLASU_SYMBOL_DESCRIPTION_LANGUAGE: KolasuLanguage by lazy {
    KolasuLanguage(KOLASU_SYMBOL_DESCRIPTION_LANGUAGE_NAME).apply {
        addClass(SymbolDescription::class)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy