From 716c830b521079c441e5daf3a58d0f85d23c043e Mon Sep 17 00:00:00 2001 From: Konrad Weiss Date: Fri, 12 May 2023 16:49:20 +0200 Subject: [PATCH 01/17] Add automated Doc generation for Nodes and Relationships --- .../fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 402 ++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt new file mode 100644 index 0000000000..cd062cedef --- /dev/null +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -0,0 +1,402 @@ +/* + * Copyright (c) 2023, Fraunhofer AISEC. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * $$$$$$\ $$$$$$$\ $$$$$$\ + * $$ __$$\ $$ __$$\ $$ __$$\ + * $$ / \__|$$ | $$ |$$ / \__| + * $$ | $$$$$$$ |$$ |$$$$\ + * $$ | $$ ____/ $$ |\_$$ | + * $$ | $$\ $$ | $$ | $$ | + * \$$$$$ |$$ | \$$$$$ | + * \______/ \__| \______/ + * + */ +package de.fraunhofer.aisec.cpg_vis_neo4j + +import de.fraunhofer.aisec.cpg.graph.Node +import java.io.File +import java.io.PrintWriter +import java.lang.reflect.ParameterizedType +import java.lang.reflect.Type +import java.util.* +import org.neo4j.ogm.metadata.ClassInfo +import org.neo4j.ogm.metadata.FieldInfo +import org.neo4j.ogm.metadata.MetaData + +class Schema { + + val lightGreen = "#aaffbb" + val lightBlue = "#aabbff" + val lightGray = "#dddddd" + + val header = + "# CPG Schema\n" + + "This file shows all node labels and relationships between them that are persisted from the in memory CPG to the Neo4j database. " + + "The specification is generated automatically and always up to date." + + // Contains the class hierarchy with the root Node. + val hierarchy: MutableMap>> = mutableMapOf() + + /** + * Set of fields that are translated into a relationship. The pair saves the field name, and the + * relationship name. Saves MutableMap>> + */ + val relCanHave: MutableMap>> = mutableMapOf() + + /** + * Relationships newly defined in this specific entity. Saves + * MutableMap>> + */ + val inherentFields: MutableMap>> = mutableMapOf() + + /** + * Relationships inherited from a parent in the inheritance hierarchy. A node with this label + * can have this relationship if it is non-nullable. Saves + * MutableMap>> + */ + val inheritedFields: MutableMap>> = mutableMapOf() + /** + * Relationships defined by children in the inheritance hierarchy. A node with this label can + * have this relationship also has the label of the defining child entity. Saves + * MutableMap>> + */ + val childrenFields: MutableMap>> = mutableMapOf() + + val relationshipFields: MutableMap, FieldInfo> = mutableMapOf() + + fun extractSchema() { + val meta: MetaData = MetaData(Node.javaClass.packageName) + val nodeClassInfo = + meta + .persistentEntities() + .filter { it.underlyingClass == Node::class.java } + .firstOrNull()!! + val entities = + meta.persistentEntities().filter { + Node::class.java.isAssignableFrom(it.underlyingClass) && !it.isRelationshipEntity + } // Node to filter for, filter out what is not explicitly a + + entities.forEach { + if (it in entities) { + val superC = it.directSuperclass() + + hierarchy.put( + it, + Pair( + if (superC in entities) superC else null, + it.directSubclasses() + .filter { it in entities } + .distinct() // Filter out duplicates + ) + ) + } + } + + // node in neo4j + + entities.forEach { + val key = meta.schema.findNode(it.neo4jName()) + relCanHave.put( + it.neo4jName() ?: it.underlyingClass.simpleName, + key.relationships().entries.map { Pair(it.key, it.value.type()) }.toSet(), + ) + } + + // Complements the hierarchy and relationship information for abstract classes + completeSchema(relCanHave, hierarchy, nodeClassInfo) + // Searches for all relationships backed by a class field to know which relationships are + // newly defined in the + // entity class + entities.forEach { + val entity = it + val fields = + entity.relationshipFields().filter { + it.field.declaringClass == entity.underlyingClass + } + fields.forEach { relationshipFields.put(Pair(entity, it.name), it) } + val name = it.neo4jName() ?: it.underlyingClass.simpleName + relCanHave[name]?.let { + inherentFields.put( + name, + it.filter { + val rel = it.first + fields.any { it.name.equals(rel) } + } + .toSet() + ) + } + } + + // Determines the relationships an entity inherits by propagating the relationships from + // parent to child + val entityRoots: MutableList = + hierarchy.filter { it.value.first == null }.map { it.key }.toMutableList() + entityRoots.forEach { + inheritedFields[it.neo4jName() ?: it.underlyingClass.simpleName] = mutableSetOf() + } + entityRoots.forEach { buildInheritedFields(it) } + + relCanHave.forEach { + childrenFields[it.key] = + it.value + .subtract(inheritedFields[it.key] ?: emptyList()) + .subtract(inherentFields[it.key] ?: emptyList()) + } + println() + } + + private fun buildInheritedFields(classInfo: ClassInfo) { + val fields: MutableSet> = mutableSetOf() + inherentFields[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let { + fields.addAll(it) + } + inheritedFields[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let { + fields.addAll(it) + } + + hierarchy[classInfo]?.second?.forEach { + inheritedFields[it.neo4jName() ?: it.underlyingClass.simpleName] = fields + buildInheritedFields(it) + } + } + + private fun completeSchema( + relCanHave: MutableMap>>, + hierarchy: MutableMap>>, + root: ClassInfo + ) { + hierarchy[root]?.second?.forEach { completeSchema(relCanHave, hierarchy, it) } + + hierarchy.keys + .filter { !relCanHave.contains(it.neo4jName() ?: it.underlyingClass.simpleName) } + .forEach { + relCanHave.put( + it.neo4jName() ?: it.underlyingClass.simpleName, + hierarchy[it] + ?.second + ?.flatMap { + relCanHave[it.neo4jName() ?: it.underlyingClass.simpleName] ?: setOf() + } + ?.toSet() + ?: setOf() + ) + } + } + + fun printToFile(fileName: String) { + val file = File(fileName) + file.parentFile.mkdirs() + file.createNewFile() + file.printWriter().use { out -> + out.println(header) + val entityRoots: MutableList = + hierarchy.filter { it.value.first == null }.map { it.key }.toMutableList() + entityRoots.forEach { printEntities(it, out) } + } + } + + fun printEntities(classInfo: ClassInfo, out: PrintWriter) { + // TODO print a section for every entity. List of relationships not inherent. List of rel + // inherent with result node. try to get links into relationship and target. + // TODO subsection with inherent relationships. + val entityLabel = toLabel(classInfo) + + out.println("# $entityLabel") + + // Todo print entity description + if (hierarchy[classInfo]?.first != null) { + out.print("**Labels**:") + // Todo Print markdown with hierarchy, and not inherent relationships + + hierarchy[classInfo]?.first?.let { + getHierarchy(it).forEach { + out.print( + "${getBoxWithColor(lightGray,"[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})")}\t" + ) + } + } + out.print( + "${getBoxWithColor(lightBlue,"[${entityLabel}](#${toAnchorLink("e"+entityLabel)})")}\t" + ) + out.println() + } + if (hierarchy[classInfo]?.second?.isNotEmpty() ?: false) { + out.println("## Children") + + hierarchy[classInfo]?.second?.let { + if (it.isNotEmpty()) { + it.forEach { + out.print( + "${getBoxWithColor(lightGray,"[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})")}\t" + ) + // out.println("click ${toLabel(it)} href + // \"#${toAnchorLink(toLabel(it))}\"") + } + out.println() + } + } + } + + if (inherentFields.isNotEmpty() && inheritedFields.isNotEmpty()) { + out.println("## Relationships") + + noLabelDups(inherentFields[entityLabel])?.forEach { + out.println( + "${getBoxWithColor(lightGreen,"[${it.second}](#${ toLabel(classInfo) + it.second})")}\t" + ) + } + noLabelDups(inheritedFields[entityLabel])?.forEach { + var inherited = it + var current = classInfo + var baseClass: ClassInfo? = null + while (baseClass == null) { + inherentFields[toLabel(current)]?.let { + if (it.any { it.second.equals(inherited.second) }) { + baseClass = current + } + } + hierarchy[current]?.first?.let { current = it } + } + out.println( + "${getBoxWithColor(lightGray,"[${it.second}](#${toConcatName(toLabel(baseClass)+it.second)})")}\t" + ) + } + + noLabelDups(inherentFields[entityLabel])?.forEach { + printRelationships(classInfo, it, out) + } + } + + hierarchy[classInfo]?.second?.forEach { printEntities(it, out) } + } + + fun noLabelDups(list: Set>?): Set>? { + if (list == null) return null + return list + .map { it.second } + .distinct() + .map { + val label = it + list.first { it.second == label } + } + .toSet() + } + + fun toLabel(classInfo: ClassInfo?): String { + if (classInfo == null) { + return "Node" + } + return classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName + } + + fun toAnchorLink(entityName: String): String { + return toConcatName(entityName).lowercase(Locale.getDefault()) + } + + fun toConcatName(entityName: String): String { + return entityName.replace(" ", "-") + } + + fun openMermaid(out: PrintWriter) { + out.println( + "```mermaid\n" + + "flowchart LR\n" + + " classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5;" + + " classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;" + ) + } + fun closeMermaid(out: PrintWriter) { + out.println("```") + } + + fun getHierarchy(classInfo: ClassInfo): MutableList { + val inheritance: MutableList = mutableListOf() + hierarchy[classInfo]?.first?.let { inheritance.addAll(getHierarchy(it)) } + inheritance.add(classInfo) + return inheritance + } + + fun getTargetInfo(fInfo: FieldInfo): Pair { + val type = fInfo.field.genericType + relationshipFields + .map { it.value.field.genericType } + .filterIsInstance() + .map { it.rawType } + val baseClass: Type? = getNestedBaseType(type) + var multiplicity = getNestedMultiplicity(type) + + var targetClassInfo: ClassInfo? = null + if (baseClass != null) { + targetClassInfo = + hierarchy + .map { it.key } + .filter { + baseClass.typeName.split(" ").contains(it.underlyingClass.canonicalName) + } + .firstOrNull() + } + + return Pair(multiplicity, targetClassInfo) + } + + fun getNestedBaseType(type: Type): Type? { + if (type is ParameterizedType) { + return type.actualTypeArguments.map { getNestedBaseType(it) }.firstOrNull() + } + return type + } + + fun getNestedMultiplicity(type: Type): Boolean { + if (type is ParameterizedType) { + if ( + type.rawType.typeName.substringBeforeLast(".").equals("java.util") + ) { // listOf(List::class).contains(type.rawType) + return true + } else { + return type.actualTypeArguments.any { getNestedMultiplicity(it) } + } + } + return false + } + + fun getBoxWithColor(color: String, text: String): String { + return "${text}" + } + + fun printRelationships( + classInfo: ClassInfo, + relationshipLabel: Pair, + out: PrintWriter + ) { + val fieldInfo: FieldInfo = classInfo.getFieldInfo(relationshipLabel.first) + val targetInfo = getTargetInfo(fieldInfo) + val multiplicity = if (targetInfo.first) "*" else "¹" + out.println( + "### ${relationshipLabel.second}" + ) + openMermaid(out) + out.println( + "${toLabel(classInfo)}--\"${relationshipLabel.second}${multiplicity}\"-->${toLabel(classInfo)}${relationshipLabel.second}[${toLabel(targetInfo.second)}]:::outer" + ) + closeMermaid(out) + } +} From d1814836d3a3076f56c49ea1a4c309f286c44d31 Mon Sep 17 00:00:00 2001 From: Konrad Weiss Date: Fri, 12 May 2023 16:49:48 +0200 Subject: [PATCH 02/17] Add command line option to print Schema to a specified file --- .../aisec/cpg_vis_neo4j/Application.kt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt index 02a11fa207..fb4c192e7a 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt @@ -183,6 +183,12 @@ class Application : Callable { ) private var inferNodes: Boolean = false + @CommandLine.Option( + names = ["--schema"], + description = ["Print the CPGs nodes and edges that they can have."] + ) + private var schema: Boolean = false + @CommandLine.Option( names = ["--top-level"], description = @@ -364,6 +370,12 @@ class Application : Callable { return translationConfiguration.build() } + private fun printSchema(filenames: Collection) { + val schema = Schema() + schema.extractSchema() + filenames.forEach { schema.printToFile(it) } + } + /** * The entrypoint of the cpg-vis-neo4j. * @@ -376,6 +388,11 @@ class Application : Callable { */ @Throws(Exception::class, ConnectException::class, IllegalArgumentException::class) override fun call(): Int { + + if (schema) { + printSchema(mutuallyExclusiveParameters.files) + return EXIT_SUCCESS + } val translationConfiguration = setupTranslationConfiguration() val startTime = System.currentTimeMillis() From 4cb2ed2f0bf505b23e5782f8d3642b9e37905977 Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Tue, 23 May 2023 11:21:04 +0200 Subject: [PATCH 03/17] Use css classes instead of repeating style --- cpg-core/specifications/dfg.md | 4 + .../fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 120 +++++++++--------- 2 files changed, 66 insertions(+), 58 deletions(-) diff --git a/cpg-core/specifications/dfg.md b/cpg-core/specifications/dfg.md index 77fc8e727e..0f7036b3c3 100644 --- a/cpg-core/specifications/dfg.md +++ b/cpg-core/specifications/dfg.md @@ -2,6 +2,10 @@ The Data Flow Graph (DFG) is built as edges between nodes. Each node has a set of incoming data flows (`prevDFG`) and outgoing data flows (`nextDFG`). In the following, we summarize how different types of nodes construct the respective data flows. +{:style="background:#dddddd"} +[Statement](#estatement) + +[Statement](#estatement) ## CallExpression diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index cd062cedef..1fda1cfe9c 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -37,52 +37,56 @@ import org.neo4j.ogm.metadata.MetaData class Schema { - val lightGreen = "#aaffbb" - val lightBlue = "#aabbff" - val lightGray = "#dddddd" - - val header = - "# CPG Schema\n" + + private val styling = + "\n" + + private val header = + styling + + "\n" + + "# CPG Schema\n" + "This file shows all node labels and relationships between them that are persisted from the in memory CPG to the Neo4j database. " + "The specification is generated automatically and always up to date." // Contains the class hierarchy with the root Node. - val hierarchy: MutableMap>> = mutableMapOf() + private val hierarchy: MutableMap>> = mutableMapOf() /** * Set of fields that are translated into a relationship. The pair saves the field name, and the * relationship name. Saves MutableMap>> */ - val relCanHave: MutableMap>> = mutableMapOf() + private val relCanHave: MutableMap>> = mutableMapOf() /** * Relationships newly defined in this specific entity. Saves * MutableMap>> */ - val inherentFields: MutableMap>> = mutableMapOf() + private val inherentFields: MutableMap>> = mutableMapOf() /** * Relationships inherited from a parent in the inheritance hierarchy. A node with this label * can have this relationship if it is non-nullable. Saves * MutableMap>> */ - val inheritedFields: MutableMap>> = mutableMapOf() + private val inheritedFields: MutableMap>> = mutableMapOf() /** * Relationships defined by children in the inheritance hierarchy. A node with this label can * have this relationship also has the label of the defining child entity. Saves * MutableMap>> */ - val childrenFields: MutableMap>> = mutableMapOf() + private val childrenFields: MutableMap>> = mutableMapOf() - val relationshipFields: MutableMap, FieldInfo> = mutableMapOf() + private val relationshipFields: MutableMap, FieldInfo> = mutableMapOf() fun extractSchema() { - val meta: MetaData = MetaData(Node.javaClass.packageName) + val meta = MetaData(Node.javaClass.packageName) val nodeClassInfo = - meta - .persistentEntities() - .filter { it.underlyingClass == Node::class.java } - .firstOrNull()!! + meta.persistentEntities().first { it.underlyingClass == Node::class.java } val entities = meta.persistentEntities().filter { Node::class.java.isAssignableFrom(it.underlyingClass) && !it.isRelationshipEntity @@ -108,10 +112,8 @@ class Schema { entities.forEach { val key = meta.schema.findNode(it.neo4jName()) - relCanHave.put( - it.neo4jName() ?: it.underlyingClass.simpleName, - key.relationships().entries.map { Pair(it.key, it.value.type()) }.toSet(), - ) + relCanHave[it.neo4jName() ?: it.underlyingClass.simpleName] = + key.relationships().entries.map { Pair(it.key, it.value.type()) }.toSet() } // Complements the hierarchy and relationship information for abstract classes @@ -128,14 +130,12 @@ class Schema { fields.forEach { relationshipFields.put(Pair(entity, it.name), it) } val name = it.neo4jName() ?: it.underlyingClass.simpleName relCanHave[name]?.let { - inherentFields.put( - name, + inherentFields[name] = it.filter { val rel = it.first fields.any { it.name.equals(rel) } } .toSet() - ) } } @@ -207,13 +207,13 @@ class Schema { } } - fun printEntities(classInfo: ClassInfo, out: PrintWriter) { + private fun printEntities(classInfo: ClassInfo, out: PrintWriter) { // TODO print a section for every entity. List of relationships not inherent. List of rel // inherent with result node. try to get links into relationship and target. // TODO subsection with inherent relationships. val entityLabel = toLabel(classInfo) - out.println("# $entityLabel") + out.println("## $entityLabel") // Todo print entity description if (hierarchy[classInfo]?.first != null) { @@ -223,23 +223,29 @@ class Schema { hierarchy[classInfo]?.first?.let { getHierarchy(it).forEach { out.print( - "${getBoxWithColor(lightGray,"[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})")}\t" + getBoxWithClass( + "superclassLabel", + "[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})" + ) ) } } out.print( - "${getBoxWithColor(lightBlue,"[${entityLabel}](#${toAnchorLink("e"+entityLabel)})")}\t" + getBoxWithClass("classLabel", "[${entityLabel}](#${toAnchorLink("e$entityLabel")})") ) out.println() } - if (hierarchy[classInfo]?.second?.isNotEmpty() ?: false) { - out.println("## Children") + if (hierarchy[classInfo]?.second?.isNotEmpty() == true) { + out.println("### Children") hierarchy[classInfo]?.second?.let { if (it.isNotEmpty()) { it.forEach { out.print( - "${getBoxWithColor(lightGray,"[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})")}\t" + getBoxWithClass( + "child", + "[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})" + ) ) // out.println("click ${toLabel(it)} href // \"#${toAnchorLink(toLabel(it))}\"") @@ -250,11 +256,14 @@ class Schema { } if (inherentFields.isNotEmpty() && inheritedFields.isNotEmpty()) { - out.println("## Relationships") + out.println("### Relationships") noLabelDups(inherentFields[entityLabel])?.forEach { out.println( - "${getBoxWithColor(lightGreen,"[${it.second}](#${ toLabel(classInfo) + it.second})")}\t" + getBoxWithClass( + "relationship", + "[${it.second}](#${ toLabel(classInfo) + it.second})" + ) ) } noLabelDups(inheritedFields[entityLabel])?.forEach { @@ -270,7 +279,10 @@ class Schema { hierarchy[current]?.first?.let { current = it } } out.println( - "${getBoxWithColor(lightGray,"[${it.second}](#${toConcatName(toLabel(baseClass)+it.second)})")}\t" + getBoxWithClass( + "inherited-relationship", + "[${it.second}](#${toConcatName(toLabel(baseClass)+it.second)})" + ) ) } @@ -282,7 +294,7 @@ class Schema { hierarchy[classInfo]?.second?.forEach { printEntities(it, out) } } - fun noLabelDups(list: Set>?): Set>? { + private fun noLabelDups(list: Set>?): Set>? { if (list == null) return null return list .map { it.second } @@ -294,22 +306,22 @@ class Schema { .toSet() } - fun toLabel(classInfo: ClassInfo?): String { + private fun toLabel(classInfo: ClassInfo?): String { if (classInfo == null) { return "Node" } return classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName } - fun toAnchorLink(entityName: String): String { + private fun toAnchorLink(entityName: String): String { return toConcatName(entityName).lowercase(Locale.getDefault()) } - fun toConcatName(entityName: String): String { + private fun toConcatName(entityName: String): String { return entityName.replace(" ", "-") } - fun openMermaid(out: PrintWriter) { + private fun openMermaid(out: PrintWriter) { out.println( "```mermaid\n" + "flowchart LR\n" + @@ -317,18 +329,18 @@ class Schema { " classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5;" ) } - fun closeMermaid(out: PrintWriter) { + private fun closeMermaid(out: PrintWriter) { out.println("```") } - fun getHierarchy(classInfo: ClassInfo): MutableList { + private fun getHierarchy(classInfo: ClassInfo): MutableList { val inheritance: MutableList = mutableListOf() hierarchy[classInfo]?.first?.let { inheritance.addAll(getHierarchy(it)) } inheritance.add(classInfo) return inheritance } - fun getTargetInfo(fInfo: FieldInfo): Pair { + private fun getTargetInfo(fInfo: FieldInfo): Pair { val type = fInfo.field.genericType relationshipFields .map { it.value.field.genericType } @@ -342,26 +354,25 @@ class Schema { targetClassInfo = hierarchy .map { it.key } - .filter { + .firstOrNull { baseClass.typeName.split(" ").contains(it.underlyingClass.canonicalName) } - .firstOrNull() } return Pair(multiplicity, targetClassInfo) } - fun getNestedBaseType(type: Type): Type? { + private fun getNestedBaseType(type: Type): Type? { if (type is ParameterizedType) { return type.actualTypeArguments.map { getNestedBaseType(it) }.firstOrNull() } return type } - fun getNestedMultiplicity(type: Type): Boolean { + private fun getNestedMultiplicity(type: Type): Boolean { if (type is ParameterizedType) { if ( - type.rawType.typeName.substringBeforeLast(".").equals("java.util") + type.rawType.typeName.substringBeforeLast(".") == "java.util" ) { // listOf(List::class).contains(type.rawType) return true } else { @@ -371,18 +382,11 @@ class Schema { return false } - fun getBoxWithColor(color: String, text: String): String { - return "${text}" + private fun getBoxWithClass(cssClass: String, text: String): String { + return "${text}\n" } - fun printRelationships( + private fun printRelationships( classInfo: ClassInfo, relationshipLabel: Pair, out: PrintWriter @@ -391,7 +395,7 @@ class Schema { val targetInfo = getTargetInfo(fieldInfo) val multiplicity = if (targetInfo.first) "*" else "¹" out.println( - "### ${relationshipLabel.second}" + "#### ${relationshipLabel.second}" ) openMermaid(out) out.println( From b7d26ee8c8d300d1a15327eaf16682c15e1b19c7 Mon Sep 17 00:00:00 2001 From: Konrad Weiss Date: Mon, 26 Jun 2023 16:47:58 +0200 Subject: [PATCH 04/17] Small renaming --- .../fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 55 ++++++++++--------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index 1fda1cfe9c..f121ebe80a 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -57,30 +57,35 @@ class Schema { private val hierarchy: MutableMap>> = mutableMapOf() /** - * Set of fields that are translated into a relationship. The pair saves the field name, and the - * relationship name. Saves MutableMap>> + * Map of entities and the relationships they can have, including relationships defined in + * subclasses. The pair saves the field name, and the relationship name. Saves + * MutableMap>> */ - private val relCanHave: MutableMap>> = mutableMapOf() + private val allRels: MutableMap>> = mutableMapOf() /** * Relationships newly defined in this specific entity. Saves * MutableMap>> */ - private val inherentFields: MutableMap>> = mutableMapOf() + private val inherentRels: MutableMap>> = mutableMapOf() /** * Relationships inherited from a parent in the inheritance hierarchy. A node with this label * can have this relationship if it is non-nullable. Saves * MutableMap>> */ - private val inheritedFields: MutableMap>> = mutableMapOf() + private val inheritedRels: MutableMap>> = mutableMapOf() /** * Relationships defined by children in the inheritance hierarchy. A node with this label can * have this relationship also has the label of the defining child entity. Saves * MutableMap>> */ - private val childrenFields: MutableMap>> = mutableMapOf() + private val childrensRels: MutableMap>> = mutableMapOf() + /** + * Stores a mapping from class information in combination with a relationship name, to the field + * information that contains the relationship. + */ private val relationshipFields: MutableMap, FieldInfo> = mutableMapOf() fun extractSchema() { @@ -96,15 +101,13 @@ class Schema { if (it in entities) { val superC = it.directSuperclass() - hierarchy.put( - it, + hierarchy[it] = Pair( if (superC in entities) superC else null, it.directSubclasses() .filter { it in entities } .distinct() // Filter out duplicates ) - ) } } @@ -112,12 +115,12 @@ class Schema { entities.forEach { val key = meta.schema.findNode(it.neo4jName()) - relCanHave[it.neo4jName() ?: it.underlyingClass.simpleName] = + allRels[it.neo4jName() ?: it.underlyingClass.simpleName] = key.relationships().entries.map { Pair(it.key, it.value.type()) }.toSet() } // Complements the hierarchy and relationship information for abstract classes - completeSchema(relCanHave, hierarchy, nodeClassInfo) + completeSchema(allRels, hierarchy, nodeClassInfo) // Searches for all relationships backed by a class field to know which relationships are // newly defined in the // entity class @@ -129,8 +132,8 @@ class Schema { } fields.forEach { relationshipFields.put(Pair(entity, it.name), it) } val name = it.neo4jName() ?: it.underlyingClass.simpleName - relCanHave[name]?.let { - inherentFields[name] = + allRels[name]?.let { + inherentRels[name] = it.filter { val rel = it.first fields.any { it.name.equals(rel) } @@ -144,30 +147,30 @@ class Schema { val entityRoots: MutableList = hierarchy.filter { it.value.first == null }.map { it.key }.toMutableList() entityRoots.forEach { - inheritedFields[it.neo4jName() ?: it.underlyingClass.simpleName] = mutableSetOf() + inheritedRels[it.neo4jName() ?: it.underlyingClass.simpleName] = mutableSetOf() } entityRoots.forEach { buildInheritedFields(it) } - relCanHave.forEach { - childrenFields[it.key] = + allRels.forEach { + childrensRels[it.key] = it.value - .subtract(inheritedFields[it.key] ?: emptyList()) - .subtract(inherentFields[it.key] ?: emptyList()) + .subtract(inheritedRels[it.key] ?: emptyList()) + .subtract(inherentRels[it.key] ?: emptyList()) } println() } private fun buildInheritedFields(classInfo: ClassInfo) { val fields: MutableSet> = mutableSetOf() - inherentFields[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let { + inherentRels[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let { fields.addAll(it) } - inheritedFields[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let { + inheritedRels[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName]?.let { fields.addAll(it) } hierarchy[classInfo]?.second?.forEach { - inheritedFields[it.neo4jName() ?: it.underlyingClass.simpleName] = fields + inheritedRels[it.neo4jName() ?: it.underlyingClass.simpleName] = fields buildInheritedFields(it) } } @@ -255,10 +258,10 @@ class Schema { } } - if (inherentFields.isNotEmpty() && inheritedFields.isNotEmpty()) { + if (inherentRels.isNotEmpty() && inheritedRels.isNotEmpty()) { out.println("### Relationships") - noLabelDups(inherentFields[entityLabel])?.forEach { + noLabelDups(inherentRels[entityLabel])?.forEach { out.println( getBoxWithClass( "relationship", @@ -266,12 +269,12 @@ class Schema { ) ) } - noLabelDups(inheritedFields[entityLabel])?.forEach { + noLabelDups(inheritedRels[entityLabel])?.forEach { var inherited = it var current = classInfo var baseClass: ClassInfo? = null while (baseClass == null) { - inherentFields[toLabel(current)]?.let { + inherentRels[toLabel(current)]?.let { if (it.any { it.second.equals(inherited.second) }) { baseClass = current } @@ -286,7 +289,7 @@ class Schema { ) } - noLabelDups(inherentFields[entityLabel])?.forEach { + noLabelDups(inherentRels[entityLabel])?.forEach { printRelationships(classInfo, it, out) } } From 89e8134bd8bbb29e6c83081f0a8415dce04701a7 Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Tue, 1 Aug 2023 14:35:14 +0200 Subject: [PATCH 05/17] Automatically build schema on main --- .github/workflows/build.yml | 11 +++++++++++ .../src/main/nodejs/package-lock.json | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f462b3b482..f2495bc709 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -133,6 +133,17 @@ jobs: with: name: reports path: reports.zip + - name: Generate graph schema + if: github.ref == 'refs/heads/main' + run: | + mkdir cpg-neo4j/build/schema + ./gradlew :cpg-neo4j:run --args="--schema ./build/schema/graph.md" + - name: Publish graph schema (main) + if: github.ref == 'refs/heads/main' + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: cpg-neo4j/build/schema + target-folder: CPG/specs - name: Publish to Maven Central if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, 'beta') && !contains(github.ref, 'alpha') run: | diff --git a/cpg-language-typescript/src/main/nodejs/package-lock.json b/cpg-language-typescript/src/main/nodejs/package-lock.json index 1fe34fba97..06c54debc4 100644 --- a/cpg-language-typescript/src/main/nodejs/package-lock.json +++ b/cpg-language-typescript/src/main/nodejs/package-lock.json @@ -13,7 +13,7 @@ "@rollup/plugin-commonjs": "^25.0.3", "@rollup/plugin-node-resolve": "^15.1.0", "@rollup/plugin-typescript": "^11.1.2", - "rollup": "^3.27.0", + "rollup": "^3.26.3", "tslib": "^2.6.0" } }, From dbaf65fa6667d0d4b39b1e24d6c2e75337b42d55 Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Tue, 1 Aug 2023 14:35:38 +0200 Subject: [PATCH 06/17] Delete duplicate file --- docs/docs/CPG/specs/schema.md | 10952 -------------------------------- 1 file changed, 10952 deletions(-) delete mode 100644 docs/docs/CPG/specs/schema.md diff --git a/docs/docs/CPG/specs/schema.md b/docs/docs/CPG/specs/schema.md deleted file mode 100644 index dcb736047a..0000000000 --- a/docs/docs/CPG/specs/schema.md +++ /dev/null @@ -1,10952 +0,0 @@ -# CPG Schema -This file shows all node labels and relationships between them that are persisted from the in memory CPG to the Neo4j database. The specification is generated automatically and always up to date. -# Node -## Children -[Statement](#estatement) [Declaration](#edeclaration) [Type](#etype) [AnnotationMember](#eannotationmember) [Component](#ecomponent) [Annotation](#eannotation) -## Relationships -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DFG -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"DFG*"-->NodeDFG[Node]:::outer -``` -### EOG -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"EOG*"-->NodeEOG[Node]:::outer -``` -### ANNOTATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"ANNOTATIONS*"-->NodeANNOTATIONS[Annotation]:::outer -``` -### AST -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"AST*"-->NodeAST[Node]:::outer -``` -### SCOPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer -``` -### TYPEDEFS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclaration]:::outer -``` -# Statement -**Labels**:[Node](#enode) [Statement](#estatement) -## Children -[AssertStatement](#eassertstatement) [DoStatement](#edostatement) [CaseStatement](#ecasestatement) [ReturnStatement](#ereturnstatement) [Expression](#eexpression) [IfStatement](#eifstatement) [DeclarationStatement](#edeclarationstatement) [ForStatement](#eforstatement) [CatchClause](#ecatchclause) [SwitchStatement](#eswitchstatement) [GotoStatement](#egotostatement) [WhileStatement](#ewhilestatement) [CompoundStatement](#ecompoundstatement) [ContinueStatement](#econtinuestatement) [DefaultStatement](#edefaultstatement) [SynchronizedStatement](#esynchronizedstatement) [TryStatement](#etrystatement) [ForEachStatement](#eforeachstatement) [LabelStatement](#elabelstatement) [BreakStatement](#ebreakstatement) [EmptyStatement](#eemptystatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### LOCALS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Statement--"LOCALS*"-->StatementLOCALS[VariableDeclaration]:::outer -``` -# AssertStatement -**Labels**:[Node](#enode) [Statement](#estatement) [AssertStatement](#eassertstatement) -## Relationships -[CONDITION](#AssertStatementCONDITION) -[MESSAGE](#AssertStatementMESSAGE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer -``` -### MESSAGE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer -``` -# DoStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DoStatement](#edostatement) -## Relationships -[CONDITION](#DoStatementCONDITION) -[STATEMENT](#DoStatementSTATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DoStatement--"CONDITION¹"-->DoStatementCONDITION[Expression]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DoStatement--"STATEMENT¹"-->DoStatementSTATEMENT[Statement]:::outer -``` -# CaseStatement -**Labels**:[Node](#enode) [Statement](#estatement) [CaseStatement](#ecasestatement) -## Relationships -[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CASE_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer -``` -# ReturnStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ReturnStatement](#ereturnstatement) -## Relationships -[RETURN_VALUES](#ReturnStatementRETURN_VALUES) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RETURN_VALUES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer -``` -# Expression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -## Children -[NewExpression](#enewexpression) [LambdaExpression](#elambdaexpression) [UnaryOperator](#eunaryoperator) [ArrayRangeExpression](#earrayrangeexpression) [CallExpression](#ecallexpression) [DesignatedInitializerExpression](#edesignatedinitializerexpression) [KeyValueExpression](#ekeyvalueexpression) [AssignExpression](#eassignexpression) [CastExpression](#ecastexpression) [ArrayCreationExpression](#earraycreationexpression) [ArraySubscriptionExpression](#earraysubscriptionexpression) [TypeExpression](#etypeexpression) [BinaryOperator](#ebinaryoperator) [ConditionalExpression](#econditionalexpression) [DeclaredReferenceExpression](#edeclaredreferenceexpression) [InitializerListExpression](#einitializerlistexpression) [DeleteExpression](#edeleteexpression) [CompoundStatementExpression](#ecompoundstatementexpression) [ProblemExpression](#eproblemexpression) [Literal](#eliteral) [TypeIdExpression](#etypeidexpression) [ExpressionList](#eexpressionlist) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### POSSIBLE_SUB_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Expression--"POSSIBLE_SUB_TYPES*"-->ExpressionPOSSIBLE_SUB_TYPES[Type]:::outer -``` -### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer -``` -# NewExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [NewExpression](#enewexpression) -## Relationships -[INITIALIZER](#NewExpressionINITIALIZER) -[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer -``` -### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer -``` -# LambdaExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [LambdaExpression](#elambdaexpression) -## Relationships -[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES) -[FUNCTION](#LambdaExpressionFUNCTION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### MUTABLE_VARIABLES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer -``` -### FUNCTION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer -``` -# UnaryOperator -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [UnaryOperator](#eunaryoperator) -## Relationships -[INPUT](#UnaryOperatorINPUT) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INPUT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer -``` -# ArrayRangeExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ArrayRangeExpression](#earrayrangeexpression) -## Relationships -[CEILING](#ArrayRangeExpressionCEILING) -[STEP](#ArrayRangeExpressionSTEP) -[FLOOR](#ArrayRangeExpressionFLOOR) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CEILING -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"CEILING¹"-->ArrayRangeExpressionCEILING[Expression]:::outer -``` -### STEP -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"STEP¹"-->ArrayRangeExpressionSTEP[Expression]:::outer -``` -### FLOOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"FLOOR¹"-->ArrayRangeExpressionFLOOR[Expression]:::outer -``` -# CallExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) -## Children -[ExplicitConstructorInvocation](#eexplicitconstructorinvocation) [ConstructExpression](#econstructexpression) [MemberCallExpression](#emembercallexpression) -## Relationships -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CALLEE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer -``` -### INVOKES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer -``` -### TEMPLATE_INSTANTIATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer -``` -### ARGUMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer -``` -### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer -``` -# ExplicitConstructorInvocation -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [ExplicitConstructorInvocation](#eexplicitconstructorinvocation) -## Relationships -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ConstructExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [ConstructExpression](#econstructexpression) -## Relationships -[INSTANTIATES](#ConstructExpressionINSTANTIATES) -[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR) -[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS) -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INSTANTIATES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer -``` -### CONSTRUCTOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer -``` -### ANOYMOUS_CLASS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer -``` -# MemberCallExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [MemberCallExpression](#emembercallexpression) -## Relationships -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# DesignatedInitializerExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DesignatedInitializerExpression](#edesignatedinitializerexpression) -## Relationships -[LHS](#DesignatedInitializerExpressionLHS) -[RHS](#DesignatedInitializerExpressionRHS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DesignatedInitializerExpression--"LHS*"-->DesignatedInitializerExpressionLHS[Expression]:::outer -``` -### RHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DesignatedInitializerExpression--"RHS¹"-->DesignatedInitializerExpressionRHS[Expression]:::outer -``` -# KeyValueExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [KeyValueExpression](#ekeyvalueexpression) -## Relationships -[VALUE](#KeyValueExpressionVALUE) -[KEY](#KeyValueExpressionKEY) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### VALUE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer -``` -### KEY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer -``` -# AssignExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [AssignExpression](#eassignexpression) -## Relationships -[DECLARATIONS](#AssignExpressionDECLARATIONS) -[LHS](#AssignExpressionLHS) -[RHS](#AssignExpressionRHS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer -``` -### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer -``` -### RHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer -``` -# CastExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CastExpression](#ecastexpression) -## Relationships -[CAST_TYPE](#CastExpressionCAST_TYPE) -[EXPRESSION](#CastExpressionEXPRESSION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CAST_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer -``` -### EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer -``` -# ArrayCreationExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ArrayCreationExpression](#earraycreationexpression) -## Relationships -[INITIALIZER](#ArrayCreationExpressionINITIALIZER) -[DIMENSIONS](#ArrayCreationExpressionDIMENSIONS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayCreationExpression--"INITIALIZER¹"-->ArrayCreationExpressionINITIALIZER[Expression]:::outer -``` -### DIMENSIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayCreationExpression--"DIMENSIONS*"-->ArrayCreationExpressionDIMENSIONS[Expression]:::outer -``` -# ArraySubscriptionExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ArraySubscriptionExpression](#earraysubscriptionexpression) -## Relationships -[ARRAY_EXPRESSION](#ArraySubscriptionExpressionARRAY_EXPRESSION) -[SUBSCRIPT_EXPRESSION](#ArraySubscriptionExpressionSUBSCRIPT_EXPRESSION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ARRAY_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArraySubscriptionExpression--"ARRAY_EXPRESSION¹"-->ArraySubscriptionExpressionARRAY_EXPRESSION[Expression]:::outer -``` -### SUBSCRIPT_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArraySubscriptionExpression--"SUBSCRIPT_EXPRESSION¹"-->ArraySubscriptionExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer -``` -# TypeExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [TypeExpression](#etypeexpression) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# BinaryOperator -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [BinaryOperator](#ebinaryoperator) -## Relationships -[LHS](#BinaryOperatorLHS) -[RHS](#BinaryOperatorRHS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer -``` -### RHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer -``` -# ConditionalExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ConditionalExpression](#econditionalexpression) -## Relationships -[ELSE_EXPR](#ConditionalExpressionELSE_EXPR) -[THEN_EXPR](#ConditionalExpressionTHEN_EXPR) -[CONDITION](#ConditionalExpressionCONDITION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ELSE_EXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"ELSE_EXPR¹"-->ConditionalExpressionELSE_EXPR[Expression]:::outer -``` -### THEN_EXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"THEN_EXPR¹"-->ConditionalExpressionTHEN_EXPR[Expression]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer -``` -# DeclaredReferenceExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DeclaredReferenceExpression](#edeclaredreferenceexpression) -## Children -[MemberExpression](#ememberexpression) -## Relationships -[REFERS_TO](#DeclaredReferenceExpressionREFERS_TO) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REFERS_TO -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclaredReferenceExpression--"REFERS_TO¹"-->DeclaredReferenceExpressionREFERS_TO[Declaration]:::outer -``` -# MemberExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DeclaredReferenceExpression](#edeclaredreferenceexpression) [MemberExpression](#ememberexpression) -## Relationships -[BASE](#MemberExpressionBASE) -[REFERS_TO](#DeclaredReferenceExpressionREFERS_TO) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### BASE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer -``` -# InitializerListExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [InitializerListExpression](#einitializerlistexpression) -## Relationships -[INITIALIZERS](#InitializerListExpressionINITIALIZERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer -``` -# DeleteExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DeleteExpression](#edeleteexpression) -## Relationships -[OPERAND](#DeleteExpressionOPERAND) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### OPERAND -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer -``` -# CompoundStatementExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CompoundStatementExpression](#ecompoundstatementexpression) -## Relationships -[STATEMENT](#CompoundStatementExpressionSTATEMENT) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CompoundStatementExpression--"STATEMENT¹"-->CompoundStatementExpressionSTATEMENT[Statement]:::outer -``` -# ProblemExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ProblemExpression](#eproblemexpression) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# Literal -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Literal](#eliteral) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# TypeIdExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [TypeIdExpression](#etypeidexpression) -## Relationships -[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REFERENCED_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer -``` -# ExpressionList -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ExpressionList](#eexpressionlist) -## Relationships -[SUBEXPR](#ExpressionListSUBEXPR) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### SUBEXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer -``` -# IfStatement -**Labels**:[Node](#enode) [Statement](#estatement) [IfStatement](#eifstatement) -## Relationships -[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION) -[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT) -[THEN_STATEMENT](#IfStatementTHEN_STATEMENT) -[CONDITION](#IfStatementCONDITION) -[ELSE_STATEMENT](#IfStatementELSE_STATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer -``` -### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -### THEN_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer -``` -### ELSE_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer -``` -# DeclarationStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DeclarationStatement](#edeclarationstatement) -## Children -[ASMDeclarationStatement](#easmdeclarationstatement) -## Relationships -[DECLARATIONS](#DeclarationStatementDECLARATIONS) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer -``` -# ASMDeclarationStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DeclarationStatement](#edeclarationstatement) [ASMDeclarationStatement](#easmdeclarationstatement) -## Relationships -[DECLARATIONS](#DeclarationStatementDECLARATIONS) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ForStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ForStatement](#eforstatement) -## Relationships -[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION) -[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT) -[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT) -[CONDITION](#ForStatementCONDITION) -[STATEMENT](#ForStatementSTATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer -``` -### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -### ITERATION_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer -``` -# CatchClause -**Labels**:[Node](#enode) [Statement](#estatement) [CatchClause](#ecatchclause) -## Relationships -[PARAMETER](#CatchClausePARAMETER) -[BODY](#CatchClauseBODY) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### PARAMETER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer -``` -### BODY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CatchClause--"BODY¹"-->CatchClauseBODY[CompoundStatement]:::outer -``` -# SwitchStatement -**Labels**:[Node](#enode) [Statement](#estatement) [SwitchStatement](#eswitchstatement) -## Relationships -[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT) -[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION) -[STATEMENT](#SwitchStatementSTATEMENT) -[SELECTOR](#SwitchStatementSELECTOR) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -### SELECTOR_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer -``` -### SELECTOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer -``` -# GotoStatement -**Labels**:[Node](#enode) [Statement](#estatement) [GotoStatement](#egotostatement) -## Relationships -[TARGET_LABEL](#GotoStatementTARGET_LABEL) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### TARGET_LABEL -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer -``` -# WhileStatement -**Labels**:[Node](#enode) [Statement](#estatement) [WhileStatement](#ewhilestatement) -## Relationships -[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION) -[CONDITION](#WhileStatementCONDITION) -[STATEMENT](#WhileStatementSTATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer -``` -# CompoundStatement -**Labels**:[Node](#enode) [Statement](#estatement) [CompoundStatement](#ecompoundstatement) -## Relationships -[STATEMENTS](#CompoundStatementSTATEMENTS) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CompoundStatement--"STATEMENTS*"-->CompoundStatementSTATEMENTS[Statement]:::outer -``` -# ContinueStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ContinueStatement](#econtinuestatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# DefaultStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DefaultStatement](#edefaultstatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# SynchronizedStatement -**Labels**:[Node](#enode) [Statement](#estatement) [SynchronizedStatement](#esynchronizedstatement) -## Relationships -[BLOCK_STATEMENT](#SynchronizedStatementBLOCK_STATEMENT) -[EXPRESSION](#SynchronizedStatementEXPRESSION) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### BLOCK_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SynchronizedStatement--"BLOCK_STATEMENT¹"-->SynchronizedStatementBLOCK_STATEMENT[CompoundStatement]:::outer -``` -### EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer -``` -# TryStatement -**Labels**:[Node](#enode) [Statement](#estatement) [TryStatement](#etrystatement) -## Relationships -[RESOURCES](#TryStatementRESOURCES) -[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK) -[TRY_BLOCK](#TryStatementTRY_BLOCK) -[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RESOURCES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer -``` -### FINALLY_BLOCK -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[CompoundStatement]:::outer -``` -### TRY_BLOCK -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[CompoundStatement]:::outer -``` -### CATCH_CLAUSES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer -``` -# ForEachStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ForEachStatement](#eforeachstatement) -## Relationships -[STATEMENT](#ForEachStatementSTATEMENT) -[VARIABLE](#ForEachStatementVARIABLE) -[ITERABLE](#ForEachStatementITERABLE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer -``` -### VARIABLE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer -``` -### ITERABLE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer -``` -# LabelStatement -**Labels**:[Node](#enode) [Statement](#estatement) [LabelStatement](#elabelstatement) -## Relationships -[SUB_STATEMENT](#LabelStatementSUB_STATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### SUB_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer -``` -# BreakStatement -**Labels**:[Node](#enode) [Statement](#estatement) [BreakStatement](#ebreakstatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# EmptyStatement -**Labels**:[Node](#enode) [Statement](#estatement) [EmptyStatement](#eemptystatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# Declaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) -## Children -[ValueDeclaration](#evaluedeclaration) [TemplateDeclaration](#etemplatedeclaration) [EnumDeclaration](#eenumdeclaration) [TypedefDeclaration](#etypedefdeclaration) [UsingDirective](#eusingdirective) [NamespaceDeclaration](#enamespacedeclaration) [RecordDeclaration](#erecorddeclaration) [DeclarationSequence](#edeclarationsequence) [TranslationUnitDeclaration](#etranslationunitdeclaration) [IncludeDeclaration](#eincludedeclaration) -## Relationships -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ValueDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) -## Children -[FieldDeclaration](#efielddeclaration) [VariableDeclaration](#evariabledeclaration) [ProblemDeclaration](#eproblemdeclaration) [EnumConstantDeclaration](#eenumconstantdeclaration) [FunctionDeclaration](#efunctiondeclaration) [ParamVariableDeclaration](#eparamvariabledeclaration) [TypeParamDeclaration](#etypeparamdeclaration) -## Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### POSSIBLE_SUB_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"POSSIBLE_SUB_TYPES*"-->ValueDeclarationPOSSIBLE_SUB_TYPES[Type]:::outer -``` -### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer -``` -### USAGE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[DeclaredReferenceExpression]:::outer -``` -# FieldDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FieldDeclaration](#efielddeclaration) -## Relationships -[INITIALIZER](#FieldDeclarationINITIALIZER) -[DEFINES](#FieldDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FieldDeclaration--"INITIALIZER¹"-->FieldDeclarationINITIALIZER[Expression]:::outer -``` -### DEFINES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer -``` -# VariableDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [VariableDeclaration](#evariabledeclaration) -## Relationships -[INITIALIZER](#VariableDeclarationINITIALIZER) -[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer -``` -### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer -``` -# ProblemDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [ProblemDeclaration](#eproblemdeclaration) -## Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# EnumConstantDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [EnumConstantDeclaration](#eenumconstantdeclaration) -## Relationships -[INITIALIZER](#EnumConstantDeclarationINITIALIZER) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer -``` -# FunctionDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) -## Children -[MethodDeclaration](#emethoddeclaration) -## Relationships -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) -[OVERRIDES](#FunctionDeclarationOVERRIDES) -[BODY](#FunctionDeclarationBODY) -[RECORDS](#FunctionDeclarationRECORDS) -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) -[PARAMETERS](#FunctionDeclarationPARAMETERS) -[DEFINES](#FunctionDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### THROWS_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer -``` -### OVERRIDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer -``` -### BODY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer -``` -### RECORDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer -``` -### RETURN_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer -``` -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParamVariableDeclaration]:::outer -``` -### DEFINES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer -``` -# MethodDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) [MethodDeclaration](#emethoddeclaration) -## Children -[ConstructorDeclaration](#econstructordeclaration) -## Relationships -[RECEIVER](#MethodDeclarationRECEIVER) -[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) -[OVERRIDES](#FunctionDeclarationOVERRIDES) -[BODY](#FunctionDeclarationBODY) -[RECORDS](#FunctionDeclarationRECORDS) -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) -[PARAMETERS](#FunctionDeclarationPARAMETERS) -[DEFINES](#FunctionDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RECEIVER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer -``` -### RECORD_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer -``` -# ConstructorDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) [MethodDeclaration](#emethoddeclaration) [ConstructorDeclaration](#econstructordeclaration) -## Relationships -[RECEIVER](#MethodDeclarationRECEIVER) -[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) -[OVERRIDES](#FunctionDeclarationOVERRIDES) -[BODY](#FunctionDeclarationBODY) -[RECORDS](#FunctionDeclarationRECORDS) -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) -[PARAMETERS](#FunctionDeclarationPARAMETERS) -[DEFINES](#FunctionDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ParamVariableDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [ParamVariableDeclaration](#eparamvariabledeclaration) -## Relationships -[DEFAULT](#ParamVariableDeclarationDEFAULT) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DEFAULT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ParamVariableDeclaration--"DEFAULT¹"-->ParamVariableDeclarationDEFAULT[Expression]:::outer -``` -# TypeParamDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [TypeParamDeclaration](#etypeparamdeclaration) -## Relationships -[DEFAULT](#TypeParamDeclarationDEFAULT) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DEFAULT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypeParamDeclaration--"DEFAULT¹"-->TypeParamDeclarationDEFAULT[Type]:::outer -``` -# TemplateDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) -## Children -[ClassTemplateDeclaration](#eclasstemplatedeclaration) [FunctionTemplateDeclaration](#efunctiontemplatedeclaration) -## Relationships -[PARAMETERS](#TemplateDeclarationPARAMETERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer -``` -# ClassTemplateDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) [ClassTemplateDeclaration](#eclasstemplatedeclaration) -## Relationships -[REALIZATION](#ClassTemplateDeclarationREALIZATION) -[PARAMETERS](#TemplateDeclarationPARAMETERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REALIZATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ClassTemplateDeclaration--"REALIZATION*"-->ClassTemplateDeclarationREALIZATION[RecordDeclaration]:::outer -``` -# FunctionTemplateDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) [FunctionTemplateDeclaration](#efunctiontemplatedeclaration) -## Relationships -[REALIZATION](#FunctionTemplateDeclarationREALIZATION) -[PARAMETERS](#TemplateDeclarationPARAMETERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REALIZATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer -``` -# EnumDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [EnumDeclaration](#eenumdeclaration) -## Relationships -[ENTRIES](#EnumDeclarationENTRIES) -[SUPER_TYPE_DECLARATIONS](#EnumDeclarationSUPER_TYPE_DECLARATIONS) -[SUPER_TYPES](#EnumDeclarationSUPER_TYPES) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ENTRIES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer -``` -### SUPER_TYPE_DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"SUPER_TYPE_DECLARATIONS*"-->EnumDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer -``` -### SUPER_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"SUPER_TYPES*"-->EnumDeclarationSUPER_TYPES[Type]:::outer -``` -# TypedefDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TypedefDeclaration](#etypedefdeclaration) -## Relationships -[ALIAS](#TypedefDeclarationALIAS) -[TYPE](#TypedefDeclarationTYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ALIAS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer -``` -### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer -``` -# UsingDirective -**Labels**:[Node](#enode) [Declaration](#edeclaration) [UsingDirective](#eusingdirective) -## Relationships -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# NamespaceDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [NamespaceDeclaration](#enamespacedeclaration) -## Relationships -[STATEMENTS](#NamespaceDeclarationSTATEMENTS) -[DECLARATIONS](#NamespaceDeclarationDECLARATIONS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer -``` -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer -``` -# RecordDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [RecordDeclaration](#erecorddeclaration) -## Relationships -[IMPORTS](#RecordDeclarationIMPORTS) -[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS) -[FIELDS](#RecordDeclarationFIELDS) -[TEMPLATES](#RecordDeclarationTEMPLATES) -[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS) -[RECORDS](#RecordDeclarationRECORDS) -[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS) -[STATEMENTS](#RecordDeclarationSTATEMENTS) -[METHODS](#RecordDeclarationMETHODS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### IMPORTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer -``` -### CONSTRUCTORS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer -``` -### FIELDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer -``` -### TEMPLATES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer -``` -### STATIC_IMPORTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer -``` -### RECORDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer -``` -### SUPER_TYPE_DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer -``` -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer -``` -### METHODS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer -``` -# DeclarationSequence -**Labels**:[Node](#enode) [Declaration](#edeclaration) [DeclarationSequence](#edeclarationsequence) -## Relationships -[CHILDREN](#DeclarationSequenceCHILDREN) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CHILDREN -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer -``` -# TranslationUnitDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TranslationUnitDeclaration](#etranslationunitdeclaration) -## Relationships -[NAMESPACES](#TranslationUnitDeclarationNAMESPACES) -[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS) -[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS) -[INCLUDES](#TranslationUnitDeclarationINCLUDES) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### NAMESPACES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer -``` -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer -``` -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer -``` -### INCLUDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer -``` -# IncludeDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [IncludeDeclaration](#eincludedeclaration) -## Relationships -[INCLUDES](#IncludeDeclarationINCLUDES) -[PROBLEMS](#IncludeDeclarationPROBLEMS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INCLUDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer -``` -### PROBLEMS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer -``` -# Type -**Labels**:[Node](#enode) [Type](#etype) -## Children -[UnknownType](#eunknowntype) [ObjectType](#eobjecttype) [ParameterizedType](#eparameterizedtype) [PointerType](#epointertype) [FunctionPointerType](#efunctionpointertype) [TupleType](#etupletype) [IncompleteType](#eincompletetype) [ReferenceType](#ereferencetype) [FunctionType](#efunctiontype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### SUPER_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer -``` -# UnknownType -**Labels**:[Node](#enode) [Type](#etype) [UnknownType](#eunknowntype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ObjectType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) -## Children -[NumericType](#enumerictype) [StringType](#estringtype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### GENERICS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer -``` -### RECORD_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer -``` -# NumericType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) -## Children -[IntegerType](#eintegertype) [FloatingPointType](#efloatingpointtype) [BooleanType](#ebooleantype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# IntegerType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [IntegerType](#eintegertype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# FloatingPointType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [FloatingPointType](#efloatingpointtype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# BooleanType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [BooleanType](#ebooleantype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# StringType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [StringType](#estringtype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ParameterizedType -**Labels**:[Node](#enode) [Type](#etype) [ParameterizedType](#eparameterizedtype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# PointerType -**Labels**:[Node](#enode) [Type](#etype) [PointerType](#epointertype) -## Relationships -[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ELEMENT_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer -``` -# FunctionPointerType -**Labels**:[Node](#enode) [Type](#etype) [FunctionPointerType](#efunctionpointertype) -## Relationships -[PARAMETERS](#FunctionPointerTypePARAMETERS) -[RETURN_TYPE](#FunctionPointerTypeRETURN_TYPE) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionPointerType--"PARAMETERS*"-->FunctionPointerTypePARAMETERS[Type]:::outer -``` -### RETURN_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer -``` -# TupleType -**Labels**:[Node](#enode) [Type](#etype) [TupleType](#etupletype) -## Relationships -[TYPES](#TupleTypeTYPES) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TupleType--"TYPES*"-->TupleTypeTYPES[Type]:::outer -``` -# IncompleteType -**Labels**:[Node](#enode) [Type](#etype) [IncompleteType](#eincompletetype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ReferenceType -**Labels**:[Node](#enode) [Type](#etype) [ReferenceType](#ereferencetype) -## Relationships -[REFERENCE](#ReferenceTypeREFERENCE) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REFERENCE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type]:::outer -``` -# FunctionType -**Labels**:[Node](#enode) [Type](#etype) [FunctionType](#efunctiontype) -## Relationships -[RETURN_TYPES](#FunctionTypeRETURN_TYPES) -[PARAMETERS](#FunctionTypePARAMETERS) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RETURN_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionType--"RETURN_TYPES*"-->FunctionTypeRETURN_TYPES[Type]:::outer -``` -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionType--"PARAMETERS*"-->FunctionTypePARAMETERS[Type]:::outer -``` -# AnnotationMember -**Labels**:[Node](#enode) [AnnotationMember](#eannotationmember) -## Relationships -[VALUE](#AnnotationMemberVALUE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### VALUE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AnnotationMember--"VALUE¹"-->AnnotationMemberVALUE[Expression]:::outer -``` -# Component -**Labels**:[Node](#enode) [Component](#ecomponent) -## Relationships -[OUTGOING_INTERACTIONS](#ComponentOUTGOING_INTERACTIONS) -[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS) -[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### OUTGOING_INTERACTIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer -``` -### INCOMING_INTERACTIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer -``` -### TRANSLATION_UNITS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"TRANSLATION_UNITS*"-->ComponentTRANSLATION_UNITS[TranslationUnitDeclaration]:::outer -``` -# Annotation -**Labels**:[Node](#enode) [Annotation](#eannotation) -## Relationships -[MEMBERS](#AnnotationMEMBERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### MEMBERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Annotation--"MEMBERS*"-->AnnotationMEMBERS[AnnotationMember]:::outer -``` From a0f2f8e8a1f3b8847b628b0527408e14bf19a021 Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Wed, 2 Aug 2023 10:46:46 +0200 Subject: [PATCH 07/17] Also list properties --- .../cpg/helpers/neo4j/LocationConverter.kt | 25 +++- .../aisec/cpg/helpers/neo4j/NameConverter.kt | 15 ++- .../fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 115 +++++++++++++----- 3 files changed, 116 insertions(+), 39 deletions(-) diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt index 97530c9f44..e33b242872 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/LocationConverter.kt @@ -30,11 +30,20 @@ import de.fraunhofer.aisec.cpg.sarif.Region import java.net.URI import org.neo4j.ogm.typeconversion.CompositeAttributeConverter +interface CpgCompositeConverter : CompositeAttributeConverter { + /** + * Determines to which properties and their types the received value will be split in the neo4j + * representation. The type is the first element in the pair and the property name is the second + * one. + */ + val graphSchema: List> +} + /** - * This class converts a [PhysicalLocation] into the the necessary composite attributes when - * persisting a node into a Neo4J graph database. + * This class converts a [PhysicalLocation] into the necessary composite attributes when persisting + * a node into a Neo4J graph database. */ -class LocationConverter : CompositeAttributeConverter { +class LocationConverter : CpgCompositeConverter { override fun toGraphProperties(value: PhysicalLocation?): Map { val properties: MutableMap = HashMap() if (value != null) { @@ -47,6 +56,16 @@ class LocationConverter : CompositeAttributeConverter { return properties } + override val graphSchema: List> + get() = + listOf( + Pair("String", ARTIFACT), + Pair("int", START_LINE), + Pair("int", END_LINE), + Pair("int", START_COLUMN), + Pair("int", END_COLUMN) + ) + override fun toEntityAttribute(value: Map?): PhysicalLocation? { return try { val startLine = toInt(value?.get(START_LINE)) ?: return null diff --git a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt index 3c7b16e607..464fd04340 100644 --- a/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt +++ b/cpg-core/src/main/kotlin/de/fraunhofer/aisec/cpg/helpers/neo4j/NameConverter.kt @@ -27,7 +27,6 @@ package de.fraunhofer.aisec.cpg.helpers.neo4j import de.fraunhofer.aisec.cpg.graph.Name import de.fraunhofer.aisec.cpg.graph.parseName -import org.neo4j.ogm.typeconversion.CompositeAttributeConverter /** * This converter can be used in a Neo4J session to persist the [Name] class into its components: @@ -37,7 +36,7 @@ import org.neo4j.ogm.typeconversion.CompositeAttributeConverter * * Additionally, it converts the aforementioned Neo4J attributes in a node back into a [Name]. */ -class NameConverter : CompositeAttributeConverter { +class NameConverter : CpgCompositeConverter { companion object { const val FIELD_FULL_NAME = "fullName" @@ -61,14 +60,22 @@ class NameConverter : CompositeAttributeConverter { // For reasons such as backwards compatibility and the fact that Neo4J likes to display // nodes in the UI with a "name" field as default, we also persist the full name (aka - // the - // toString() representation) as "name" + // the toString() representation) as "name" map[FIELD_NAME] = value.toString() } return map } + override val graphSchema: List> + get() = + listOf( + Pair("String", FIELD_FULL_NAME), + Pair("String", FIELD_LOCAL_NAME), + Pair("String", FIELD_NAME), + Pair("String", FIELD_NAME_DELIMITER) + ) + override fun toEntityAttribute(value: MutableMap): Name { return parseName(value[FIELD_FULL_NAME].toString(), value[FIELD_NAME_DELIMITER].toString()) } diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index 6047667e48..8493573a56 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -26,6 +26,7 @@ package de.fraunhofer.aisec.cpg_vis_neo4j import de.fraunhofer.aisec.cpg.graph.Node +import de.fraunhofer.aisec.cpg.helpers.neo4j.CpgCompositeConverter import java.io.File import java.io.PrintWriter import java.lang.reflect.ParameterizedType @@ -75,6 +76,22 @@ class Schema { * MutableMap>> */ private val inheritedRels: MutableMap>> = mutableMapOf() + + /** + * Relationships newly defined in this specific entity. Saves + * MutableMap>> + */ + private val inherentProperties: MutableMap>> = + mutableMapOf() + + /** + * Relationships inherited from a parent in the inheritance hierarchy. A node with this label + * can have this relationship if it is non-nullable. Saves + * MutableMap>> + */ + private val inheritedProperties: MutableMap>> = + mutableMapOf() + /** * Relationships defined by children in the inheritance hierarchy. A node with this label can * have this relationship also has the label of the defining child entity. Saves @@ -97,18 +114,17 @@ class Schema { Node::class.java.isAssignableFrom(it.underlyingClass) && !it.isRelationshipEntity } // Node to filter for, filter out what is not explicitly a - entities.forEach { - if (it in entities) { - val superC = it.directSuperclass() - - hierarchy[it] = - Pair( - if (superC in entities) superC else null, - it.directSubclasses() - .filter { it in entities } - .distinct() // Filter out duplicates - ) - } + entities.forEach { entity -> + val superC = entity.directSuperclass() + + hierarchy[entity] = + Pair( + if (superC in entities) superC else null, + entity + .directSubclasses() + .filter { it in entities } + .distinct() // Filter out duplicates + ) } // node in neo4j @@ -121,24 +137,42 @@ class Schema { // Complements the hierarchy and relationship information for abstract classes completeSchema(allRels, hierarchy, nodeClassInfo) - // Searches for all relationships backed by a class field to know which relationships are - // newly defined in the - // entity class - entities.forEach { - val entity = it + // Searches for all relationships and properties backed by a class field to know which + // of them are newly defined in the entity class + entities.forEach { entity -> val fields = entity.relationshipFields().filter { it.field.declaringClass == entity.underlyingClass } fields.forEach { relationshipFields.put(Pair(entity, it.name), it) } - val name = it.neo4jName() ?: it.underlyingClass.simpleName - allRels[name]?.let { + val name = entity.neo4jName() ?: entity.underlyingClass.simpleName + allRels[name]?.let { relationPair -> inherentRels[name] = - it.filter { - val rel = it.first - fields.any { it.name.equals(rel) } - } - .toSet() + relationPair.filter { rel -> fields.any { it.name.equals(rel.first) } }.toSet() + } + + entity.propertyFields().forEach { property -> + val persistedField = + if ( + property.hasCompositeConverter() && + property.compositeConverter is CpgCompositeConverter + ) { + (property.compositeConverter as CpgCompositeConverter).graphSchema + } else { + listOf>( + Pair(property.field.type.simpleName, property.name) + ) + } + + if (property.field.declaringClass == entity.underlyingClass) { + inherentProperties + .computeIfAbsent(name) { mutableSetOf() } + .addAll(persistedField) + } else { + inheritedProperties + .computeIfAbsent(name) { mutableSetOf() } + .addAll(persistedField) + } } } @@ -261,7 +295,7 @@ class Schema { if (inherentRels.isNotEmpty() && inheritedRels.isNotEmpty()) { out.println("### Relationships") - noLabelDups(inherentRels[entityLabel])?.forEach { + removeLabelDuplicates(inherentRels[entityLabel])?.forEach { out.println( getBoxWithClass( "relationship", @@ -269,7 +303,7 @@ class Schema { ) ) } - noLabelDups(inheritedRels[entityLabel])?.forEach { + removeLabelDuplicates(inheritedRels[entityLabel])?.forEach { var inherited = it var current = classInfo var baseClass: ClassInfo? = null @@ -289,23 +323,40 @@ class Schema { ) } - noLabelDups(inherentRels[entityLabel])?.forEach { + removeLabelDuplicates(inherentRels[entityLabel])?.forEach { printRelationships(classInfo, it, out) } } + if (inherentProperties.isNotEmpty() && inheritedProperties.isNotEmpty()) { + out.println("### Properties") + + removeLabelDuplicates(inherentProperties[entityLabel])?.forEach { + out.println("${it.second} : ${it.first}") + out.println() + } + if (inheritedProperties[entityLabel]?.isNotEmpty() == true) { + out.println("
Inherited Properties") + removeLabelDuplicates(inheritedProperties[entityLabel])?.forEach { + out.println("${it.second} : ${it.first}") + out.println() + } + out.println("
") + out.println() + } + } + hierarchy[classInfo]?.second?.forEach { printEntities(it, out) } } - private fun noLabelDups(list: Set>?): Set>? { + private fun removeLabelDuplicates( + list: Set>? + ): Set>? { if (list == null) return null return list .map { it.second } .distinct() - .map { - val label = it - list.first { it.second == label } - } + .map { label -> list.first { it.second == label } } .toSet() } From 08ee75849be3cd6b656e134122d202658dbd2805 Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Wed, 2 Aug 2023 11:05:10 +0200 Subject: [PATCH 08/17] Ban inherited fields and properties to detail boxes --- .../fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index 8493573a56..65a57f84ca 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -129,9 +129,9 @@ class Schema { // node in neo4j - entities.forEach { - val key = meta.schema.findNode(it.neo4jName()) - allRels[it.neo4jName() ?: it.underlyingClass.simpleName] = + entities.forEach { classInfo -> + val key = meta.schema.findNode(classInfo.neo4jName()) + allRels[classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName] = key.relationships().entries.map { Pair(it.key, it.value.type()) }.toSet() } @@ -188,8 +188,8 @@ class Schema { allRels.forEach { childrensRels[it.key] = it.value - .subtract(inheritedRels[it.key] ?: emptyList()) - .subtract(inherentRels[it.key] ?: emptyList()) + .subtract(inheritedRels[it.key] ?: emptySet()) + .subtract(inherentRels[it.key] ?: emptySet()) } println() } @@ -223,8 +223,10 @@ class Schema { it.neo4jName() ?: it.underlyingClass.simpleName, hierarchy[it] ?.second - ?.flatMap { - relCanHave[it.neo4jName() ?: it.underlyingClass.simpleName] ?: setOf() + ?.flatMap { classInfo -> + relCanHave[ + classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName] + ?: setOf() } ?.toSet() ?: setOf() @@ -244,10 +246,14 @@ class Schema { } } + /** + * Prints a section for every entity with a list of labels (e.g. superclasses), a list of + * relationships, a dropdown with inherited relationships, a list of properties and a dropdown + * with inherited properties. + * + * Generates links between the boxes. + */ private fun printEntities(classInfo: ClassInfo, out: PrintWriter) { - // TODO print a section for every entity. List of relationships not inherent. List of rel - // inherent with result node. try to get links into relationship and target. - // TODO subsection with inherent relationships. val entityLabel = toLabel(classInfo) out.println("## $entityLabel
") @@ -277,15 +283,13 @@ class Schema { hierarchy[classInfo]?.second?.let { if (it.isNotEmpty()) { - it.forEach { + it.forEach { classInfo -> out.print( getBoxWithClass( "child", - "[${toLabel(it)}](#${toAnchorLink("e"+toLabel(it))})" + "[${toLabel(classInfo)}](#${toAnchorLink("e"+toLabel(classInfo))})" ) ) - // out.println("click ${toLabel(it)} href - // \"#${toAnchorLink(toLabel(it))}\"") } out.println() } @@ -303,24 +307,30 @@ class Schema { ) ) } - removeLabelDuplicates(inheritedRels[entityLabel])?.forEach { - var inherited = it - var current = classInfo - var baseClass: ClassInfo? = null - while (baseClass == null) { - inherentRels[toLabel(current)]?.let { - if (it.any { it.second.equals(inherited.second) }) { - baseClass = current + + if (inheritedRels[entityLabel]?.isNotEmpty() == true) { + out.println("
Inherited Relationships") + out.println() + removeLabelDuplicates(inheritedRels[entityLabel])?.forEach { inherited -> + var current = classInfo + var baseClass: ClassInfo? = null + while (baseClass == null) { + inherentRels[toLabel(current)]?.let { rels -> + if (rels.any { it.second == inherited.second }) { + baseClass = current + } } + hierarchy[current]?.first?.let { current = it } } - hierarchy[current]?.first?.let { current = it } - } - out.println( - getBoxWithClass( - "inherited-relationship", - "[${it.second}](#${toConcatName(toLabel(baseClass)+it.second)})" + out.println( + getBoxWithClass( + "inherited-relationship", + "[${inherited.second}](#${toConcatName(toLabel(baseClass) + inherited.second)})" + ) ) - ) + } + out.println("
") + out.println() } removeLabelDuplicates(inherentRels[entityLabel])?.forEach { @@ -402,7 +412,7 @@ class Schema { .filterIsInstance() .map { it.rawType } val baseClass: Type? = getNestedBaseType(type) - var multiplicity = getNestedMultiplicity(type) + val multiplicity = getNestedMultiplicity(type) var targetClassInfo: ClassInfo? = null if (baseClass != null) { @@ -426,12 +436,12 @@ class Schema { private fun getNestedMultiplicity(type: Type): Boolean { if (type is ParameterizedType) { - if ( + return if ( type.rawType.typeName.substringBeforeLast(".") == "java.util" ) { // listOf(List::class).contains(type.rawType) - return true + true } else { - return type.actualTypeArguments.any { getNestedMultiplicity(it) } + type.actualTypeArguments.any { getNestedMultiplicity(it) } } } return false From 57177ebaced535d6e919bf450c47aff75828eac6 Mon Sep 17 00:00:00 2001 From: Konrad Weiss Date: Tue, 12 Sep 2023 16:10:11 +0200 Subject: [PATCH 09/17] Removing newlines in output to have all relationships share lines --- .../src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index 65a57f84ca..3cce89a52d 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -300,7 +300,7 @@ class Schema { out.println("### Relationships") removeLabelDuplicates(inherentRels[entityLabel])?.forEach { - out.println( + out.print( getBoxWithClass( "relationship", "[${it.second}](#${ toLabel(classInfo) + it.second})" From 007800fcdb5b45c0114c3d70e0fd343857cad95b Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Fri, 26 Jan 2024 12:24:29 +0100 Subject: [PATCH 10/17] Remove github ci part --- .github/workflows/build.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4554f82c9..3dbf75e370 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -129,17 +129,6 @@ jobs: with: name: reports path: reports.zip - - name: Generate graph schema - if: github.ref == 'refs/heads/main' - run: | - mkdir cpg-neo4j/build/schema - ./gradlew :cpg-neo4j:run --args="--schema ./build/schema/graph.md" - - name: Publish graph schema (main) - if: github.ref == 'refs/heads/main' - uses: JamesIves/github-pages-deploy-action@v4 - with: - folder: cpg-neo4j/build/schema - target-folder: CPG/specs - name: Publish to Maven Central if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, 'beta') && !contains(github.ref, 'alpha') run: | From db6924caa4889c0c0af0cd62cb8f2faf46e5284b Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Tue, 30 Jan 2024 10:43:25 +0100 Subject: [PATCH 11/17] Updated generated documentation --- docs/docs/CPG/specs/graph.md | 7110 ++++++++++++++++----- docs/docs/CPG/specs/schema.md | 10952 -------------------------------- 2 files changed, 5443 insertions(+), 12619 deletions(-) delete mode 100644 docs/docs/CPG/specs/schema.md diff --git a/docs/docs/CPG/specs/graph.md b/docs/docs/CPG/specs/graph.md index 7e594aad52..f05b76461e 100644 --- a/docs/docs/CPG/specs/graph.md +++ b/docs/docs/CPG/specs/graph.md @@ -12,29 +12,30 @@ This file shows all node labels and relationships between them that are persiste [Annotation](#eannotation) ### Relationships -[DFG](#NodeDFG) - [EOG](#NodeEOG) - +[CDG](#NodeCDG) +[DFG](#NodeDFG) [ANNOTATIONS](#NodeANNOTATIONS) - +[PDG](#NodePDG) [AST](#NodeAST) - [SCOPE](#NodeSCOPE) - -[TYPEDEFS](#NodeTYPEDEFS) - -#### DFG +#### EOG ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"DFG*"-->NodeDFG[Node]:::outer +Node--"EOG*"-->NodeEOG[Node]:::outer ``` -#### EOG +#### CDG ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"EOG*"-->NodeEOG[Node]:::outer +Node--"CDG*"-->NodeCDG[Node]:::outer +``` +#### DFG +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +Node--"DFG*"-->NodeDFG[Node]:::outer ``` #### ANNOTATIONS ```mermaid @@ -42,24 +43,55 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; Node--"ANNOTATIONS*"-->NodeANNOTATIONS[Annotation]:::outer ``` -#### AST +#### PDG ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"AST*"-->NodeAST[Node]:::outer +Node--"PDG*"-->NodePDG[Node]:::outer ``` -#### SCOPE +#### AST ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer +Node--"AST*"-->NodeAST[Node]:::outer ``` -#### TYPEDEFS +#### SCOPE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclaration]:::outer +Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer ``` +### Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + ## Statement **Labels**:[Node](#enode) [Statement](#estatement) @@ -67,17 +99,15 @@ Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclarati ### Children [AssertStatement](#eassertstatement) [DoStatement](#edostatement) +[Expression](#eexpression) [CaseStatement](#ecasestatement) [ReturnStatement](#ereturnstatement) -[Expression](#eexpression) [IfStatement](#eifstatement) -[DeclarationStatement](#edeclarationstatement) [ForStatement](#eforstatement) [CatchClause](#ecatchclause) [SwitchStatement](#eswitchstatement) [GotoStatement](#egotostatement) [WhileStatement](#ewhilestatement) -[BlockStatement](#ecompoundstatement) [ContinueStatement](#econtinuestatement) [DefaultStatement](#edefaultstatement) [SynchronizedStatement](#esynchronizedstatement) @@ -85,22 +115,28 @@ Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclarati [ForEachStatement](#eforeachstatement) [LabelStatement](#elabelstatement) [BreakStatement](#ebreakstatement) +[DeclarationStatement](#edeclarationstatement) [EmptyStatement](#eemptystatement) ### Relationships [LOCALS](#StatementLOCALS) - -[DFG](#NodeDFG) +
Inherited Relationships [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
#### LOCALS
```mermaid @@ -108,42 +144,114 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; Statement--"LOCALS*"-->StatementLOCALS[VariableDeclaration]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ ## AssertStatement **Labels**:[Node](#enode) [Statement](#estatement) [AssertStatement](#eassertstatement) ### Relationships -[CONDITION](#AssertStatementCONDITION) - [MESSAGE](#AssertStatementMESSAGE) +[CONDITION](#AssertStatementCONDITION) +
Inherited Relationships [LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CONDITION +#### MESSAGE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer +AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer ``` -#### MESSAGE +#### CONDITION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer +AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ ## DoStatement **Labels**:[Node](#enode) [Statement](#estatement) @@ -151,22 +259,26 @@ AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Stat ### Relationships [CONDITION](#DoStatementCONDITION) - [STATEMENT](#DoStatementSTATEMENT) +
Inherited Relationships [LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
#### CONDITION
```mermaid @@ -180,2913 +292,6248 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; DoStatement--"STATEMENT¹"-->DoStatementSTATEMENT[Statement]:::outer ``` -## CaseStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[CaseStatement](#ecasestatement) - -### Relationships -[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION) +### Properties +
Inherited Properties +code : String -[LOCALS](#StatementLOCALS) - -[DFG](#NodeDFG) +argumentIndex : int -[EOG](#NodeEOG) +file : String -[ANNOTATIONS](#NodeANNOTATIONS) +isImplicit : boolean -[AST](#NodeAST) +fullName : String -[SCOPE](#NodeSCOPE) +localName : String -[TYPEDEFS](#NodeTYPEDEFS) +name : String -#### CASE_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer -``` -## ReturnStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[ReturnStatement](#ereturnstatement) +nameDelimiter : String -### Relationships -[RETURN_VALUES](#ReturnStatementRETURN_VALUES) +comment : String -[LOCALS](#StatementLOCALS) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-#### RETURN_VALUES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer -``` ## Expression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) ### Children +[RangeExpression](#erangeexpression) [NewExpression](#enewexpression) [LambdaExpression](#elambdaexpression) [UnaryOperator](#eunaryoperator) -[ArrayRangeExpression](#earrayrangeexpression) +[Block](#eblock) [CallExpression](#ecallexpression) -[DesignatedInitializerExpression](#edesignatedinitializerexpression) +[NewArrayExpression](#enewarrayexpression) [KeyValueExpression](#ekeyvalueexpression) [AssignExpression](#eassignexpression) [CastExpression](#ecastexpression) -[NewArrayExpression](#earraycreationexpression) -[SubscriptionExpression](#earraysubscriptionexpression) [TypeExpression](#etypeexpression) +[Reference](#ereference) [BinaryOperator](#ebinaryoperator) [ConditionalExpression](#econditionalexpression) -[Reference](#edeclaredreferenceexpression) [InitializerListExpression](#einitializerlistexpression) [DeleteExpression](#edeleteexpression) -[BlockStatementExpression](#ecompoundstatementexpression) +[SubscriptExpression](#esubscriptexpression) [ProblemExpression](#eproblemexpression) [Literal](#eliteral) [TypeIdExpression](#etypeidexpression) [ExpressionList](#eexpressionlist) ### Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) - [TYPE](#ExpressionTYPE) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) +
Inherited Relationships [LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### POSSIBLE_SUB_TYPES +#### TYPE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Expression--"POSSIBLE_SUB_TYPES*"-->ExpressionPOSSIBLE_SUB_TYPES[Type]:::outer +Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer ``` -#### TYPE +#### ASSIGNED_TYPES ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer +Expression--"ASSIGNED_TYPES*"-->ExpressionASSIGNED_TYPES[Type]:::outer ``` -## NewExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[NewExpression](#enewexpression) +### Properties +
Inherited Properties +code : String -### Relationships -[INITIALIZER](#NewExpressionINITIALIZER) +argumentIndex : int -[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS) +file : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +isImplicit : boolean -[TYPE](#ExpressionTYPE) +fullName : String -[LOCALS](#StatementLOCALS) +localName : String -[DFG](#NodeDFG) +name : String -[EOG](#NodeEOG) +nameDelimiter : String -[ANNOTATIONS](#NodeANNOTATIONS) +comment : String -[AST](#NodeAST) +artifact : String -[SCOPE](#NodeSCOPE) +startLine : int -[TYPEDEFS](#NodeTYPEDEFS) +endLine : int -#### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer -``` -#### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer -``` -## LambdaExpression +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## RangeExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[LambdaExpression](#elambdaexpression) +[RangeExpression](#erangeexpression) ### Relationships -[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES) - -[FUNCTION](#LambdaExpressionFUNCTION) - -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[CEILING](#RangeExpressionCEILING) +[THIRD](#RangeExpressionTHIRD) +[FLOOR](#RangeExpressionFLOOR) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### MUTABLE_VARIABLES +#### CEILING ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer +RangeExpression--"CEILING¹"-->RangeExpressionCEILING[Expression]:::outer ``` -#### FUNCTION +#### THIRD ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer +RangeExpression--"THIRD¹"-->RangeExpressionTHIRD[Expression]:::outer ``` -## UnaryOperator -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[UnaryOperator](#eunaryoperator) +#### FLOOR +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RangeExpression--"FLOOR¹"-->RangeExpressionFLOOR[Expression]:::outer +``` +### Properties +operatorCode : String -### Relationships -[INPUT](#UnaryOperatorINPUT) +
Inherited Properties +code : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +argumentIndex : int -[TYPE](#ExpressionTYPE) +file : String -[LOCALS](#StatementLOCALS) +isImplicit : boolean -[DFG](#NodeDFG) +fullName : String -[EOG](#NodeEOG) +localName : String -[ANNOTATIONS](#NodeANNOTATIONS) +name : String -[AST](#NodeAST) +nameDelimiter : String -[SCOPE](#NodeSCOPE) +comment : String -[TYPEDEFS](#NodeTYPEDEFS) +artifact : String -#### INPUT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer -``` -## ArrayRangeExpression +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## NewExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[ArrayRangeExpression](#earrayrangeexpression) +[NewExpression](#enewexpression) ### Relationships -[CEILING](#ArrayRangeExpressionCEILING) +[INITIALIZER](#NewExpressionINITIALIZER) +[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS) +
Inherited Relationships -[STEP](#ArrayRangeExpressionSTEP) +[TYPE](#ExpressionTYPE) -[FLOOR](#ArrayRangeExpressionFLOOR) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[LOCALS](#StatementLOCALS) -[TYPE](#ExpressionTYPE) +[EOG](#NodeEOG) -[LOCALS](#StatementLOCALS) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CEILING -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"CEILING¹"-->ArrayRangeExpressionCEILING[Expression]:::outer -``` -#### STEP +#### INITIALIZER ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"STEP¹"-->ArrayRangeExpressionSTEP[Expression]:::outer +NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer ``` -#### FLOOR +#### TEMPLATE_PARAMETERS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"FLOOR¹"-->ArrayRangeExpressionFLOOR[Expression]:::outer +NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer ``` -## CallExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[CallExpression](#ecallexpression) +### Properties +
Inherited Properties +code : String -### Children -[ConstructorCallExpression](#eexplicitconstructorinvocation) -[ConstructExpression](#econstructexpression) -[MemberCallExpression](#emembercallexpression) +argumentIndex : int -### Relationships -[CALLEE](#CallExpressionCALLEE) +file : String -[INVOKES](#CallExpressionINVOKES) +isImplicit : boolean -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) +fullName : String -[ARGUMENTS](#CallExpressionARGUMENTS) +localName : String -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) +name : String + +nameDelimiter : String + +comment : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## LambdaExpression +**Labels**:[Node](#enode) +[Statement](#estatement) +[Expression](#eexpression) +[LambdaExpression](#elambdaexpression) + +### Relationships +[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES) +[FUNCTION](#LambdaExpressionFUNCTION) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CALLEE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer -``` -#### INVOKES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer -``` -#### TEMPLATE_INSTANTIATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer -``` -#### ARGUMENTS +#### MUTABLE_VARIABLES ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer +LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer ``` -#### TEMPLATE_PARAMETERS +#### FUNCTION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer +LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer ``` -## ConstructorCallExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[CallExpression](#ecallexpression) -[ConstructorCallExpression](#eexplicitconstructorinvocation) +### Properties +areVariablesMutable : boolean -### Relationships -[CALLEE](#CallExpressionCALLEE) +
Inherited Properties +code : String -[INVOKES](#CallExpressionINVOKES) +argumentIndex : int -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) +file : String -[ARGUMENTS](#CallExpressionARGUMENTS) +isImplicit : boolean -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) +fullName : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +localName : String -[TYPE](#ExpressionTYPE) +name : String -[LOCALS](#StatementLOCALS) +nameDelimiter : String -[DFG](#NodeDFG) +comment : String -[EOG](#NodeEOG) +artifact : String -[ANNOTATIONS](#NodeANNOTATIONS) +startLine : int -[AST](#NodeAST) +endLine : int -[SCOPE](#NodeSCOPE) +startColumn : int -[TYPEDEFS](#NodeTYPEDEFS) +endColumn : int -## ConstructExpression +isInferred : boolean + +
+ +## UnaryOperator **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[CallExpression](#ecallexpression) -[ConstructExpression](#econstructexpression) +[UnaryOperator](#eunaryoperator) ### Relationships -[INSTANTIATES](#ConstructExpressionINSTANTIATES) - -[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR) - -[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS) - -[CALLEE](#CallExpressionCALLEE) - -[INVOKES](#CallExpressionINVOKES) - -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) +[INPUT](#UnaryOperatorINPUT) +
Inherited Relationships -[ARGUMENTS](#CallExpressionARGUMENTS) +[TYPE](#ExpressionTYPE) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[LOCALS](#StatementLOCALS) -[TYPE](#ExpressionTYPE) +[EOG](#NodeEOG) -[LOCALS](#StatementLOCALS) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### INSTANTIATES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer -``` -#### CONSTRUCTOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer -``` -#### ANOYMOUS_CLASS +#### INPUT ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer +UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer ``` -## MemberCallExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[CallExpression](#ecallexpression) -[MemberCallExpression](#emembercallexpression) +### Properties +operatorCode : String -### Relationships -[CALLEE](#CallExpressionCALLEE) +isPostfix : boolean -[INVOKES](#CallExpressionINVOKES) +isPrefix : boolean -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) +
Inherited Properties +code : String -[ARGUMENTS](#CallExpressionARGUMENTS) +argumentIndex : int -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) +file : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +isImplicit : boolean -[TYPE](#ExpressionTYPE) +fullName : String -[LOCALS](#StatementLOCALS) +localName : String -[DFG](#NodeDFG) +name : String -[EOG](#NodeEOG) +nameDelimiter : String -[ANNOTATIONS](#NodeANNOTATIONS) +comment : String -[AST](#NodeAST) +artifact : String -[SCOPE](#NodeSCOPE) +startLine : int + +endLine : int + +startColumn : int -[TYPEDEFS](#NodeTYPEDEFS) +endColumn : int -## DesignatedInitializerExpression +isInferred : boolean + +
+ +## Block **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[DesignatedInitializerExpression](#edesignatedinitializerexpression) - -### Relationships -[LHS](#DesignatedInitializerExpressionLHS) +[Block](#eblock) -[RHS](#DesignatedInitializerExpressionRHS) +### Children +[DistinctLanguageBlock](#edistinctlanguageblock) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +### Relationships +[STATEMENTS](#BlockSTATEMENTS) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DesignatedInitializerExpression--"LHS*"-->DesignatedInitializerExpressionLHS[Expression]:::outer -``` -#### RHS +#### STATEMENTS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DesignatedInitializerExpression--"RHS¹"-->DesignatedInitializerExpressionRHS[Expression]:::outer +Block--"STATEMENTS*"-->BlockSTATEMENTS[Statement]:::outer ``` -## KeyValueExpression +### Properties +isStaticBlock : boolean + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## DistinctLanguageBlock **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[KeyValueExpression](#ekeyvalueexpression) +[Block](#eblock) +[DistinctLanguageBlock](#edistinctlanguageblock) ### Relationships -[VALUE](#KeyValueExpressionVALUE) - -[KEY](#KeyValueExpressionKEY) +
Inherited Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[STATEMENTS](#BlockSTATEMENTS) [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### VALUE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer -``` -#### KEY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer -``` -## AssignExpression +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +isStaticBlock : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## CallExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[AssignExpression](#eassignexpression) +[CallExpression](#ecallexpression) + +### Children +[ConstructExpression](#econstructexpression) +[MemberCallExpression](#emembercallexpression) ### Relationships -[DECLARATIONS](#AssignExpressionDECLARATIONS) +[CALLEE](#CallExpressionCALLEE) +[INVOKES](#CallExpressionINVOKES) +[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) +[ARGUMENTS](#CallExpressionARGUMENTS) +[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) +
Inherited Relationships -[LHS](#AssignExpressionLHS) +[TYPE](#ExpressionTYPE) -[RHS](#AssignExpressionRHS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[LOCALS](#StatementLOCALS) -[TYPE](#ExpressionTYPE) +[EOG](#NodeEOG) -[LOCALS](#StatementLOCALS) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### DECLARATIONS +#### CALLEE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer +CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer ``` -#### LHS +#### INVOKES ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer +CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer ``` -#### RHS +#### TEMPLATE_INSTANTIATION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer +CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer ``` -## CastExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[CastExpression](#ecastexpression) +#### ARGUMENTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer +``` +#### TEMPLATE_PARAMETERS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer +``` +### Properties +template : boolean -### Relationships -[CAST_TYPE](#CastExpressionCAST_TYPE) +
Inherited Properties +code : String -[EXPRESSION](#CastExpressionEXPRESSION) +argumentIndex : int -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +file : String -[TYPE](#ExpressionTYPE) +isImplicit : boolean -[LOCALS](#StatementLOCALS) +fullName : String -[DFG](#NodeDFG) +localName : String -[EOG](#NodeEOG) +name : String -[ANNOTATIONS](#NodeANNOTATIONS) +nameDelimiter : String -[AST](#NodeAST) +comment : String -[SCOPE](#NodeSCOPE) +artifact : String -[TYPEDEFS](#NodeTYPEDEFS) +startLine : int -#### CAST_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer -``` -#### EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer -``` -## NewArrayExpression +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ConstructExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[NewArrayExpression](#earraycreationexpression) +[CallExpression](#ecallexpression) +[ConstructExpression](#econstructexpression) ### Relationships -[INITIALIZER](#NewArrayExpressionINITIALIZER) +[INSTANTIATES](#ConstructExpressionINSTANTIATES) +[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR) +[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS) +
Inherited Relationships -[DIMENSIONS](#NewArrayExpressionDIMENSIONS) +[CALLEE](#CallExpressionCALLEE) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[INVOKES](#CallExpressionINVOKES) + +[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) + +[ARGUMENTS](#CallExpressionARGUMENTS) + +[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### INITIALIZER +#### INSTANTIATES ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewArrayExpression--"INITIALIZER¹"-->NewArrayExpressionINITIALIZER[Expression]:::outer +ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer ``` -#### DIMENSIONS +#### CONSTRUCTOR ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewArrayExpression--"DIMENSIONS*"-->NewArrayExpressionDIMENSIONS[Expression]:::outer +ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer ``` -## SubscriptionExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[SubscriptionExpression](#earraysubscriptionexpression) +#### ANOYMOUS_CLASS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer +``` +### Properties +
Inherited Properties +template : boolean -### Relationships -[ARRAY_EXPRESSION](#SubscriptionExpressionARRAY_EXPRESSION) +code : String -[SUBSCRIPT_EXPRESSION](#SubscriptionExpressionSUBSCRIPT_EXPRESSION) +file : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +isInferred : boolean -[TYPE](#ExpressionTYPE) +argumentIndex : int -[LOCALS](#StatementLOCALS) +isImplicit : boolean -[DFG](#NodeDFG) +fullName : String -[EOG](#NodeEOG) +localName : String -[ANNOTATIONS](#NodeANNOTATIONS) +name : String -[AST](#NodeAST) +nameDelimiter : String -[SCOPE](#NodeSCOPE) +comment : String -[TYPEDEFS](#NodeTYPEDEFS) +artifact : String -#### ARRAY_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SubscriptionExpression--"ARRAY_EXPRESSION¹"-->SubscriptionExpressionARRAY_EXPRESSION[Expression]:::outer -``` -#### SUBSCRIPT_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SubscriptionExpression--"SUBSCRIPT_EXPRESSION¹"-->SubscriptionExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer -``` -## TypeExpression +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +
+ +## MemberCallExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[TypeExpression](#etypeexpression) +[CallExpression](#ecallexpression) +[MemberCallExpression](#emembercallexpression) ### Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +
Inherited Relationships + +[CALLEE](#CallExpressionCALLEE) + +[INVOKES](#CallExpressionINVOKES) + +[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) + +[ARGUMENTS](#CallExpressionARGUMENTS) + +[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-## BinaryOperator +### Properties +isStatic : boolean + +
Inherited Properties +template : boolean + +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## NewArrayExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[BinaryOperator](#ebinaryoperator) +[NewArrayExpression](#enewarrayexpression) ### Relationships -[LHS](#BinaryOperatorLHS) - -[RHS](#BinaryOperatorRHS) - -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[INITIALIZER](#NewArrayExpressionINITIALIZER) +[DIMENSIONS](#NewArrayExpressionDIMENSIONS) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### LHS +#### INITIALIZER ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer +NewArrayExpression--"INITIALIZER¹"-->NewArrayExpressionINITIALIZER[Expression]:::outer ``` -#### RHS +#### DIMENSIONS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer +NewArrayExpression--"DIMENSIONS*"-->NewArrayExpressionDIMENSIONS[Expression]:::outer ``` -## ConditionalExpression +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## KeyValueExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[ConditionalExpression](#econditionalexpression) +[KeyValueExpression](#ekeyvalueexpression) ### Relationships -[ELSE_EXPR](#ConditionalExpressionELSE_EXPR) +[VALUE](#KeyValueExpressionVALUE) +[KEY](#KeyValueExpressionKEY) +
Inherited Relationships -[THEN_EXPR](#ConditionalExpressionTHEN_EXPR) +[TYPE](#ExpressionTYPE) -[CONDITION](#ConditionalExpressionCONDITION) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[LOCALS](#StatementLOCALS) -[TYPE](#ExpressionTYPE) +[EOG](#NodeEOG) -[LOCALS](#StatementLOCALS) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### ELSE_EXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"ELSE_EXPR¹"-->ConditionalExpressionELSE_EXPR[Expression]:::outer -``` -#### THEN_EXPR +#### VALUE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"THEN_EXPR¹"-->ConditionalExpressionTHEN_EXPR[Expression]:::outer +KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer ``` -#### CONDITION +#### KEY ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer +KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer ``` -## Reference -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[Reference](#edeclaredreferenceexpression) +### Properties +
Inherited Properties +code : String -### Children -[MemberExpression](#ememberexpression) +argumentIndex : int -### Relationships -[REFERS_TO](#ReferenceREFERS_TO) +file : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +isImplicit : boolean -[TYPE](#ExpressionTYPE) +fullName : String -[LOCALS](#StatementLOCALS) +localName : String -[DFG](#NodeDFG) +name : String -[EOG](#NodeEOG) +nameDelimiter : String -[ANNOTATIONS](#NodeANNOTATIONS) +comment : String -[AST](#NodeAST) +artifact : String -[SCOPE](#NodeSCOPE) +startLine : int -[TYPEDEFS](#NodeTYPEDEFS) +endLine : int -#### REFERS_TO -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Reference--"REFERS_TO¹"-->ReferenceREFERS_TO[Declaration]:::outer -``` -## MemberExpression +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## AssignExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[Reference](#edeclaredreferenceexpression) -[MemberExpression](#ememberexpression) +[AssignExpression](#eassignexpression) ### Relationships -[BASE](#MemberExpressionBASE) - -[REFERS_TO](#ReferenceREFERS_TO) - -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[DECLARATIONS](#AssignExpressionDECLARATIONS) +[LHS](#AssignExpressionLHS) +[RHS](#AssignExpressionRHS) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### BASE +#### DECLARATIONS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer +AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer ``` -## InitializerListExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[InitializerListExpression](#einitializerlistexpression) - -### Relationships -[INITIALIZERS](#InitializerListExpressionINITIALIZERS) - -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) - -[TYPE](#ExpressionTYPE) - -[LOCALS](#StatementLOCALS) +#### LHS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer +``` +#### RHS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer +``` +### Properties +usedAsExpression : boolean -[DFG](#NodeDFG) +operatorCode : String -[EOG](#NodeEOG) +
Inherited Properties +code : String -[ANNOTATIONS](#NodeANNOTATIONS) +argumentIndex : int -[AST](#NodeAST) +file : String -[SCOPE](#NodeSCOPE) +isImplicit : boolean -[TYPEDEFS](#NodeTYPEDEFS) +fullName : String -#### INITIALIZERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer -``` -## DeleteExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[DeleteExpression](#edeleteexpression) +localName : String -### Relationships -[OPERAND](#DeleteExpressionOPERAND) +name : String -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +nameDelimiter : String -[TYPE](#ExpressionTYPE) +comment : String -[LOCALS](#StatementLOCALS) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-#### OPERAND -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer -``` -## BlockStatementExpression +## CastExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[BlockStatementExpression](#ecompoundstatementexpression) +[CastExpression](#ecastexpression) ### Relationships -[STATEMENT](#BlockStatementExpressionSTATEMENT) - -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +[CAST_TYPE](#CastExpressionCAST_TYPE) +[EXPRESSION](#CastExpressionEXPRESSION) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### STATEMENT +#### CAST_TYPE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BlockStatementExpression--"STATEMENT¹"-->BlockStatementExpressionSTATEMENT[Statement]:::outer +CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer ``` -## ProblemExpression -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[ProblemExpression](#eproblemexpression) - -### Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) - -[TYPE](#ExpressionTYPE) - -[LOCALS](#StatementLOCALS) - -[DFG](#NodeDFG) +#### EXPRESSION +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer +``` +### Properties +
Inherited Properties +code : String -[EOG](#NodeEOG) +argumentIndex : int -[ANNOTATIONS](#NodeANNOTATIONS) +file : String -[AST](#NodeAST) +isImplicit : boolean -[SCOPE](#NodeSCOPE) +fullName : String -[TYPEDEFS](#NodeTYPEDEFS) +localName : String -## Literal -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[Literal](#eliteral) +name : String -### Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +nameDelimiter : String -[TYPE](#ExpressionTYPE) +comment : String -[LOCALS](#StatementLOCALS) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-## TypeIdExpression +## TypeExpression **Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -[TypeIdExpression](#etypeidexpression) +[TypeExpression](#etypeexpression) ### Relationships -[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE) - -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +
Inherited Relationships [TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### REFERENCED_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer -``` -## ExpressionList -**Labels**:[Node](#enode) -[Statement](#estatement) -[Expression](#eexpression) -[ExpressionList](#eexpressionlist) +### Properties +
Inherited Properties +code : String -### Relationships -[SUBEXPR](#ExpressionListSUBEXPR) +argumentIndex : int -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) +file : String -[TYPE](#ExpressionTYPE) +isImplicit : boolean -[LOCALS](#StatementLOCALS) +fullName : String -[DFG](#NodeDFG) +localName : String -[EOG](#NodeEOG) +name : String -[ANNOTATIONS](#NodeANNOTATIONS) +nameDelimiter : String -[AST](#NodeAST) +comment : String -[SCOPE](#NodeSCOPE) +artifact : String -[TYPEDEFS](#NodeTYPEDEFS) +startLine : int -#### SUBEXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer -``` -## IfStatement +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## Reference **Labels**:[Node](#enode) [Statement](#estatement) -[IfStatement](#eifstatement) +[Expression](#eexpression) +[Reference](#ereference) + +### Children +[MemberExpression](#ememberexpression) ### Relationships -[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION) +[REFERS_TO](#ReferenceREFERS_TO) +[ALIASES](#ReferenceALIASES) +[RESOLUTION_HELPER](#ReferenceRESOLUTION_HELPER) +
Inherited Relationships -[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT) +[TYPE](#ExpressionTYPE) -[THEN_STATEMENT](#IfStatementTHEN_STATEMENT) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[CONDITION](#IfStatementCONDITION) +[LOCALS](#StatementLOCALS) -[ELSE_STATEMENT](#IfStatementELSE_STATEMENT) +[EOG](#NodeEOG) -[LOCALS](#StatementLOCALS) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer -``` -#### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -#### THEN_STATEMENT +#### REFERS_TO ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer +Reference--"REFERS_TO¹"-->ReferenceREFERS_TO[Declaration]:::outer ``` -#### CONDITION +#### ALIASES ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer +Reference--"ALIASES*"-->ReferenceALIASES[Node]:::outer ``` -#### ELSE_STATEMENT +#### RESOLUTION_HELPER ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer +Reference--"RESOLUTION_HELPER¹"-->ReferenceRESOLUTION_HELPER[Node]:::outer ``` -## DeclarationStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[DeclarationStatement](#edeclarationstatement) - -### Children -[ASMDeclarationStatement](#easmdeclarationstatement) +### Properties +access : AccessValues -### Relationships -[DECLARATIONS](#DeclarationStatementDECLARATIONS) +isStaticAccess : boolean -[LOCALS](#StatementLOCALS) +
Inherited Properties +code : String -[DFG](#NodeDFG) +argumentIndex : int -[EOG](#NodeEOG) +file : String -[ANNOTATIONS](#NodeANNOTATIONS) +isImplicit : boolean -[AST](#NodeAST) +fullName : String -[SCOPE](#NodeSCOPE) +localName : String -[TYPEDEFS](#NodeTYPEDEFS) +name : String -#### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer -``` -## ASMDeclarationStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[DeclarationStatement](#edeclarationstatement) -[ASMDeclarationStatement](#easmdeclarationstatement) +nameDelimiter : String -### Relationships -[DECLARATIONS](#DeclarationStatementDECLARATIONS) +comment : String -[LOCALS](#StatementLOCALS) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-## ForStatement +## MemberExpression **Labels**:[Node](#enode) [Statement](#estatement) -[ForStatement](#eforstatement) +[Expression](#eexpression) +[Reference](#ereference) +[MemberExpression](#ememberexpression) ### Relationships -[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION) +[BASE](#MemberExpressionBASE) +
Inherited Relationships -[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT) +[REFERS_TO](#ReferenceREFERS_TO) -[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT) +[ALIASES](#ReferenceALIASES) -[CONDITION](#ForStatementCONDITION) +[RESOLUTION_HELPER](#ReferenceRESOLUTION_HELPER) -[STATEMENT](#ForStatementSTATEMENT) +[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer -``` -#### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -#### ITERATION_STATEMENT +#### BASE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer +MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer ``` -#### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer -``` -#### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer -``` -## CatchClause +### Properties +operatorCode : String + +
Inherited Properties +access : AccessValues + +code : String + +isStaticAccess : boolean + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## BinaryOperator **Labels**:[Node](#enode) [Statement](#estatement) -[CatchClause](#ecatchclause) +[Expression](#eexpression) +[BinaryOperator](#ebinaryoperator) + +### Children +[ShortCircuitOperator](#eshortcircuitoperator) ### Relationships -[PARAMETER](#CatchClausePARAMETER) +[LHS](#BinaryOperatorLHS) +[RHS](#BinaryOperatorRHS) +
Inherited Relationships -[BODY](#CatchClauseBODY) +[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### PARAMETER +#### LHS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer +BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer ``` -#### BODY +#### RHS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CatchClause--"BODY¹"-->CatchClauseBODY[BlockStatement]:::outer +BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer ``` -## SwitchStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[SwitchStatement](#eswitchstatement) +### Properties +operatorCode : String -### Relationships -[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT) +
Inherited Properties +code : String -[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION) +argumentIndex : int -[STATEMENT](#SwitchStatementSTATEMENT) +file : String -[SELECTOR](#SwitchStatementSELECTOR) +isImplicit : boolean -[LOCALS](#StatementLOCALS) +fullName : String -[DFG](#NodeDFG) +localName : String -[EOG](#NodeEOG) +name : String -[ANNOTATIONS](#NodeANNOTATIONS) +nameDelimiter : String -[AST](#NodeAST) +comment : String -[SCOPE](#NodeSCOPE) +artifact : String -[TYPEDEFS](#NodeTYPEDEFS) +startLine : int -#### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -#### SELECTOR_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer -``` -#### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer -``` -#### SELECTOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer -``` -## GotoStatement +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ShortCircuitOperator **Labels**:[Node](#enode) [Statement](#estatement) -[GotoStatement](#egotostatement) +[Expression](#eexpression) +[BinaryOperator](#ebinaryoperator) +[ShortCircuitOperator](#eshortcircuitoperator) ### Relationships -[TARGET_LABEL](#GotoStatementTARGET_LABEL) +
Inherited Relationships -[LOCALS](#StatementLOCALS) +[LHS](#BinaryOperatorLHS) -[DFG](#NodeDFG) +[RHS](#BinaryOperatorRHS) + +[TYPE](#ExpressionTYPE) + +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### TARGET_LABEL -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer -``` -## WhileStatement +### Properties +
Inherited Properties +code : String + +operatorCode : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ConditionalExpression **Labels**:[Node](#enode) [Statement](#estatement) -[WhileStatement](#ewhilestatement) +[Expression](#eexpression) +[ConditionalExpression](#econditionalexpression) ### Relationships -[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION) +[ELSE_EXPRESSION](#ConditionalExpressionELSE_EXPRESSION) +[CONDITION](#ConditionalExpressionCONDITION) +[THEN_EXPRESSION](#ConditionalExpressionTHEN_EXPRESSION) +
Inherited Relationships -[CONDITION](#WhileStatementCONDITION) +[TYPE](#ExpressionTYPE) -[STATEMENT](#WhileStatementSTATEMENT) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) [LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CONDITION_DECLARATION +#### ELSE_EXPRESSION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer +ConditionalExpression--"ELSE_EXPRESSION¹"-->ConditionalExpressionELSE_EXPRESSION[Expression]:::outer ``` -#### CONDITION +#### CONDITION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer +ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer ``` -#### STATEMENT +#### THEN_EXPRESSION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer +ConditionalExpression--"THEN_EXPRESSION¹"-->ConditionalExpressionTHEN_EXPRESSION[Expression]:::outer ``` -## BlockStatement +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## InitializerListExpression **Labels**:[Node](#enode) [Statement](#estatement) -[BlockStatement](#ecompoundstatement) +[Expression](#eexpression) +[InitializerListExpression](#einitializerlistexpression) ### Relationships -[STATEMENTS](#BlockStatementSTATEMENTS) +[INITIALIZERS](#InitializerListExpressionINITIALIZERS) +
Inherited Relationships -[LOCALS](#StatementLOCALS) +[TYPE](#ExpressionTYPE) -[DFG](#NodeDFG) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### STATEMENTS +#### INITIALIZERS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BlockStatement--"STATEMENTS*"-->BlockStatementSTATEMENTS[Statement]:::outer +InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer ``` -## ContinueStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[ContinueStatement](#econtinuestatement) +### Properties +
Inherited Properties +code : String -### Relationships -[LOCALS](#StatementLOCALS) +argumentIndex : int -[DFG](#NodeDFG) +file : String -[EOG](#NodeEOG) +isImplicit : boolean -[ANNOTATIONS](#NodeANNOTATIONS) +fullName : String -[AST](#NodeAST) +localName : String -[SCOPE](#NodeSCOPE) +name : String -[TYPEDEFS](#NodeTYPEDEFS) +nameDelimiter : String -## DefaultStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[DefaultStatement](#edefaultstatement) +comment : String -### Relationships -[LOCALS](#StatementLOCALS) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-## SynchronizedStatement +## DeleteExpression **Labels**:[Node](#enode) [Statement](#estatement) -[SynchronizedStatement](#esynchronizedstatement) +[Expression](#eexpression) +[DeleteExpression](#edeleteexpression) ### Relationships -[BLOCK_STATEMENT](#SynchronizedStatementBLOCK_STATEMENT) +[OPERAND](#DeleteExpressionOPERAND) +
Inherited Relationships -[EXPRESSION](#SynchronizedStatementEXPRESSION) +[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### BLOCK_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SynchronizedStatement--"BLOCK_STATEMENT¹"-->SynchronizedStatementBLOCK_STATEMENT[BlockStatement]:::outer -``` -#### EXPRESSION +#### OPERAND ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer +DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer ``` -## TryStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[TryStatement](#etrystatement) +### Properties +
Inherited Properties +code : String -### Relationships -[RESOURCES](#TryStatementRESOURCES) +argumentIndex : int -[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK) +file : String -[TRY_BLOCK](#TryStatementTRY_BLOCK) +isImplicit : boolean -[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES) +fullName : String -[LOCALS](#StatementLOCALS) +localName : String -[DFG](#NodeDFG) +name : String -[EOG](#NodeEOG) +nameDelimiter : String -[ANNOTATIONS](#NodeANNOTATIONS) +comment : String -[AST](#NodeAST) +artifact : String -[SCOPE](#NodeSCOPE) +startLine : int -[TYPEDEFS](#NodeTYPEDEFS) +endLine : int -#### RESOURCES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer -``` -#### FINALLY_BLOCK -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[BlockStatement]:::outer -``` -#### TRY_BLOCK -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[BlockStatement]:::outer -``` -#### CATCH_CLAUSES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer -``` -## ForEachStatement +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## SubscriptExpression **Labels**:[Node](#enode) [Statement](#estatement) -[ForEachStatement](#eforeachstatement) +[Expression](#eexpression) +[SubscriptExpression](#esubscriptexpression) ### Relationships -[STATEMENT](#ForEachStatementSTATEMENT) +[ARRAY_EXPRESSION](#SubscriptExpressionARRAY_EXPRESSION) +[SUBSCRIPT_EXPRESSION](#SubscriptExpressionSUBSCRIPT_EXPRESSION) +
Inherited Relationships -[VARIABLE](#ForEachStatementVARIABLE) +[TYPE](#ExpressionTYPE) -[ITERABLE](#ForEachStatementITERABLE) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) [LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer -``` -#### VARIABLE +#### ARRAY_EXPRESSION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer +SubscriptExpression--"ARRAY_EXPRESSION¹"-->SubscriptExpressionARRAY_EXPRESSION[Expression]:::outer ``` -#### ITERABLE +#### SUBSCRIPT_EXPRESSION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer +SubscriptExpression--"SUBSCRIPT_EXPRESSION¹"-->SubscriptExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer ``` -## LabelStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[LabelStatement](#elabelstatement) +### Properties +
Inherited Properties +code : String -### Relationships -[SUB_STATEMENT](#LabelStatementSUB_STATEMENT) +argumentIndex : int -[LOCALS](#StatementLOCALS) +file : String -[DFG](#NodeDFG) +isImplicit : boolean -[EOG](#NodeEOG) +fullName : String -[ANNOTATIONS](#NodeANNOTATIONS) +localName : String -[AST](#NodeAST) +name : String -[SCOPE](#NodeSCOPE) +nameDelimiter : String -[TYPEDEFS](#NodeTYPEDEFS) +comment : String -#### SUB_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer -``` -## BreakStatement +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ProblemExpression **Labels**:[Node](#enode) [Statement](#estatement) -[BreakStatement](#ebreakstatement) +[Expression](#eexpression) +[ProblemExpression](#eproblemexpression) ### Relationships -[LOCALS](#StatementLOCALS) +
Inherited Relationships -[DFG](#NodeDFG) +[TYPE](#ExpressionTYPE) + +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-## EmptyStatement -**Labels**:[Node](#enode) -[Statement](#estatement) -[EmptyStatement](#eemptystatement) +### Properties +problem : String -### Relationships -[LOCALS](#StatementLOCALS) +problemType : ProblemType -[DFG](#NodeDFG) +
Inherited Properties +code : String -[EOG](#NodeEOG) +argumentIndex : int -[ANNOTATIONS](#NodeANNOTATIONS) +file : String -[AST](#NodeAST) +isImplicit : boolean -[SCOPE](#NodeSCOPE) +fullName : String -[TYPEDEFS](#NodeTYPEDEFS) +localName : String -## Declaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) +name : String -### Children -[ValueDeclaration](#evaluedeclaration) -[TemplateDeclaration](#etemplatedeclaration) -[EnumDeclaration](#eenumdeclaration) -[TypedefDeclaration](#etypedefdeclaration) -[UsingDirective](#eusingdirective) -[NamespaceDeclaration](#enamespacedeclaration) -[RecordDeclaration](#erecorddeclaration) -[DeclarationSequence](#edeclarationsequence) -[TranslationUnitDeclaration](#etranslationunitdeclaration) -[IncludeDeclaration](#eincludedeclaration) +nameDelimiter : String -### Relationships -[DFG](#NodeDFG) +comment : String -[EOG](#NodeEOG) +artifact : String -[ANNOTATIONS](#NodeANNOTATIONS) +startLine : int -[AST](#NodeAST) +endLine : int -[SCOPE](#NodeSCOPE) +startColumn : int -[TYPEDEFS](#NodeTYPEDEFS) +endColumn : int -## ValueDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) +isInferred : boolean -### Children -[FieldDeclaration](#efielddeclaration) -[VariableDeclaration](#evariabledeclaration) -[ProblemDeclaration](#eproblemdeclaration) -[EnumConstantDeclaration](#eenumconstantdeclaration) -[FunctionDeclaration](#efunctiondeclaration) -[ParameterDeclaration](#eparamvariabledeclaration) -[TypeParameterDeclaration](#etypeparamdeclaration) +
+ +## Literal +**Labels**:[Node](#enode) +[Statement](#estatement) +[Expression](#eexpression) +[Literal](#eliteral) ### Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +
Inherited Relationships -[TYPE](#ValueDeclarationTYPE) +[TYPE](#ExpressionTYPE) -[USAGE](#ValueDeclarationUSAGE) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### POSSIBLE_SUB_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"POSSIBLE_SUB_TYPES*"-->ValueDeclarationPOSSIBLE_SUB_TYPES[Type]:::outer -``` -#### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer -``` -#### USAGE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[Reference]:::outer -``` -## FieldDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[FieldDeclaration](#efielddeclaration) +### Properties +value : Object -### Relationships -[INITIALIZER](#FieldDeclarationINITIALIZER) +
Inherited Properties +code : String -[DEFINES](#FieldDeclarationDEFINES) +argumentIndex : int -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +file : String -[TYPE](#ValueDeclarationTYPE) +isImplicit : boolean -[USAGE](#ValueDeclarationUSAGE) +fullName : String -[DFG](#NodeDFG) +localName : String -[EOG](#NodeEOG) +name : String -[ANNOTATIONS](#NodeANNOTATIONS) +nameDelimiter : String -[AST](#NodeAST) +comment : String -[SCOPE](#NodeSCOPE) +artifact : String -[TYPEDEFS](#NodeTYPEDEFS) +startLine : int -#### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FieldDeclaration--"INITIALIZER¹"-->FieldDeclarationINITIALIZER[Expression]:::outer -``` -#### DEFINES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer -``` -## VariableDeclaration +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## TypeIdExpression **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[VariableDeclaration](#evariabledeclaration) +[Statement](#estatement) +[Expression](#eexpression) +[TypeIdExpression](#etypeidexpression) ### Relationships -[INITIALIZER](#VariableDeclarationINITIALIZER) +[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE) +
Inherited Relationships -[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS) +[TYPE](#ExpressionTYPE) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[TYPE](#ValueDeclarationTYPE) +[LOCALS](#StatementLOCALS) -[USAGE](#ValueDeclarationUSAGE) +[EOG](#NodeEOG) -[DFG](#NodeDFG) +[CDG](#NodeCDG) -[EOG](#NodeEOG) +[DFG](#NodeDFG) [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer -``` -#### TEMPLATE_PARAMETERS +#### REFERENCED_TYPE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer +TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer ``` -## ProblemDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[ProblemDeclaration](#eproblemdeclaration) +### Properties +operatorCode : String -### Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +
Inherited Properties +code : String -[TYPE](#ValueDeclarationTYPE) +argumentIndex : int -[USAGE](#ValueDeclarationUSAGE) +file : String -[DFG](#NodeDFG) +isImplicit : boolean -[EOG](#NodeEOG) +fullName : String -[ANNOTATIONS](#NodeANNOTATIONS) +localName : String -[AST](#NodeAST) +name : String -[SCOPE](#NodeSCOPE) +nameDelimiter : String -[TYPEDEFS](#NodeTYPEDEFS) +comment : String -## EnumConstantDeclaration +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ExpressionList **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[EnumConstantDeclaration](#eenumconstantdeclaration) +[Statement](#estatement) +[Expression](#eexpression) +[ExpressionList](#eexpressionlist) ### Relationships -[INITIALIZER](#EnumConstantDeclarationINITIALIZER) - -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +[SUBEXPR](#ExpressionListSUBEXPR) +
Inherited Relationships -[TYPE](#ValueDeclarationTYPE) +[TYPE](#ExpressionTYPE) -[USAGE](#ValueDeclarationUSAGE) +[ASSIGNED_TYPES](#ExpressionASSIGNED_TYPES) -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### INITIALIZER +#### SUBEXPR ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer +ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer ``` -## FunctionDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[FunctionDeclaration](#efunctiondeclaration) +### Properties +
Inherited Properties +code : String -### Children -[MethodDeclaration](#emethoddeclaration) +argumentIndex : int -### Relationships -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) +file : String -[OVERRIDES](#FunctionDeclarationOVERRIDES) +isImplicit : boolean -[BODY](#FunctionDeclarationBODY) +fullName : String -[RECORDS](#FunctionDeclarationRECORDS) +localName : String -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) +name : String -[PARAMETERS](#FunctionDeclarationPARAMETERS) +nameDelimiter : String -[DEFINES](#FunctionDeclarationDEFINES) +comment : String -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +artifact : String -[TYPE](#ValueDeclarationTYPE) +startLine : int -[USAGE](#ValueDeclarationUSAGE) +endLine : int -[DFG](#NodeDFG) +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## CaseStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[CaseStatement](#ecasestatement) + +### Relationships +[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### THROWS_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer -``` -#### OVERRIDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer -``` -#### BODY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer -``` -#### RECORDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer -``` -#### RETURN_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer -``` -#### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParameterDeclaration]:::outer -``` -#### DEFINES +#### CASE_EXPRESSION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer +CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer ``` -## MethodDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[FunctionDeclaration](#efunctiondeclaration) -[MethodDeclaration](#emethoddeclaration) +### Properties +
Inherited Properties +code : String -### Children -[ConstructorDeclaration](#econstructordeclaration) +argumentIndex : int -### Relationships -[RECEIVER](#MethodDeclarationRECEIVER) +file : String -[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) +isImplicit : boolean -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) +fullName : String -[OVERRIDES](#FunctionDeclarationOVERRIDES) +localName : String -[BODY](#FunctionDeclarationBODY) +name : String -[RECORDS](#FunctionDeclarationRECORDS) +nameDelimiter : String -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) +comment : String -[PARAMETERS](#FunctionDeclarationPARAMETERS) +artifact : String -[DEFINES](#FunctionDeclarationDEFINES) +startLine : int -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +endLine : int -[TYPE](#ValueDeclarationTYPE) +startColumn : int -[USAGE](#ValueDeclarationUSAGE) +endColumn : int -[DFG](#NodeDFG) +isInferred : boolean + +
+ +## ReturnStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[ReturnStatement](#ereturnstatement) + +### Relationships +[RETURN_VALUES](#ReturnStatementRETURN_VALUES) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### RECEIVER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer -``` -#### RECORD_DECLARATION +#### RETURN_VALUES ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer +ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer ``` -## ConstructorDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[FunctionDeclaration](#efunctiondeclaration) -[MethodDeclaration](#emethoddeclaration) -[ConstructorDeclaration](#econstructordeclaration) - -### Relationships -[RECEIVER](#MethodDeclarationRECEIVER) - -[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) +### Properties +
Inherited Properties +code : String -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) - -[OVERRIDES](#FunctionDeclarationOVERRIDES) +argumentIndex : int -[BODY](#FunctionDeclarationBODY) +file : String -[RECORDS](#FunctionDeclarationRECORDS) +isImplicit : boolean -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) +fullName : String -[PARAMETERS](#FunctionDeclarationPARAMETERS) +localName : String -[DEFINES](#FunctionDeclarationDEFINES) +name : String -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +nameDelimiter : String -[TYPE](#ValueDeclarationTYPE) +comment : String -[USAGE](#ValueDeclarationUSAGE) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-## ParameterDeclaration +## IfStatement **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[ParameterDeclaration](#eparamvariabledeclaration) +[Statement](#estatement) +[IfStatement](#eifstatement) ### Relationships -[DEFAULT](#ParameterDeclarationDEFAULT) +[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION) +[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT) +[THEN_STATEMENT](#IfStatementTHEN_STATEMENT) +[CONDITION](#IfStatementCONDITION) +[ELSE_STATEMENT](#IfStatementELSE_STATEMENT) +
Inherited Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) +[LOCALS](#StatementLOCALS) -[TYPE](#ValueDeclarationTYPE) +[EOG](#NodeEOG) -[USAGE](#ValueDeclarationUSAGE) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### DEFAULT +#### CONDITION_DECLARATION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ParameterDeclaration--"DEFAULT¹"-->ParameterDeclarationDEFAULT[Expression]:::outer +IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer ``` -## TypeParameterDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[ValueDeclaration](#evaluedeclaration) -[TypeParameterDeclaration](#etypeparamdeclaration) - -### Relationships -[DEFAULT](#TypeParameterDeclarationDEFAULT) - -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) - -[TYPE](#ValueDeclarationTYPE) +#### INITIALIZER_STATEMENT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer +``` +#### THEN_STATEMENT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer +``` +#### CONDITION +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer +``` +#### ELSE_STATEMENT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer +``` +### Properties +isConstExpression : boolean -[USAGE](#ValueDeclarationUSAGE) +
Inherited Properties +code : String -[DFG](#NodeDFG) +argumentIndex : int -[EOG](#NodeEOG) +file : String -[ANNOTATIONS](#NodeANNOTATIONS) +isImplicit : boolean -[AST](#NodeAST) +fullName : String -[SCOPE](#NodeSCOPE) +localName : String -[TYPEDEFS](#NodeTYPEDEFS) +name : String -#### DEFAULT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypeParameterDeclaration--"DEFAULT¹"-->TypeParameterDeclarationDEFAULT[Type]:::outer -``` -## TemplateDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[TemplateDeclaration](#etemplatedeclaration) +nameDelimiter : String -### Children -[ClassTemplateDeclaration](#eclasstemplatedeclaration) -[FunctionTemplateDeclaration](#efunctiontemplatedeclaration) +comment : String -### Relationships -[PARAMETERS](#TemplateDeclarationPARAMETERS) +artifact : String -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-#### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer -``` -## ClassTemplateDeclaration +## ForStatement **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[TemplateDeclaration](#etemplatedeclaration) -[ClassTemplateDeclaration](#eclasstemplatedeclaration) +[Statement](#estatement) +[ForStatement](#eforstatement) ### Relationships -[REALIZATION](#ClassTemplateDeclarationREALIZATION) - -[PARAMETERS](#TemplateDeclarationPARAMETERS) +[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION) +[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT) +[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT) +[CONDITION](#ForStatementCONDITION) +[STATEMENT](#ForStatementSTATEMENT) +
Inherited Relationships -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### REALIZATION +#### CONDITION_DECLARATION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ClassTemplateDeclaration--"REALIZATION*"-->ClassTemplateDeclarationREALIZATION[RecordDeclaration]:::outer +ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer ``` -## FunctionTemplateDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[TemplateDeclaration](#etemplatedeclaration) -[FunctionTemplateDeclaration](#efunctiontemplatedeclaration) - -### Relationships -[REALIZATION](#FunctionTemplateDeclarationREALIZATION) - -[PARAMETERS](#TemplateDeclarationPARAMETERS) - -[DFG](#NodeDFG) - -[EOG](#NodeEOG) - -[ANNOTATIONS](#NodeANNOTATIONS) - -[AST](#NodeAST) - -[SCOPE](#NodeSCOPE) - -[TYPEDEFS](#NodeTYPEDEFS) - -#### REALIZATION +#### INITIALIZER_STATEMENT ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer +ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer ``` -## EnumDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[EnumDeclaration](#eenumdeclaration) - -### Relationships -[ENTRIES](#EnumDeclarationENTRIES) - -[SUPER_TYPE_DECLARATIONS](#EnumDeclarationSUPER_TYPE_DECLARATIONS) - -[SUPER_TYPES](#EnumDeclarationSUPER_TYPES) - -[DFG](#NodeDFG) - -[EOG](#NodeEOG) - -[ANNOTATIONS](#NodeANNOTATIONS) - -[AST](#NodeAST) - -[SCOPE](#NodeSCOPE) - -[TYPEDEFS](#NodeTYPEDEFS) - -#### ENTRIES +#### ITERATION_STATEMENT ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer +ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer ``` -#### SUPER_TYPE_DECLARATIONS +#### CONDITION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"SUPER_TYPE_DECLARATIONS*"-->EnumDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer +ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer ``` -#### SUPER_TYPES +#### STATEMENT ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"SUPER_TYPES*"-->EnumDeclarationSUPER_TYPES[Type]:::outer +ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer ``` -## TypedefDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[TypedefDeclaration](#etypedefdeclaration) +### Properties +
Inherited Properties +code : String -### Relationships -[ALIAS](#TypedefDeclarationALIAS) +argumentIndex : int -[TYPE](#TypedefDeclarationTYPE) +file : String -[DFG](#NodeDFG) +isImplicit : boolean -[EOG](#NodeEOG) +fullName : String -[ANNOTATIONS](#NodeANNOTATIONS) +localName : String -[AST](#NodeAST) +name : String -[SCOPE](#NodeSCOPE) +nameDelimiter : String -[TYPEDEFS](#NodeTYPEDEFS) +comment : String -#### ALIAS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer -``` -#### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer -``` -## UsingDirective -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[UsingDirective](#eusingdirective) +artifact : String -### Relationships -[DFG](#NodeDFG) +startLine : int -[EOG](#NodeEOG) +endLine : int -[ANNOTATIONS](#NodeANNOTATIONS) +startColumn : int -[AST](#NodeAST) +endColumn : int -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +
-## NamespaceDeclaration +## CatchClause **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[NamespaceDeclaration](#enamespacedeclaration) +[Statement](#estatement) +[CatchClause](#ecatchclause) ### Relationships -[STATEMENTS](#NamespaceDeclarationSTATEMENTS) - -[DECLARATIONS](#NamespaceDeclarationDECLARATIONS) +[BODY](#CatchClauseBODY) +[PARAMETER](#CatchClausePARAMETER) +
Inherited Relationships -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### STATEMENTS +#### BODY ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer +CatchClause--"BODY¹"-->CatchClauseBODY[Block]:::outer ``` -#### DECLARATIONS +#### PARAMETER ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer +CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer ``` -## RecordDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[RecordDeclaration](#erecorddeclaration) +### Properties +
Inherited Properties +code : String -### Relationships -[IMPORTS](#RecordDeclarationIMPORTS) +argumentIndex : int -[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS) +file : String -[FIELDS](#RecordDeclarationFIELDS) +isImplicit : boolean -[TEMPLATES](#RecordDeclarationTEMPLATES) +fullName : String -[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS) +localName : String -[RECORDS](#RecordDeclarationRECORDS) +name : String -[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS) +nameDelimiter : String -[STATEMENTS](#RecordDeclarationSTATEMENTS) +comment : String -[METHODS](#RecordDeclarationMETHODS) +artifact : String -[DFG](#NodeDFG) +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## SwitchStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[SwitchStatement](#eswitchstatement) + +### Relationships +[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT) +[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION) +[STATEMENT](#SwitchStatementSTATEMENT) +[SELECTOR](#SwitchStatementSELECTOR) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### IMPORTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer -``` -#### CONSTRUCTORS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer -``` -#### FIELDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer -``` -#### TEMPLATES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer -``` -#### STATIC_IMPORTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer -``` -#### RECORDS +#### INITIALIZER_STATEMENT ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer +SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer ``` -#### SUPER_TYPE_DECLARATIONS +#### SELECTOR_DECLARATION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer +SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer ``` -#### STATEMENTS +#### STATEMENT ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer +SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer ``` -#### METHODS +#### SELECTOR ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer +SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer ``` -## DeclarationSequence +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## GotoStatement **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[DeclarationSequence](#edeclarationsequence) +[Statement](#estatement) +[GotoStatement](#egotostatement) ### Relationships -[CHILDREN](#DeclarationSequenceCHILDREN) +[TARGET_LABEL](#GotoStatementTARGET_LABEL) +
Inherited Relationships -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### CHILDREN +#### TARGET_LABEL ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer +GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer ``` -## TranslationUnitDeclaration -**Labels**:[Node](#enode) -[Declaration](#edeclaration) -[TranslationUnitDeclaration](#etranslationunitdeclaration) +### Properties +labelName : String -### Relationships -[NAMESPACES](#TranslationUnitDeclarationNAMESPACES) +
Inherited Properties +code : String -[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS) +argumentIndex : int -[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS) +file : String -[INCLUDES](#TranslationUnitDeclarationINCLUDES) +isImplicit : boolean -[DFG](#NodeDFG) +fullName : String -[EOG](#NodeEOG) +localName : String -[ANNOTATIONS](#NodeANNOTATIONS) +name : String -[AST](#NodeAST) +nameDelimiter : String -[SCOPE](#NodeSCOPE) +comment : String -[TYPEDEFS](#NodeTYPEDEFS) +artifact : String -#### NAMESPACES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer -``` -#### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer -``` -#### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer -``` -#### INCLUDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer -``` -## IncludeDeclaration +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## WhileStatement **Labels**:[Node](#enode) -[Declaration](#edeclaration) -[IncludeDeclaration](#eincludedeclaration) +[Statement](#estatement) +[WhileStatement](#ewhilestatement) ### Relationships -[INCLUDES](#IncludeDeclarationINCLUDES) - -[PROBLEMS](#IncludeDeclarationPROBLEMS) +[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION) +[CONDITION](#WhileStatementCONDITION) +[STATEMENT](#WhileStatementSTATEMENT) +
Inherited Relationships -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### INCLUDES +#### CONDITION_DECLARATION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer +WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer ``` -#### PROBLEMS +#### CONDITION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer +WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer ``` -## Type -**Labels**:[Node](#enode) -[Type](#etype) +#### STATEMENT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer +``` +### Properties +
Inherited Properties +code : String -### Children -[UnknownType](#eunknowntype) -[ObjectType](#eobjecttype) -[ParameterizedType](#eparameterizedtype) -[PointerType](#epointertype) -[FunctionPointerType](#efunctionpointertype) -[TupleType](#etupletype) -[IncompleteType](#eincompletetype) -[ReferenceType](#ereferencetype) -[FunctionType](#efunctiontype) +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ContinueStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[ContinueStatement](#econtinuestatement) ### Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) +
Inherited Relationships -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### SUPER_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer -``` -## UnknownType +### Properties +label : String + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## DefaultStatement **Labels**:[Node](#enode) -[Type](#etype) -[UnknownType](#eunknowntype) +[Statement](#estatement) +[DefaultStatement](#edefaultstatement) ### Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) +
Inherited Relationships -[DFG](#NodeDFG) +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-## ObjectType -**Labels**:[Node](#enode) -[Type](#etype) -[ObjectType](#eobjecttype) +### Properties +
Inherited Properties +code : String -### Children -[NumericType](#enumerictype) -[StringType](#estringtype) +argumentIndex : int -### Relationships -[GENERICS](#ObjectTypeGENERICS) +file : String -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +isImplicit : boolean -[SUPER_TYPE](#TypeSUPER_TYPE) +fullName : String -[DFG](#NodeDFG) +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## SynchronizedStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[SynchronizedStatement](#esynchronizedstatement) + +### Relationships +[EXPRESSION](#SynchronizedStatementEXPRESSION) +[BLOCK](#SynchronizedStatementBLOCK) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### GENERICS +#### EXPRESSION ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer +SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer ``` -#### RECORD_DECLARATION +#### BLOCK ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer +SynchronizedStatement--"BLOCK¹"-->SynchronizedStatementBLOCK[Block]:::outer ``` -## NumericType -**Labels**:[Node](#enode) -[Type](#etype) -[ObjectType](#eobjecttype) -[NumericType](#enumerictype) +### Properties +
Inherited Properties +code : String -### Children -[IntegerType](#eintegertype) -[FloatingPointType](#efloatingpointtype) -[BooleanType](#ebooleantype) +argumentIndex : int -### Relationships -[GENERICS](#ObjectTypeGENERICS) +file : String -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +isImplicit : boolean -[SUPER_TYPE](#TypeSUPER_TYPE) +fullName : String -[DFG](#NodeDFG) +localName : String -[EOG](#NodeEOG) +name : String -[ANNOTATIONS](#NodeANNOTATIONS) +nameDelimiter : String -[AST](#NodeAST) +comment : String -[SCOPE](#NodeSCOPE) +artifact : String -[TYPEDEFS](#NodeTYPEDEFS) +startLine : int -## IntegerType +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## TryStatement **Labels**:[Node](#enode) -[Type](#etype) -[ObjectType](#eobjecttype) -[NumericType](#enumerictype) -[IntegerType](#eintegertype) +[Statement](#estatement) +[TryStatement](#etrystatement) ### Relationships -[GENERICS](#ObjectTypeGENERICS) +[RESOURCES](#TryStatementRESOURCES) +[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK) +[TRY_BLOCK](#TryStatementTRY_BLOCK) +[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES) +
Inherited Relationships -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +[LOCALS](#StatementLOCALS) -[SUPER_TYPE](#TypeSUPER_TYPE) +[EOG](#NodeEOG) -[DFG](#NodeDFG) +[CDG](#NodeCDG) -[EOG](#NodeEOG) +[DFG](#NodeDFG) [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-## FloatingPointType -**Labels**:[Node](#enode) -[Type](#etype) -[ObjectType](#eobjecttype) -[NumericType](#enumerictype) -[FloatingPointType](#efloatingpointtype) +#### RESOURCES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer +``` +#### FINALLY_BLOCK +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[Block]:::outer +``` +#### TRY_BLOCK +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[Block]:::outer +``` +#### CATCH_CLAUSES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer +``` +### Properties +
Inherited Properties +code : String -### Relationships -[GENERICS](#ObjectTypeGENERICS) +argumentIndex : int -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +file : String -[SUPER_TYPE](#TypeSUPER_TYPE) +isImplicit : boolean -[DFG](#NodeDFG) +fullName : String -[EOG](#NodeEOG) +localName : String -[ANNOTATIONS](#NodeANNOTATIONS) +name : String -[AST](#NodeAST) +nameDelimiter : String -[SCOPE](#NodeSCOPE) +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ForEachStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[ForEachStatement](#eforeachstatement) + +### Relationships +[ITERABLE](#ForEachStatementITERABLE) +[STATEMENT](#ForEachStatementSTATEMENT) +[VARIABLE](#ForEachStatementVARIABLE) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### ITERABLE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer +``` +#### STATEMENT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer +``` +#### VARIABLE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## LabelStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[LabelStatement](#elabelstatement) + +### Relationships +[SUB_STATEMENT](#LabelStatementSUB_STATEMENT) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### SUB_STATEMENT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer +``` +### Properties +label : String + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## BreakStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[BreakStatement](#ebreakstatement) + +### Relationships +
Inherited Relationships + +[LOCALS](#StatementLOCALS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +label : String + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## DeclarationStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[DeclarationStatement](#edeclarationstatement) + +### Relationships +[DECLARATIONS](#DeclarationStatementDECLARATIONS) +
Inherited Relationships + +[LOCALS](#StatementLOCALS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### DECLARATIONS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## EmptyStatement +**Labels**:[Node](#enode) +[Statement](#estatement) +[EmptyStatement](#eemptystatement) + +### Relationships +
Inherited Relationships + +[LOCALS](#StatementLOCALS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## Declaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) + +### Children +[ValueDeclaration](#evaluedeclaration) +[TemplateDeclaration](#etemplatedeclaration) +[RecordDeclaration](#erecorddeclaration) +[TypedefDeclaration](#etypedefdeclaration) +[NamespaceDeclaration](#enamespacedeclaration) +[DeclarationSequence](#edeclarationsequence) +[TranslationUnitDeclaration](#etranslationunitdeclaration) +[UsingDeclaration](#eusingdeclaration) +[IncludeDeclaration](#eincludedeclaration) + +### Relationships +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ValueDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) + +### Children +[VariableDeclaration](#evariabledeclaration) +[ProblemDeclaration](#eproblemdeclaration) +[EnumConstantDeclaration](#eenumconstantdeclaration) +[FunctionDeclaration](#efunctiondeclaration) +[TypeParameterDeclaration](#etypeparameterdeclaration) +[ParameterDeclaration](#eparameterdeclaration) + +### Relationships +[ALIASES](#ValueDeclarationALIASES) +[TYPE](#ValueDeclarationTYPE) +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) +[USAGE](#ValueDeclarationUSAGE) +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### ALIASES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ValueDeclaration--"ALIASES*"-->ValueDeclarationALIASES[Node]:::outer +``` +#### TYPE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer +``` +#### ASSIGNED_TYPES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ValueDeclaration--"ASSIGNED_TYPES*"-->ValueDeclarationASSIGNED_TYPES[Type]:::outer +``` +#### USAGE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[Reference]:::outer +``` +#### TYPE_OBSERVERS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ValueDeclaration--"TYPE_OBSERVERS*"-->ValueDeclarationTYPE_OBSERVERS[Node]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## VariableDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[VariableDeclaration](#evariabledeclaration) + +### Children +[TupleDeclaration](#etupledeclaration) +[FieldDeclaration](#efielddeclaration) + +### Relationships +[INITIALIZER](#VariableDeclarationINITIALIZER) +[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS) +
Inherited Relationships + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### INITIALIZER +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer +``` +#### TEMPLATE_PARAMETERS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer +``` +### Properties +isImplicitInitializerAllowed : boolean + +isArray : boolean + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## TupleDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[VariableDeclaration](#evariabledeclaration) +[TupleDeclaration](#etupledeclaration) + +### Relationships +[ELEMENTS](#TupleDeclarationELEMENTS) +
Inherited Relationships + +[INITIALIZER](#VariableDeclarationINITIALIZER) + +[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS) + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### ELEMENTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TupleDeclaration--"ELEMENTS*"-->TupleDeclarationELEMENTS[VariableDeclaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +isImplicitInitializerAllowed : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +isArray : boolean + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## FieldDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[VariableDeclaration](#evariabledeclaration) +[FieldDeclaration](#efielddeclaration) + +### Relationships +[DEFINES](#FieldDeclarationDEFINES) +
Inherited Relationships + +[INITIALIZER](#VariableDeclarationINITIALIZER) + +[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS) + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### DEFINES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer +``` +### Properties +modifiers : List + +isDefinition : boolean + +
Inherited Properties +code : String + +file : String + +isInferred : boolean + +argumentIndex : int + +isImplicit : boolean + +isImplicitInitializerAllowed : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +isArray : boolean + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +
+ +## ProblemDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[ProblemDeclaration](#eproblemdeclaration) + +### Relationships +
Inherited Relationships + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +problem : String + +problemType : ProblemType + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## EnumConstantDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[EnumConstantDeclaration](#eenumconstantdeclaration) + +### Relationships +[INITIALIZER](#EnumConstantDeclarationINITIALIZER) +
Inherited Relationships + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### INITIALIZER +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## FunctionDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[FunctionDeclaration](#efunctiondeclaration) + +### Children +[MethodDeclaration](#emethoddeclaration) + +### Relationships +[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) +[OVERRIDES](#FunctionDeclarationOVERRIDES) +[BODY](#FunctionDeclarationBODY) +[RECORDS](#FunctionDeclarationRECORDS) +[DEFINES](#FunctionDeclarationDEFINES) +[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) +[PARAMETERS](#FunctionDeclarationPARAMETERS) +
Inherited Relationships + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### THROWS_TYPES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer +``` +#### OVERRIDES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer +``` +#### BODY +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer +``` +#### RECORDS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer +``` +#### DEFINES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer +``` +#### RETURN_TYPES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer +``` +#### PARAMETERS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParameterDeclaration]:::outer +``` +### Properties +isDefinition : boolean + +
Inherited Properties +code : String + +file : String + +isInferred : boolean + +argumentIndex : int + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +
+ +## MethodDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[FunctionDeclaration](#efunctiondeclaration) +[MethodDeclaration](#emethoddeclaration) + +### Children +[ConstructorDeclaration](#econstructordeclaration) + +### Relationships +[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) +[RECEIVER](#MethodDeclarationRECEIVER) +
Inherited Relationships + +[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) + +[OVERRIDES](#FunctionDeclarationOVERRIDES) + +[BODY](#FunctionDeclarationBODY) + +[RECORDS](#FunctionDeclarationRECORDS) + +[DEFINES](#FunctionDeclarationDEFINES) + +[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) + +[PARAMETERS](#FunctionDeclarationPARAMETERS) + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### RECORD_DECLARATION +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer +``` +#### RECEIVER +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer +``` +### Properties +isStatic : boolean + +
Inherited Properties +code : String + +file : String + +isInferred : boolean + +isDefinition : boolean + +argumentIndex : int + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +
+ +## ConstructorDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[FunctionDeclaration](#efunctiondeclaration) +[MethodDeclaration](#emethoddeclaration) +[ConstructorDeclaration](#econstructordeclaration) + +### Relationships +
Inherited Relationships + +[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) + +[RECEIVER](#MethodDeclarationRECEIVER) + +[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) + +[OVERRIDES](#FunctionDeclarationOVERRIDES) + +[BODY](#FunctionDeclarationBODY) + +[RECORDS](#FunctionDeclarationRECORDS) + +[DEFINES](#FunctionDeclarationDEFINES) + +[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) + +[PARAMETERS](#FunctionDeclarationPARAMETERS) + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +isStatic : boolean + +code : String + +file : String + +isInferred : boolean + +isDefinition : boolean + +argumentIndex : int + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +
+ +## TypeParameterDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[TypeParameterDeclaration](#etypeparameterdeclaration) + +### Relationships +[DEFAULT](#TypeParameterDeclarationDEFAULT) +
Inherited Relationships + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### DEFAULT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TypeParameterDeclaration--"DEFAULT¹"-->TypeParameterDeclarationDEFAULT[Type]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ParameterDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[ValueDeclaration](#evaluedeclaration) +[ParameterDeclaration](#eparameterdeclaration) + +### Relationships +[DEFAULT](#ParameterDeclarationDEFAULT) +
Inherited Relationships + +[ALIASES](#ValueDeclarationALIASES) + +[TYPE](#ValueDeclarationTYPE) + +[ASSIGNED_TYPES](#ValueDeclarationASSIGNED_TYPES) + +[USAGE](#ValueDeclarationUSAGE) + +[TYPE_OBSERVERS](#ValueDeclarationTYPE_OBSERVERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### DEFAULT +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ParameterDeclaration--"DEFAULT¹"-->ParameterDeclarationDEFAULT[Expression]:::outer +``` +### Properties +isVariadic : boolean + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## TemplateDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[TemplateDeclaration](#etemplatedeclaration) + +### Children +[RecordTemplateDeclaration](#erecordtemplatedeclaration) +[FunctionTemplateDeclaration](#efunctiontemplatedeclaration) + +### Relationships +[PARAMETERS](#TemplateDeclarationPARAMETERS) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### PARAMETERS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## RecordTemplateDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[TemplateDeclaration](#etemplatedeclaration) +[RecordTemplateDeclaration](#erecordtemplatedeclaration) + +### Relationships +[REALIZATION](#RecordTemplateDeclarationREALIZATION) +
Inherited Relationships + +[PARAMETERS](#TemplateDeclarationPARAMETERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### REALIZATION +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordTemplateDeclaration--"REALIZATION*"-->RecordTemplateDeclarationREALIZATION[RecordDeclaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## FunctionTemplateDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[TemplateDeclaration](#etemplatedeclaration) +[FunctionTemplateDeclaration](#efunctiontemplatedeclaration) + +### Relationships +[REALIZATION](#FunctionTemplateDeclarationREALIZATION) +
Inherited Relationships + +[PARAMETERS](#TemplateDeclarationPARAMETERS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### REALIZATION +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## RecordDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[RecordDeclaration](#erecorddeclaration) + +### Children +[EnumDeclaration](#eenumdeclaration) + +### Relationships +[IMPORTS](#RecordDeclarationIMPORTS) +[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS) +[FIELDS](#RecordDeclarationFIELDS) +[TEMPLATES](#RecordDeclarationTEMPLATES) +[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS) +[RECORDS](#RecordDeclarationRECORDS) +[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS) +[STATEMENTS](#RecordDeclarationSTATEMENTS) +[METHODS](#RecordDeclarationMETHODS) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### IMPORTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer +``` +#### CONSTRUCTORS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer +``` +#### FIELDS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer +``` +#### TEMPLATES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer +``` +#### STATIC_IMPORTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer +``` +#### RECORDS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer +``` +#### SUPER_TYPE_DECLARATIONS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer +``` +#### STATEMENTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer +``` +#### METHODS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer +``` +### Properties +kind : String + +importStatements : List + +staticImportStatements : List + +
Inherited Properties +code : String + +file : String + +isInferred : boolean + +argumentIndex : int + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +
+ +## EnumDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[RecordDeclaration](#erecorddeclaration) +[EnumDeclaration](#eenumdeclaration) + +### Relationships +[ENTRIES](#EnumDeclarationENTRIES) +
Inherited Relationships + +[IMPORTS](#RecordDeclarationIMPORTS) + +[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS) + +[FIELDS](#RecordDeclarationFIELDS) + +[TEMPLATES](#RecordDeclarationTEMPLATES) + +[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS) + +[RECORDS](#RecordDeclarationRECORDS) + +[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS) + +[STATEMENTS](#RecordDeclarationSTATEMENTS) + +[METHODS](#RecordDeclarationMETHODS) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### ENTRIES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +file : String + +isInferred : boolean + +kind : String + +argumentIndex : int + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +importStatements : List + +staticImportStatements : List + +
+ +## TypedefDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[TypedefDeclaration](#etypedefdeclaration) + +### Relationships +[TYPE](#TypedefDeclarationTYPE) +[ALIAS](#TypedefDeclarationALIAS) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### TYPE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer +``` +#### ALIAS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## NamespaceDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[NamespaceDeclaration](#enamespacedeclaration) + +### Relationships +[DECLARATIONS](#NamespaceDeclarationDECLARATIONS) +[STATEMENTS](#NamespaceDeclarationSTATEMENTS) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### DECLARATIONS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer +``` +#### STATEMENTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer +``` +### Properties +path : String + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## DeclarationSequence +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[DeclarationSequence](#edeclarationsequence) + +### Relationships +[CHILDREN](#DeclarationSequenceCHILDREN) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### CHILDREN +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## TranslationUnitDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[TranslationUnitDeclaration](#etranslationunitdeclaration) + +### Relationships +[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS) +[NAMESPACES](#TranslationUnitDeclarationNAMESPACES) +[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS) +[INCLUDES](#TranslationUnitDeclarationINCLUDES) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### DECLARATIONS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer +``` +#### NAMESPACES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer +``` +#### STATEMENTS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer +``` +#### INCLUDES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## UsingDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[UsingDeclaration](#eusingdeclaration) + +### Relationships +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +qualifiedName : String + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## IncludeDeclaration +**Labels**:[Node](#enode) +[Declaration](#edeclaration) +[IncludeDeclaration](#eincludedeclaration) + +### Relationships +[INCLUDES](#IncludeDeclarationINCLUDES) +[PROBLEMS](#IncludeDeclarationPROBLEMS) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### INCLUDES +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer +``` +#### PROBLEMS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer +``` +### Properties +filename : String + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## Type +**Labels**:[Node](#enode) +[Type](#etype) + +### Children +[ProblemType](#eproblemtype) +[UnknownType](#eunknowntype) +[ObjectType](#eobjecttype) +[ParameterizedType](#eparameterizedtype) +[PointerType](#epointertype) +[AutoType](#eautotype) +[FunctionPointerType](#efunctionpointertype) +[TupleType](#etupletype) +[IncompleteType](#eincompletetype) +[ReferenceType](#ereferencetype) +[FunctionType](#efunctiontype) + +### Relationships +[SUPER_TYPE](#TypeSUPER_TYPE) +
Inherited Relationships + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### SUPER_TYPE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer +``` +### Properties +isPrimitive : boolean + +typeOrigin : Origin + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ +## ProblemType +**Labels**:[Node](#enode) +[Type](#etype) +[ProblemType](#eproblemtype) + +### Relationships +
Inherited Relationships + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## UnknownType +**Labels**:[Node](#enode) +[Type](#etype) +[UnknownType](#eunknowntype) + +### Relationships +
Inherited Relationships + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +typeOrigin : Origin + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +
+ +## ObjectType +**Labels**:[Node](#enode) +[Type](#etype) +[ObjectType](#eobjecttype) + +### Children +[NumericType](#enumerictype) +[StringType](#estringtype) + +### Relationships +[GENERICS](#ObjectTypeGENERICS) +[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +
Inherited Relationships + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### GENERICS +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer +``` +#### RECORD_DECLARATION +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer +``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## NumericType +**Labels**:[Node](#enode) +[Type](#etype) +[ObjectType](#eobjecttype) +[NumericType](#enumerictype) + +### Children +[IntegerType](#eintegertype) +[FloatingPointType](#efloatingpointtype) +[BooleanType](#ebooleantype) + +### Relationships +
Inherited Relationships + +[GENERICS](#ObjectTypeGENERICS) + +[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +modifier : Modifier + +bitWidth : Integer + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## IntegerType +**Labels**:[Node](#enode) +[Type](#etype) +[ObjectType](#eobjecttype) +[NumericType](#enumerictype) +[IntegerType](#eintegertype) + +### Relationships +
Inherited Relationships + +[GENERICS](#ObjectTypeGENERICS) + +[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +modifier : Modifier + +argumentIndex : int + +file : String + +isImplicit : boolean + +bitWidth : Integer + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## FloatingPointType +**Labels**:[Node](#enode) +[Type](#etype) +[ObjectType](#eobjecttype) +[NumericType](#enumerictype) +[FloatingPointType](#efloatingpointtype) + +### Relationships +
Inherited Relationships + +[GENERICS](#ObjectTypeGENERICS) + +[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +modifier : Modifier + +argumentIndex : int + +file : String + +isImplicit : boolean + +bitWidth : Integer + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## BooleanType +**Labels**:[Node](#enode) +[Type](#etype) +[ObjectType](#eobjecttype) +[NumericType](#enumerictype) +[BooleanType](#ebooleantype) + +### Relationships +
Inherited Relationships + +[GENERICS](#ObjectTypeGENERICS) + +[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +modifier : Modifier + +argumentIndex : int + +file : String + +isImplicit : boolean + +bitWidth : Integer + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## StringType +**Labels**:[Node](#enode) +[Type](#etype) +[ObjectType](#eobjecttype) +[StringType](#estringtype) + +### Relationships +
Inherited Relationships + +[GENERICS](#ObjectTypeGENERICS) + +[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## ParameterizedType +**Labels**:[Node](#enode) +[Type](#etype) +[ParameterizedType](#eparameterizedtype) + +### Relationships +
Inherited Relationships + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ +## PointerType +**Labels**:[Node](#enode) +[Type](#etype) +[PointerType](#epointertype) + +### Relationships +[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE) +
Inherited Relationships + +[SUPER_TYPE](#TypeSUPER_TYPE) + +[EOG](#NodeEOG) + +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + +[ANNOTATIONS](#NodeANNOTATIONS) + +[PDG](#NodePDG) + +[AST](#NodeAST) + +[SCOPE](#NodeSCOPE) + +
+ +#### ELEMENT_TYPE +```mermaid +flowchart LR + classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; +PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer +``` +### Properties +pointerOrigin : PointerOrigin + +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String -[TYPEDEFS](#NodeTYPEDEFS) +nameDelimiter : String -## BooleanType -**Labels**:[Node](#enode) -[Type](#etype) -[ObjectType](#eobjecttype) -[NumericType](#enumerictype) -[BooleanType](#ebooleantype) +comment : String -### Relationships -[GENERICS](#ObjectTypeGENERICS) +artifact : String -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +startLine : int -[SUPER_TYPE](#TypeSUPER_TYPE) +endLine : int -[DFG](#NodeDFG) +startColumn : int -[EOG](#NodeEOG) +endColumn : int -[ANNOTATIONS](#NodeANNOTATIONS) +isPrimitive : boolean -[AST](#NodeAST) +isInferred : boolean -[SCOPE](#NodeSCOPE) +typeOrigin : Origin -[TYPEDEFS](#NodeTYPEDEFS) +
-## StringType +## AutoType **Labels**:[Node](#enode) [Type](#etype) -[ObjectType](#eobjecttype) -[StringType](#estringtype) +[AutoType](#eautotype) ### Relationships -[GENERICS](#ObjectTypeGENERICS) - -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) +
Inherited Relationships [SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-## ParameterizedType -**Labels**:[Node](#enode) -[Type](#etype) -[ParameterizedType](#eparameterizedtype) +### Properties +
Inherited Properties +code : String -### Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) +argumentIndex : int -[DFG](#NodeDFG) +file : String -[EOG](#NodeEOG) +isImplicit : boolean -[ANNOTATIONS](#NodeANNOTATIONS) +fullName : String -[AST](#NodeAST) +localName : String -[SCOPE](#NodeSCOPE) +name : String -[TYPEDEFS](#NodeTYPEDEFS) +nameDelimiter : String -## PointerType -**Labels**:[Node](#enode) -[Type](#etype) -[PointerType](#epointertype) +comment : String -### Relationships -[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE) +artifact : String -[SUPER_TYPE](#TypeSUPER_TYPE) +startLine : int -[DFG](#NodeDFG) +endLine : int -[EOG](#NodeEOG) +startColumn : int -[ANNOTATIONS](#NodeANNOTATIONS) +endColumn : int -[AST](#NodeAST) +isPrimitive : boolean -[SCOPE](#NodeSCOPE) +isInferred : boolean -[TYPEDEFS](#NodeTYPEDEFS) +typeOrigin : Origin + +
-#### ELEMENT_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer -``` ## FunctionPointerType **Labels**:[Node](#enode) [Type](#etype) @@ -3094,22 +6541,26 @@ PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type[PARAMETERS](#FunctionPointerTypePARAMETERS) - [RETURN_TYPE](#FunctionPointerTypeRETURN_TYPE) +
Inherited Relationships [SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
#### PARAMETERS ```mermaid @@ -3123,6 +6574,44 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ ## TupleType **Labels**:[Node](#enode) [Type](#etype) @@ -3130,20 +6619,25 @@ FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ ## IncompleteType **Labels**:[Node](#enode) [Type](#etype) [IncompleteType](#eincompletetype) ### Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) +
Inherited Relationships -[DFG](#NodeDFG) +[SUPER_TYPE](#TypeSUPER_TYPE) [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
+ +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
## ReferenceType **Labels**:[Node](#enode) @@ -3177,28 +6753,71 @@ TupleType--"TYPES*"-->TupleTypeTYPES[Type]:::outer [ReferenceType](#ereferencetype) ### Relationships -[REFERENCE](#ReferenceTypeREFERENCE) +[ELEMENT_TYPE](#ReferenceTypeELEMENT_TYPE) +
Inherited Relationships [SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### REFERENCE +#### ELEMENT_TYPE ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type]:::outer +ReferenceType--"ELEMENT_TYPE¹"-->ReferenceTypeELEMENT_TYPE[Type]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ ## FunctionType **Labels**:[Node](#enode) [Type](#etype) @@ -3206,22 +6825,26 @@ ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type] ### Relationships [RETURN_TYPES](#FunctionTypeRETURN_TYPES) - [PARAMETERS](#FunctionTypePARAMETERS) +
Inherited Relationships [SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) - [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
#### RETURN_TYPES ```mermaid @@ -3235,24 +6858,67 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; FunctionType--"PARAMETERS*"-->FunctionTypePARAMETERS[Type]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isPrimitive : boolean + +isInferred : boolean + +typeOrigin : Origin + +
+ ## AnnotationMember **Labels**:[Node](#enode) [AnnotationMember](#eannotationmember) ### Relationships [VALUE](#AnnotationMemberVALUE) - -[DFG](#NodeDFG) +
Inherited Relationships [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
#### VALUE ```mermaid @@ -3260,40 +6926,77 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; AnnotationMember--"VALUE¹"-->AnnotationMemberVALUE[Expression]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ ## Component **Labels**:[Node](#enode) [Component](#ecomponent) ### Relationships +[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS) [OUTGOING_INTERACTIONS](#ComponentOUTGOING_INTERACTIONS) +[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS) +
Inherited Relationships -[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS) +[EOG](#NodeEOG) -[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS) +[CDG](#NodeCDG) [DFG](#NodeDFG) -[EOG](#NodeEOG) - [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
-#### OUTGOING_INTERACTIONS +#### INCOMING_INTERACTIONS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer +Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer ``` -#### INCOMING_INTERACTIONS +#### OUTGOING_INTERACTIONS ```mermaid flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer +Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer ``` #### TRANSLATION_UNITS ```mermaid @@ -3301,24 +7004,63 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; Component--"TRANSLATION_UNITS*"-->ComponentTRANSLATION_UNITS[TranslationUnitDeclaration]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ ## Annotation **Labels**:[Node](#enode) [Annotation](#eannotation) ### Relationships [MEMBERS](#AnnotationMEMBERS) - -[DFG](#NodeDFG) +
Inherited Relationships [EOG](#NodeEOG) +[CDG](#NodeCDG) + +[DFG](#NodeDFG) + [ANNOTATIONS](#NodeANNOTATIONS) +[PDG](#NodePDG) + [AST](#NodeAST) [SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) +
#### MEMBERS ```mermaid @@ -3326,3 +7068,37 @@ flowchart LR classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; Annotation--"MEMBERS*"-->AnnotationMEMBERS[AnnotationMember]:::outer ``` +### Properties +
Inherited Properties +code : String + +argumentIndex : int + +file : String + +isImplicit : boolean + +fullName : String + +localName : String + +name : String + +nameDelimiter : String + +comment : String + +artifact : String + +startLine : int + +endLine : int + +startColumn : int + +endColumn : int + +isInferred : boolean + +
+ diff --git a/docs/docs/CPG/specs/schema.md b/docs/docs/CPG/specs/schema.md deleted file mode 100644 index 3b91b95eb8..0000000000 --- a/docs/docs/CPG/specs/schema.md +++ /dev/null @@ -1,10952 +0,0 @@ -# CPG Schema -This file shows all node labels and relationships between them that are persisted from the in memory CPG to the Neo4j database. The specification is generated automatically and always up to date. -# Node -## Children -[Statement](#estatement) [Declaration](#edeclaration) [Type](#etype) [AnnotationMember](#eannotationmember) [Component](#ecomponent) [Annotation](#eannotation) -## Relationships -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DFG -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"DFG*"-->NodeDFG[Node]:::outer -``` -### EOG -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"EOG*"-->NodeEOG[Node]:::outer -``` -### ANNOTATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"ANNOTATIONS*"-->NodeANNOTATIONS[Annotation]:::outer -``` -### AST -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"AST*"-->NodeAST[Node]:::outer -``` -### SCOPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"SCOPE¹"-->NodeSCOPE[Node]:::outer -``` -### TYPEDEFS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Node--"TYPEDEFS*"-->NodeTYPEDEFS[TypedefDeclaration]:::outer -``` -# Statement -**Labels**:[Node](#enode) [Statement](#estatement) -## Children -[AssertStatement](#eassertstatement) [DoStatement](#edostatement) [CaseStatement](#ecasestatement) [ReturnStatement](#ereturnstatement) [Expression](#eexpression) [IfStatement](#eifstatement) [DeclarationStatement](#edeclarationstatement) [ForStatement](#eforstatement) [CatchClause](#ecatchclause) [SwitchStatement](#eswitchstatement) [GotoStatement](#egotostatement) [WhileStatement](#ewhilestatement) [BlockStatement](#ecompoundstatement) [ContinueStatement](#econtinuestatement) [DefaultStatement](#edefaultstatement) [SynchronizedStatement](#esynchronizedstatement) [TryStatement](#etrystatement) [ForEachStatement](#eforeachstatement) [LabelStatement](#elabelstatement) [BreakStatement](#ebreakstatement) [EmptyStatement](#eemptystatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### LOCALS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Statement--"LOCALS*"-->StatementLOCALS[VariableDeclaration]:::outer -``` -# AssertStatement -**Labels**:[Node](#enode) [Statement](#estatement) [AssertStatement](#eassertstatement) -## Relationships -[CONDITION](#AssertStatementCONDITION) -[MESSAGE](#AssertStatementMESSAGE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssertStatement--"CONDITION¹"-->AssertStatementCONDITION[Expression]:::outer -``` -### MESSAGE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssertStatement--"MESSAGE¹"-->AssertStatementMESSAGE[Statement]:::outer -``` -# DoStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DoStatement](#edostatement) -## Relationships -[CONDITION](#DoStatementCONDITION) -[STATEMENT](#DoStatementSTATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DoStatement--"CONDITION¹"-->DoStatementCONDITION[Expression]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DoStatement--"STATEMENT¹"-->DoStatementSTATEMENT[Statement]:::outer -``` -# CaseStatement -**Labels**:[Node](#enode) [Statement](#estatement) [CaseStatement](#ecasestatement) -## Relationships -[CASE_EXPRESSION](#CaseStatementCASE_EXPRESSION) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CASE_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CaseStatement--"CASE_EXPRESSION¹"-->CaseStatementCASE_EXPRESSION[Expression]:::outer -``` -# ReturnStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ReturnStatement](#ereturnstatement) -## Relationships -[RETURN_VALUES](#ReturnStatementRETURN_VALUES) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RETURN_VALUES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ReturnStatement--"RETURN_VALUES*"-->ReturnStatementRETURN_VALUES[Expression]:::outer -``` -# Expression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) -## Children -[NewExpression](#enewexpression) [LambdaExpression](#elambdaexpression) [UnaryOperator](#eunaryoperator) [ArrayRangeExpression](#earrayrangeexpression) [CallExpression](#ecallexpression) [DesignatedInitializerExpression](#edesignatedinitializerexpression) [KeyValueExpression](#ekeyvalueexpression) [AssignExpression](#eassignexpression) [CastExpression](#ecastexpression) [NewArrayExpression](#earraycreationexpression) [SubscriptionExpression](#earraysubscriptionexpression) [TypeExpression](#etypeexpression) [BinaryOperator](#ebinaryoperator) [ConditionalExpression](#econditionalexpression) [Reference](#edeclaredreferenceexpression) [InitializerListExpression](#einitializerlistexpression) [DeleteExpression](#edeleteexpression) [BlockStatementExpression](#ecompoundstatementexpression) [ProblemExpression](#eproblemexpression) [Literal](#eliteral) [TypeIdExpression](#etypeidexpression) [ExpressionList](#eexpressionlist) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### POSSIBLE_SUB_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Expression--"POSSIBLE_SUB_TYPES*"-->ExpressionPOSSIBLE_SUB_TYPES[Type]:::outer -``` -### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Expression--"TYPE¹"-->ExpressionTYPE[Type]:::outer -``` -# NewExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [NewExpression](#enewexpression) -## Relationships -[INITIALIZER](#NewExpressionINITIALIZER) -[TEMPLATE_PARAMETERS](#NewExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewExpression--"INITIALIZER¹"-->NewExpressionINITIALIZER[Expression]:::outer -``` -### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewExpression--"TEMPLATE_PARAMETERS*"-->NewExpressionTEMPLATE_PARAMETERS[Node]:::outer -``` -# LambdaExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [LambdaExpression](#elambdaexpression) -## Relationships -[MUTABLE_VARIABLES](#LambdaExpressionMUTABLE_VARIABLES) -[FUNCTION](#LambdaExpressionFUNCTION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### MUTABLE_VARIABLES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LambdaExpression--"MUTABLE_VARIABLES*"-->LambdaExpressionMUTABLE_VARIABLES[ValueDeclaration]:::outer -``` -### FUNCTION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LambdaExpression--"FUNCTION¹"-->LambdaExpressionFUNCTION[FunctionDeclaration]:::outer -``` -# UnaryOperator -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [UnaryOperator](#eunaryoperator) -## Relationships -[INPUT](#UnaryOperatorINPUT) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INPUT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -UnaryOperator--"INPUT¹"-->UnaryOperatorINPUT[Expression]:::outer -``` -# ArrayRangeExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ArrayRangeExpression](#earrayrangeexpression) -## Relationships -[CEILING](#ArrayRangeExpressionCEILING) -[STEP](#ArrayRangeExpressionSTEP) -[FLOOR](#ArrayRangeExpressionFLOOR) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CEILING -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"CEILING¹"-->ArrayRangeExpressionCEILING[Expression]:::outer -``` -### STEP -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"STEP¹"-->ArrayRangeExpressionSTEP[Expression]:::outer -``` -### FLOOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ArrayRangeExpression--"FLOOR¹"-->ArrayRangeExpressionFLOOR[Expression]:::outer -``` -# CallExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) -## Children -[ConstructorCallExpression](#eexplicitconstructorinvocation) [ConstructExpression](#econstructexpression) [MemberCallExpression](#emembercallexpression) -## Relationships -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CALLEE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"CALLEE¹"-->CallExpressionCALLEE[Expression]:::outer -``` -### INVOKES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"INVOKES*"-->CallExpressionINVOKES[FunctionDeclaration]:::outer -``` -### TEMPLATE_INSTANTIATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"TEMPLATE_INSTANTIATION¹"-->CallExpressionTEMPLATE_INSTANTIATION[TemplateDeclaration]:::outer -``` -### ARGUMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"ARGUMENTS*"-->CallExpressionARGUMENTS[Expression]:::outer -``` -### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CallExpression--"TEMPLATE_PARAMETERS*"-->CallExpressionTEMPLATE_PARAMETERS[Node]:::outer -``` -# ConstructorCallExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [ConstructorCallExpression](#eexplicitconstructorinvocation) -## Relationships -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ConstructExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [ConstructExpression](#econstructexpression) -## Relationships -[INSTANTIATES](#ConstructExpressionINSTANTIATES) -[CONSTRUCTOR](#ConstructExpressionCONSTRUCTOR) -[ANOYMOUS_CLASS](#ConstructExpressionANOYMOUS_CLASS) -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INSTANTIATES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"INSTANTIATES¹"-->ConstructExpressionINSTANTIATES[Declaration]:::outer -``` -### CONSTRUCTOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"CONSTRUCTOR¹"-->ConstructExpressionCONSTRUCTOR[ConstructorDeclaration]:::outer -``` -### ANOYMOUS_CLASS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConstructExpression--"ANOYMOUS_CLASS¹"-->ConstructExpressionANOYMOUS_CLASS[RecordDeclaration]:::outer -``` -# MemberCallExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CallExpression](#ecallexpression) [MemberCallExpression](#emembercallexpression) -## Relationships -[CALLEE](#CallExpressionCALLEE) -[INVOKES](#CallExpressionINVOKES) -[TEMPLATE_INSTANTIATION](#CallExpressionTEMPLATE_INSTANTIATION) -[ARGUMENTS](#CallExpressionARGUMENTS) -[TEMPLATE_PARAMETERS](#CallExpressionTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# DesignatedInitializerExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DesignatedInitializerExpression](#edesignatedinitializerexpression) -## Relationships -[LHS](#DesignatedInitializerExpressionLHS) -[RHS](#DesignatedInitializerExpressionRHS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DesignatedInitializerExpression--"LHS*"-->DesignatedInitializerExpressionLHS[Expression]:::outer -``` -### RHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DesignatedInitializerExpression--"RHS¹"-->DesignatedInitializerExpressionRHS[Expression]:::outer -``` -# KeyValueExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [KeyValueExpression](#ekeyvalueexpression) -## Relationships -[VALUE](#KeyValueExpressionVALUE) -[KEY](#KeyValueExpressionKEY) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### VALUE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -KeyValueExpression--"VALUE¹"-->KeyValueExpressionVALUE[Expression]:::outer -``` -### KEY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -KeyValueExpression--"KEY¹"-->KeyValueExpressionKEY[Expression]:::outer -``` -# AssignExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [AssignExpression](#eassignexpression) -## Relationships -[DECLARATIONS](#AssignExpressionDECLARATIONS) -[LHS](#AssignExpressionLHS) -[RHS](#AssignExpressionRHS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"DECLARATIONS*"-->AssignExpressionDECLARATIONS[VariableDeclaration]:::outer -``` -### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"LHS*"-->AssignExpressionLHS[Expression]:::outer -``` -### RHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AssignExpression--"RHS*"-->AssignExpressionRHS[Expression]:::outer -``` -# CastExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [CastExpression](#ecastexpression) -## Relationships -[CAST_TYPE](#CastExpressionCAST_TYPE) -[EXPRESSION](#CastExpressionEXPRESSION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CAST_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CastExpression--"CAST_TYPE¹"-->CastExpressionCAST_TYPE[Type]:::outer -``` -### EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CastExpression--"EXPRESSION¹"-->CastExpressionEXPRESSION[Expression]:::outer -``` -# NewArrayExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [NewArrayExpression](#earraycreationexpression) -## Relationships -[INITIALIZER](#NewArrayExpressionINITIALIZER) -[DIMENSIONS](#NewArrayExpressionDIMENSIONS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewArrayExpression--"INITIALIZER¹"-->NewArrayExpressionINITIALIZER[Expression]:::outer -``` -### DIMENSIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NewArrayExpression--"DIMENSIONS*"-->NewArrayExpressionDIMENSIONS[Expression]:::outer -``` -# SubscriptionExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [SubscriptionExpression](#earraysubscriptionexpression) -## Relationships -[ARRAY_EXPRESSION](#SubscriptionExpressionARRAY_EXPRESSION) -[SUBSCRIPT_EXPRESSION](#SubscriptionExpressionSUBSCRIPT_EXPRESSION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ARRAY_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SubscriptionExpression--"ARRAY_EXPRESSION¹"-->SubscriptionExpressionARRAY_EXPRESSION[Expression]:::outer -``` -### SUBSCRIPT_EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SubscriptionExpression--"SUBSCRIPT_EXPRESSION¹"-->SubscriptionExpressionSUBSCRIPT_EXPRESSION[Expression]:::outer -``` -# TypeExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [TypeExpression](#etypeexpression) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# BinaryOperator -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [BinaryOperator](#ebinaryoperator) -## Relationships -[LHS](#BinaryOperatorLHS) -[RHS](#BinaryOperatorRHS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### LHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BinaryOperator--"LHS¹"-->BinaryOperatorLHS[Expression]:::outer -``` -### RHS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BinaryOperator--"RHS¹"-->BinaryOperatorRHS[Expression]:::outer -``` -# ConditionalExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ConditionalExpression](#econditionalexpression) -## Relationships -[ELSE_EXPR](#ConditionalExpressionELSE_EXPR) -[THEN_EXPR](#ConditionalExpressionTHEN_EXPR) -[CONDITION](#ConditionalExpressionCONDITION) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ELSE_EXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"ELSE_EXPR¹"-->ConditionalExpressionELSE_EXPR[Expression]:::outer -``` -### THEN_EXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"THEN_EXPR¹"-->ConditionalExpressionTHEN_EXPR[Expression]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ConditionalExpression--"CONDITION¹"-->ConditionalExpressionCONDITION[Expression]:::outer -``` -# Reference -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Reference](#edeclaredreferenceexpression) -## Children -[MemberExpression](#ememberexpression) -## Relationships -[REFERS_TO](#ReferenceREFERS_TO) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REFERS_TO -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Reference--"REFERS_TO¹"-->ReferenceREFERS_TO[Declaration]:::outer -``` -# MemberExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Reference](#edeclaredreferenceexpression) [MemberExpression](#ememberexpression) -## Relationships -[BASE](#MemberExpressionBASE) -[REFERS_TO](#ReferenceREFERS_TO) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### BASE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MemberExpression--"BASE¹"-->MemberExpressionBASE[Expression]:::outer -``` -# InitializerListExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [InitializerListExpression](#einitializerlistexpression) -## Relationships -[INITIALIZERS](#InitializerListExpressionINITIALIZERS) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -InitializerListExpression--"INITIALIZERS*"-->InitializerListExpressionINITIALIZERS[Expression]:::outer -``` -# DeleteExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [DeleteExpression](#edeleteexpression) -## Relationships -[OPERAND](#DeleteExpressionOPERAND) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### OPERAND -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeleteExpression--"OPERAND¹"-->DeleteExpressionOPERAND[Expression]:::outer -``` -# BlockStatementExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [BlockStatementExpression](#ecompoundstatementexpression) -## Relationships -[STATEMENT](#BlockStatementExpressionSTATEMENT) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BlockStatementExpression--"STATEMENT¹"-->BlockStatementExpressionSTATEMENT[Statement]:::outer -``` -# ProblemExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ProblemExpression](#eproblemexpression) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# Literal -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [Literal](#eliteral) -## Relationships -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# TypeIdExpression -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [TypeIdExpression](#etypeidexpression) -## Relationships -[REFERENCED_TYPE](#TypeIdExpressionREFERENCED_TYPE) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REFERENCED_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypeIdExpression--"REFERENCED_TYPE¹"-->TypeIdExpressionREFERENCED_TYPE[Type]:::outer -``` -# ExpressionList -**Labels**:[Node](#enode) [Statement](#estatement) [Expression](#eexpression) [ExpressionList](#eexpressionlist) -## Relationships -[SUBEXPR](#ExpressionListSUBEXPR) -[POSSIBLE_SUB_TYPES](#ExpressionPOSSIBLE_SUB_TYPES) -[TYPE](#ExpressionTYPE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### SUBEXPR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ExpressionList--"SUBEXPR*"-->ExpressionListSUBEXPR[Statement]:::outer -``` -# IfStatement -**Labels**:[Node](#enode) [Statement](#estatement) [IfStatement](#eifstatement) -## Relationships -[CONDITION_DECLARATION](#IfStatementCONDITION_DECLARATION) -[INITIALIZER_STATEMENT](#IfStatementINITIALIZER_STATEMENT) -[THEN_STATEMENT](#IfStatementTHEN_STATEMENT) -[CONDITION](#IfStatementCONDITION) -[ELSE_STATEMENT](#IfStatementELSE_STATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"CONDITION_DECLARATION¹"-->IfStatementCONDITION_DECLARATION[Declaration]:::outer -``` -### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"INITIALIZER_STATEMENT¹"-->IfStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -### THEN_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"THEN_STATEMENT¹"-->IfStatementTHEN_STATEMENT[Statement]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"CONDITION¹"-->IfStatementCONDITION[Expression]:::outer -``` -### ELSE_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IfStatement--"ELSE_STATEMENT¹"-->IfStatementELSE_STATEMENT[Statement]:::outer -``` -# DeclarationStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DeclarationStatement](#edeclarationstatement) -## Children -[ASMDeclarationStatement](#easmdeclarationstatement) -## Relationships -[DECLARATIONS](#DeclarationStatementDECLARATIONS) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclarationStatement--"DECLARATIONS*"-->DeclarationStatementDECLARATIONS[Declaration]:::outer -``` -# ASMDeclarationStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DeclarationStatement](#edeclarationstatement) [ASMDeclarationStatement](#easmdeclarationstatement) -## Relationships -[DECLARATIONS](#DeclarationStatementDECLARATIONS) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ForStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ForStatement](#eforstatement) -## Relationships -[CONDITION_DECLARATION](#ForStatementCONDITION_DECLARATION) -[INITIALIZER_STATEMENT](#ForStatementINITIALIZER_STATEMENT) -[ITERATION_STATEMENT](#ForStatementITERATION_STATEMENT) -[CONDITION](#ForStatementCONDITION) -[STATEMENT](#ForStatementSTATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"CONDITION_DECLARATION¹"-->ForStatementCONDITION_DECLARATION[Declaration]:::outer -``` -### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"INITIALIZER_STATEMENT¹"-->ForStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -### ITERATION_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"ITERATION_STATEMENT¹"-->ForStatementITERATION_STATEMENT[Statement]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"CONDITION¹"-->ForStatementCONDITION[Expression]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForStatement--"STATEMENT¹"-->ForStatementSTATEMENT[Statement]:::outer -``` -# CatchClause -**Labels**:[Node](#enode) [Statement](#estatement) [CatchClause](#ecatchclause) -## Relationships -[PARAMETER](#CatchClausePARAMETER) -[BODY](#CatchClauseBODY) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### PARAMETER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CatchClause--"PARAMETER¹"-->CatchClausePARAMETER[VariableDeclaration]:::outer -``` -### BODY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -CatchClause--"BODY¹"-->CatchClauseBODY[BlockStatement]:::outer -``` -# SwitchStatement -**Labels**:[Node](#enode) [Statement](#estatement) [SwitchStatement](#eswitchstatement) -## Relationships -[INITIALIZER_STATEMENT](#SwitchStatementINITIALIZER_STATEMENT) -[SELECTOR_DECLARATION](#SwitchStatementSELECTOR_DECLARATION) -[STATEMENT](#SwitchStatementSTATEMENT) -[SELECTOR](#SwitchStatementSELECTOR) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"INITIALIZER_STATEMENT¹"-->SwitchStatementINITIALIZER_STATEMENT[Statement]:::outer -``` -### SELECTOR_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"SELECTOR_DECLARATION¹"-->SwitchStatementSELECTOR_DECLARATION[Declaration]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"STATEMENT¹"-->SwitchStatementSTATEMENT[Statement]:::outer -``` -### SELECTOR -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SwitchStatement--"SELECTOR¹"-->SwitchStatementSELECTOR[Expression]:::outer -``` -# GotoStatement -**Labels**:[Node](#enode) [Statement](#estatement) [GotoStatement](#egotostatement) -## Relationships -[TARGET_LABEL](#GotoStatementTARGET_LABEL) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### TARGET_LABEL -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -GotoStatement--"TARGET_LABEL¹"-->GotoStatementTARGET_LABEL[LabelStatement]:::outer -``` -# WhileStatement -**Labels**:[Node](#enode) [Statement](#estatement) [WhileStatement](#ewhilestatement) -## Relationships -[CONDITION_DECLARATION](#WhileStatementCONDITION_DECLARATION) -[CONDITION](#WhileStatementCONDITION) -[STATEMENT](#WhileStatementSTATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CONDITION_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"CONDITION_DECLARATION¹"-->WhileStatementCONDITION_DECLARATION[Declaration]:::outer -``` -### CONDITION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"CONDITION¹"-->WhileStatementCONDITION[Expression]:::outer -``` -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -WhileStatement--"STATEMENT¹"-->WhileStatementSTATEMENT[Statement]:::outer -``` -# BlockStatement -**Labels**:[Node](#enode) [Statement](#estatement) [BlockStatement](#ecompoundstatement) -## Relationships -[STATEMENTS](#BlockStatementSTATEMENTS) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -BlockStatement--"STATEMENTS*"-->BlockStatementSTATEMENTS[Statement]:::outer -``` -# ContinueStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ContinueStatement](#econtinuestatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# DefaultStatement -**Labels**:[Node](#enode) [Statement](#estatement) [DefaultStatement](#edefaultstatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# SynchronizedStatement -**Labels**:[Node](#enode) [Statement](#estatement) [SynchronizedStatement](#esynchronizedstatement) -## Relationships -[BLOCK_STATEMENT](#SynchronizedStatementBLOCK_STATEMENT) -[EXPRESSION](#SynchronizedStatementEXPRESSION) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### BLOCK_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SynchronizedStatement--"BLOCK_STATEMENT¹"-->SynchronizedStatementBLOCK_STATEMENT[BlockStatement]:::outer -``` -### EXPRESSION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -SynchronizedStatement--"EXPRESSION¹"-->SynchronizedStatementEXPRESSION[Expression]:::outer -``` -# TryStatement -**Labels**:[Node](#enode) [Statement](#estatement) [TryStatement](#etrystatement) -## Relationships -[RESOURCES](#TryStatementRESOURCES) -[FINALLY_BLOCK](#TryStatementFINALLY_BLOCK) -[TRY_BLOCK](#TryStatementTRY_BLOCK) -[CATCH_CLAUSES](#TryStatementCATCH_CLAUSES) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RESOURCES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"RESOURCES*"-->TryStatementRESOURCES[Statement]:::outer -``` -### FINALLY_BLOCK -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"FINALLY_BLOCK¹"-->TryStatementFINALLY_BLOCK[BlockStatement]:::outer -``` -### TRY_BLOCK -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"TRY_BLOCK¹"-->TryStatementTRY_BLOCK[BlockStatement]:::outer -``` -### CATCH_CLAUSES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TryStatement--"CATCH_CLAUSES*"-->TryStatementCATCH_CLAUSES[CatchClause]:::outer -``` -# ForEachStatement -**Labels**:[Node](#enode) [Statement](#estatement) [ForEachStatement](#eforeachstatement) -## Relationships -[STATEMENT](#ForEachStatementSTATEMENT) -[VARIABLE](#ForEachStatementVARIABLE) -[ITERABLE](#ForEachStatementITERABLE) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"STATEMENT¹"-->ForEachStatementSTATEMENT[Statement]:::outer -``` -### VARIABLE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"VARIABLE¹"-->ForEachStatementVARIABLE[Statement]:::outer -``` -### ITERABLE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ForEachStatement--"ITERABLE¹"-->ForEachStatementITERABLE[Statement]:::outer -``` -# LabelStatement -**Labels**:[Node](#enode) [Statement](#estatement) [LabelStatement](#elabelstatement) -## Relationships -[SUB_STATEMENT](#LabelStatementSUB_STATEMENT) -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### SUB_STATEMENT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -LabelStatement--"SUB_STATEMENT¹"-->LabelStatementSUB_STATEMENT[Statement]:::outer -``` -# BreakStatement -**Labels**:[Node](#enode) [Statement](#estatement) [BreakStatement](#ebreakstatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# EmptyStatement -**Labels**:[Node](#enode) [Statement](#estatement) [EmptyStatement](#eemptystatement) -## Relationships -[LOCALS](#StatementLOCALS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# Declaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) -## Children -[ValueDeclaration](#evaluedeclaration) [TemplateDeclaration](#etemplatedeclaration) [EnumDeclaration](#eenumdeclaration) [TypedefDeclaration](#etypedefdeclaration) [UsingDirective](#eusingdirective) [NamespaceDeclaration](#enamespacedeclaration) [RecordDeclaration](#erecorddeclaration) [DeclarationSequence](#edeclarationsequence) [TranslationUnitDeclaration](#etranslationunitdeclaration) [IncludeDeclaration](#eincludedeclaration) -## Relationships -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ValueDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) -## Children -[FieldDeclaration](#efielddeclaration) [VariableDeclaration](#evariabledeclaration) [ProblemDeclaration](#eproblemdeclaration) [EnumConstantDeclaration](#eenumconstantdeclaration) [FunctionDeclaration](#efunctiondeclaration) [ParameterDeclaration](#eparamvariabledeclaration) [TypeParameterDeclaration](#etypeparamdeclaration) -## Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### POSSIBLE_SUB_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"POSSIBLE_SUB_TYPES*"-->ValueDeclarationPOSSIBLE_SUB_TYPES[Type]:::outer -``` -### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"TYPE¹"-->ValueDeclarationTYPE[Type]:::outer -``` -### USAGE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ValueDeclaration--"USAGE*"-->ValueDeclarationUSAGE[Reference]:::outer -``` -# FieldDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FieldDeclaration](#efielddeclaration) -## Relationships -[INITIALIZER](#FieldDeclarationINITIALIZER) -[DEFINES](#FieldDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FieldDeclaration--"INITIALIZER¹"-->FieldDeclarationINITIALIZER[Expression]:::outer -``` -### DEFINES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FieldDeclaration--"DEFINES¹"-->FieldDeclarationDEFINES[FieldDeclaration]:::outer -``` -# VariableDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [VariableDeclaration](#evariabledeclaration) -## Relationships -[INITIALIZER](#VariableDeclarationINITIALIZER) -[TEMPLATE_PARAMETERS](#VariableDeclarationTEMPLATE_PARAMETERS) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -VariableDeclaration--"INITIALIZER¹"-->VariableDeclarationINITIALIZER[Expression]:::outer -``` -### TEMPLATE_PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -VariableDeclaration--"TEMPLATE_PARAMETERS*"-->VariableDeclarationTEMPLATE_PARAMETERS[Node]:::outer -``` -# ProblemDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [ProblemDeclaration](#eproblemdeclaration) -## Relationships -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# EnumConstantDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [EnumConstantDeclaration](#eenumconstantdeclaration) -## Relationships -[INITIALIZER](#EnumConstantDeclarationINITIALIZER) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INITIALIZER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumConstantDeclaration--"INITIALIZER¹"-->EnumConstantDeclarationINITIALIZER[Expression]:::outer -``` -# FunctionDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) -## Children -[MethodDeclaration](#emethoddeclaration) -## Relationships -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) -[OVERRIDES](#FunctionDeclarationOVERRIDES) -[BODY](#FunctionDeclarationBODY) -[RECORDS](#FunctionDeclarationRECORDS) -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) -[PARAMETERS](#FunctionDeclarationPARAMETERS) -[DEFINES](#FunctionDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### THROWS_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"THROWS_TYPES*"-->FunctionDeclarationTHROWS_TYPES[Type]:::outer -``` -### OVERRIDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"OVERRIDES*"-->FunctionDeclarationOVERRIDES[FunctionDeclaration]:::outer -``` -### BODY -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"BODY¹"-->FunctionDeclarationBODY[Statement]:::outer -``` -### RECORDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"RECORDS*"-->FunctionDeclarationRECORDS[RecordDeclaration]:::outer -``` -### RETURN_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"RETURN_TYPES*"-->FunctionDeclarationRETURN_TYPES[Type]:::outer -``` -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"PARAMETERS*"-->FunctionDeclarationPARAMETERS[ParameterDeclaration]:::outer -``` -### DEFINES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionDeclaration--"DEFINES¹"-->FunctionDeclarationDEFINES[FunctionDeclaration]:::outer -``` -# MethodDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) [MethodDeclaration](#emethoddeclaration) -## Children -[ConstructorDeclaration](#econstructordeclaration) -## Relationships -[RECEIVER](#MethodDeclarationRECEIVER) -[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) -[OVERRIDES](#FunctionDeclarationOVERRIDES) -[BODY](#FunctionDeclarationBODY) -[RECORDS](#FunctionDeclarationRECORDS) -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) -[PARAMETERS](#FunctionDeclarationPARAMETERS) -[DEFINES](#FunctionDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RECEIVER -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MethodDeclaration--"RECEIVER¹"-->MethodDeclarationRECEIVER[VariableDeclaration]:::outer -``` -### RECORD_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -MethodDeclaration--"RECORD_DECLARATION¹"-->MethodDeclarationRECORD_DECLARATION[RecordDeclaration]:::outer -``` -# ConstructorDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [FunctionDeclaration](#efunctiondeclaration) [MethodDeclaration](#emethoddeclaration) [ConstructorDeclaration](#econstructordeclaration) -## Relationships -[RECEIVER](#MethodDeclarationRECEIVER) -[RECORD_DECLARATION](#MethodDeclarationRECORD_DECLARATION) -[THROWS_TYPES](#FunctionDeclarationTHROWS_TYPES) -[OVERRIDES](#FunctionDeclarationOVERRIDES) -[BODY](#FunctionDeclarationBODY) -[RECORDS](#FunctionDeclarationRECORDS) -[RETURN_TYPES](#FunctionDeclarationRETURN_TYPES) -[PARAMETERS](#FunctionDeclarationPARAMETERS) -[DEFINES](#FunctionDeclarationDEFINES) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ParameterDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [ParameterDeclaration](#eparamvariabledeclaration) -## Relationships -[DEFAULT](#ParameterDeclarationDEFAULT) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DEFAULT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ParameterDeclaration--"DEFAULT¹"-->ParameterDeclarationDEFAULT[Expression]:::outer -``` -# TypeParameterDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [ValueDeclaration](#evaluedeclaration) [TypeParameterDeclaration](#etypeparamdeclaration) -## Relationships -[DEFAULT](#TypeParameterDeclarationDEFAULT) -[POSSIBLE_SUB_TYPES](#ValueDeclarationPOSSIBLE_SUB_TYPES) -[TYPE](#ValueDeclarationTYPE) -[USAGE](#ValueDeclarationUSAGE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### DEFAULT -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypeParameterDeclaration--"DEFAULT¹"-->TypeParameterDeclarationDEFAULT[Type]:::outer -``` -# TemplateDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) -## Children -[ClassTemplateDeclaration](#eclasstemplatedeclaration) [FunctionTemplateDeclaration](#efunctiontemplatedeclaration) -## Relationships -[PARAMETERS](#TemplateDeclarationPARAMETERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TemplateDeclaration--"PARAMETERS*"-->TemplateDeclarationPARAMETERS[Declaration]:::outer -``` -# ClassTemplateDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) [ClassTemplateDeclaration](#eclasstemplatedeclaration) -## Relationships -[REALIZATION](#ClassTemplateDeclarationREALIZATION) -[PARAMETERS](#TemplateDeclarationPARAMETERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REALIZATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ClassTemplateDeclaration--"REALIZATION*"-->ClassTemplateDeclarationREALIZATION[RecordDeclaration]:::outer -``` -# FunctionTemplateDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TemplateDeclaration](#etemplatedeclaration) [FunctionTemplateDeclaration](#efunctiontemplatedeclaration) -## Relationships -[REALIZATION](#FunctionTemplateDeclarationREALIZATION) -[PARAMETERS](#TemplateDeclarationPARAMETERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REALIZATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionTemplateDeclaration--"REALIZATION*"-->FunctionTemplateDeclarationREALIZATION[FunctionDeclaration]:::outer -``` -# EnumDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [EnumDeclaration](#eenumdeclaration) -## Relationships -[ENTRIES](#EnumDeclarationENTRIES) -[SUPER_TYPE_DECLARATIONS](#EnumDeclarationSUPER_TYPE_DECLARATIONS) -[SUPER_TYPES](#EnumDeclarationSUPER_TYPES) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ENTRIES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"ENTRIES*"-->EnumDeclarationENTRIES[EnumConstantDeclaration]:::outer -``` -### SUPER_TYPE_DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"SUPER_TYPE_DECLARATIONS*"-->EnumDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer -``` -### SUPER_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -EnumDeclaration--"SUPER_TYPES*"-->EnumDeclarationSUPER_TYPES[Type]:::outer -``` -# TypedefDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TypedefDeclaration](#etypedefdeclaration) -## Relationships -[ALIAS](#TypedefDeclarationALIAS) -[TYPE](#TypedefDeclarationTYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ALIAS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypedefDeclaration--"ALIAS¹"-->TypedefDeclarationALIAS[Type]:::outer -``` -### TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TypedefDeclaration--"TYPE¹"-->TypedefDeclarationTYPE[Type]:::outer -``` -# UsingDirective -**Labels**:[Node](#enode) [Declaration](#edeclaration) [UsingDirective](#eusingdirective) -## Relationships -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# NamespaceDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [NamespaceDeclaration](#enamespacedeclaration) -## Relationships -[STATEMENTS](#NamespaceDeclarationSTATEMENTS) -[DECLARATIONS](#NamespaceDeclarationDECLARATIONS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NamespaceDeclaration--"STATEMENTS*"-->NamespaceDeclarationSTATEMENTS[Statement]:::outer -``` -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -NamespaceDeclaration--"DECLARATIONS*"-->NamespaceDeclarationDECLARATIONS[Declaration]:::outer -``` -# RecordDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [RecordDeclaration](#erecorddeclaration) -## Relationships -[IMPORTS](#RecordDeclarationIMPORTS) -[CONSTRUCTORS](#RecordDeclarationCONSTRUCTORS) -[FIELDS](#RecordDeclarationFIELDS) -[TEMPLATES](#RecordDeclarationTEMPLATES) -[STATIC_IMPORTS](#RecordDeclarationSTATIC_IMPORTS) -[RECORDS](#RecordDeclarationRECORDS) -[SUPER_TYPE_DECLARATIONS](#RecordDeclarationSUPER_TYPE_DECLARATIONS) -[STATEMENTS](#RecordDeclarationSTATEMENTS) -[METHODS](#RecordDeclarationMETHODS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### IMPORTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"IMPORTS*"-->RecordDeclarationIMPORTS[Declaration]:::outer -``` -### CONSTRUCTORS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"CONSTRUCTORS*"-->RecordDeclarationCONSTRUCTORS[ConstructorDeclaration]:::outer -``` -### FIELDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"FIELDS*"-->RecordDeclarationFIELDS[FieldDeclaration]:::outer -``` -### TEMPLATES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"TEMPLATES*"-->RecordDeclarationTEMPLATES[TemplateDeclaration]:::outer -``` -### STATIC_IMPORTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"STATIC_IMPORTS*"-->RecordDeclarationSTATIC_IMPORTS[ValueDeclaration]:::outer -``` -### RECORDS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"RECORDS*"-->RecordDeclarationRECORDS[RecordDeclaration]:::outer -``` -### SUPER_TYPE_DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"SUPER_TYPE_DECLARATIONS*"-->RecordDeclarationSUPER_TYPE_DECLARATIONS[RecordDeclaration]:::outer -``` -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"STATEMENTS*"-->RecordDeclarationSTATEMENTS[Statement]:::outer -``` -### METHODS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -RecordDeclaration--"METHODS*"-->RecordDeclarationMETHODS[MethodDeclaration]:::outer -``` -# DeclarationSequence -**Labels**:[Node](#enode) [Declaration](#edeclaration) [DeclarationSequence](#edeclarationsequence) -## Relationships -[CHILDREN](#DeclarationSequenceCHILDREN) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### CHILDREN -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -DeclarationSequence--"CHILDREN*"-->DeclarationSequenceCHILDREN[Declaration]:::outer -``` -# TranslationUnitDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [TranslationUnitDeclaration](#etranslationunitdeclaration) -## Relationships -[NAMESPACES](#TranslationUnitDeclarationNAMESPACES) -[DECLARATIONS](#TranslationUnitDeclarationDECLARATIONS) -[STATEMENTS](#TranslationUnitDeclarationSTATEMENTS) -[INCLUDES](#TranslationUnitDeclarationINCLUDES) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### NAMESPACES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"NAMESPACES*"-->TranslationUnitDeclarationNAMESPACES[NamespaceDeclaration]:::outer -``` -### DECLARATIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"DECLARATIONS*"-->TranslationUnitDeclarationDECLARATIONS[Declaration]:::outer -``` -### STATEMENTS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"STATEMENTS*"-->TranslationUnitDeclarationSTATEMENTS[Statement]:::outer -``` -### INCLUDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TranslationUnitDeclaration--"INCLUDES*"-->TranslationUnitDeclarationINCLUDES[IncludeDeclaration]:::outer -``` -# IncludeDeclaration -**Labels**:[Node](#enode) [Declaration](#edeclaration) [IncludeDeclaration](#eincludedeclaration) -## Relationships -[INCLUDES](#IncludeDeclarationINCLUDES) -[PROBLEMS](#IncludeDeclarationPROBLEMS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### INCLUDES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IncludeDeclaration--"INCLUDES*"-->IncludeDeclarationINCLUDES[IncludeDeclaration]:::outer -``` -### PROBLEMS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -IncludeDeclaration--"PROBLEMS*"-->IncludeDeclarationPROBLEMS[ProblemDeclaration]:::outer -``` -# Type -**Labels**:[Node](#enode) [Type](#etype) -## Children -[UnknownType](#eunknowntype) [ObjectType](#eobjecttype) [ParameterizedType](#eparameterizedtype) [PointerType](#epointertype) [FunctionPointerType](#efunctionpointertype) [TupleType](#etupletype) [IncompleteType](#eincompletetype) [ReferenceType](#ereferencetype) [FunctionType](#efunctiontype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### SUPER_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Type--"SUPER_TYPE*"-->TypeSUPER_TYPE[Type]:::outer -``` -# UnknownType -**Labels**:[Node](#enode) [Type](#etype) [UnknownType](#eunknowntype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ObjectType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) -## Children -[NumericType](#enumerictype) [StringType](#estringtype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### GENERICS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ObjectType--"GENERICS*"-->ObjectTypeGENERICS[Type]:::outer -``` -### RECORD_DECLARATION -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ObjectType--"RECORD_DECLARATION¹"-->ObjectTypeRECORD_DECLARATION[RecordDeclaration]:::outer -``` -# NumericType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) -## Children -[IntegerType](#eintegertype) [FloatingPointType](#efloatingpointtype) [BooleanType](#ebooleantype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# IntegerType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [IntegerType](#eintegertype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# FloatingPointType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [FloatingPointType](#efloatingpointtype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# BooleanType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [NumericType](#enumerictype) [BooleanType](#ebooleantype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# StringType -**Labels**:[Node](#enode) [Type](#etype) [ObjectType](#eobjecttype) [StringType](#estringtype) -## Relationships -[GENERICS](#ObjectTypeGENERICS) -[RECORD_DECLARATION](#ObjectTypeRECORD_DECLARATION) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ParameterizedType -**Labels**:[Node](#enode) [Type](#etype) [ParameterizedType](#eparameterizedtype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# PointerType -**Labels**:[Node](#enode) [Type](#etype) [PointerType](#epointertype) -## Relationships -[ELEMENT_TYPE](#PointerTypeELEMENT_TYPE) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### ELEMENT_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -PointerType--"ELEMENT_TYPE¹"-->PointerTypeELEMENT_TYPE[Type]:::outer -``` -# FunctionPointerType -**Labels**:[Node](#enode) [Type](#etype) [FunctionPointerType](#efunctionpointertype) -## Relationships -[PARAMETERS](#FunctionPointerTypePARAMETERS) -[RETURN_TYPE](#FunctionPointerTypeRETURN_TYPE) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionPointerType--"PARAMETERS*"-->FunctionPointerTypePARAMETERS[Type]:::outer -``` -### RETURN_TYPE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionPointerType--"RETURN_TYPE¹"-->FunctionPointerTypeRETURN_TYPE[Type]:::outer -``` -# TupleType -**Labels**:[Node](#enode) [Type](#etype) [TupleType](#etupletype) -## Relationships -[TYPES](#TupleTypeTYPES) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -TupleType--"TYPES*"-->TupleTypeTYPES[Type]:::outer -``` -# IncompleteType -**Labels**:[Node](#enode) [Type](#etype) [IncompleteType](#eincompletetype) -## Relationships -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -# ReferenceType -**Labels**:[Node](#enode) [Type](#etype) [ReferenceType](#ereferencetype) -## Relationships -[REFERENCE](#ReferenceTypeREFERENCE) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### REFERENCE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -ReferenceType--"REFERENCE¹"-->ReferenceTypeREFERENCE[Type]:::outer -``` -# FunctionType -**Labels**:[Node](#enode) [Type](#etype) [FunctionType](#efunctiontype) -## Relationships -[RETURN_TYPES](#FunctionTypeRETURN_TYPES) -[PARAMETERS](#FunctionTypePARAMETERS) -[SUPER_TYPE](#TypeSUPER_TYPE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### RETURN_TYPES -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionType--"RETURN_TYPES*"-->FunctionTypeRETURN_TYPES[Type]:::outer -``` -### PARAMETERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -FunctionType--"PARAMETERS*"-->FunctionTypePARAMETERS[Type]:::outer -``` -# AnnotationMember -**Labels**:[Node](#enode) [AnnotationMember](#eannotationmember) -## Relationships -[VALUE](#AnnotationMemberVALUE) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### VALUE -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -AnnotationMember--"VALUE¹"-->AnnotationMemberVALUE[Expression]:::outer -``` -# Component -**Labels**:[Node](#enode) [Component](#ecomponent) -## Relationships -[OUTGOING_INTERACTIONS](#ComponentOUTGOING_INTERACTIONS) -[INCOMING_INTERACTIONS](#ComponentINCOMING_INTERACTIONS) -[TRANSLATION_UNITS](#ComponentTRANSLATION_UNITS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### OUTGOING_INTERACTIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"OUTGOING_INTERACTIONS*"-->ComponentOUTGOING_INTERACTIONS[Node]:::outer -``` -### INCOMING_INTERACTIONS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"INCOMING_INTERACTIONS*"-->ComponentINCOMING_INTERACTIONS[Node]:::outer -``` -### TRANSLATION_UNITS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Component--"TRANSLATION_UNITS*"-->ComponentTRANSLATION_UNITS[TranslationUnitDeclaration]:::outer -``` -# Annotation -**Labels**:[Node](#enode) [Annotation](#eannotation) -## Relationships -[MEMBERS](#AnnotationMEMBERS) -[DFG](#NodeDFG) -[EOG](#NodeEOG) -[ANNOTATIONS](#NodeANNOTATIONS) -[AST](#NodeAST) -[SCOPE](#NodeSCOPE) -[TYPEDEFS](#NodeTYPEDEFS) -### MEMBERS -```mermaid -flowchart LR - classDef outer fill:#fff,stroke:#ddd,stroke-dasharray:5 5; classDef special fill:#afa,stroke:#5a5,stroke-dasharray:5 5; -Annotation--"MEMBERS*"-->AnnotationMEMBERS[AnnotationMember]:::outer -``` From 07a2e2e6a33ee4ffc6aaf27c5f269252ba28f96c Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Tue, 30 Jan 2024 11:41:27 +0100 Subject: [PATCH 12/17] sonar --- .../kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index 3cce89a52d..eba6da86f0 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -148,7 +148,7 @@ class Schema { val name = entity.neo4jName() ?: entity.underlyingClass.simpleName allRels[name]?.let { relationPair -> inherentRels[name] = - relationPair.filter { rel -> fields.any { it.name.equals(rel.first) } }.toSet() + relationPair.filter { rel -> fields.any { it.name == rel.first } }.toSet() } entity.propertyFields().forEach { property -> @@ -420,7 +420,7 @@ class Schema { hierarchy .map { it.key } .firstOrNull { - baseClass.typeName.split(" ").contains(it.underlyingClass.canonicalName) + it.underlyingClass.canonicalName in baseClass.typeName.split(" ") } } @@ -436,9 +436,7 @@ class Schema { private fun getNestedMultiplicity(type: Type): Boolean { if (type is ParameterizedType) { - return if ( - type.rawType.typeName.substringBeforeLast(".") == "java.util" - ) { // listOf(List::class).contains(type.rawType) + return if (type.rawType.typeName.substringBeforeLast(".") == "java.util") { true } else { type.actualTypeArguments.any { getNestedMultiplicity(it) } From 138abd501164e9a19bd73aa404fbb05de8eef7f5 Mon Sep 17 00:00:00 2001 From: Alexander Kuechler Date: Wed, 31 Jan 2024 14:47:17 +0100 Subject: [PATCH 13/17] Formatting --- .../main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index eba6da86f0..5128ce043c 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -228,8 +228,7 @@ class Schema { classInfo.neo4jName() ?: classInfo.underlyingClass.simpleName] ?: setOf() } - ?.toSet() - ?: setOf() + ?.toSet() ?: setOf() ) } } From 8ffb9d928e80d08d9ccf3c269852ae9c8ef06bfd Mon Sep 17 00:00:00 2001 From: Konrad Weiss Date: Thu, 8 Feb 2024 15:48:43 +0100 Subject: [PATCH 14/17] Add Option to print the schema into a different format --- .../aisec/cpg_vis_neo4j/Application.kt | 22 +++- .../fraunhofer/aisec/cpg_vis_neo4j/Schema.kt | 117 ++++++++++++++++-- 2 files changed, 125 insertions(+), 14 deletions(-) diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt index e0e0906d06..320cf4c04b 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Application.kt @@ -223,10 +223,16 @@ class Application : Callable { private var inferNodes: Boolean = false @CommandLine.Option( - names = ["--schema"], + names = ["--schema-markdown", "--schema"], description = ["Print the CPGs nodes and edges that they can have."] ) - private var schema: Boolean = false + private var schemaMarkdown: Boolean = false + + @CommandLine.Option( + names = ["--schema-json"], + description = ["Print the CPGs nodes and edges that they can have."] + ) + private var schemaJson: Boolean = false @CommandLine.Option( names = ["--top-level"], @@ -544,10 +550,10 @@ class Application : Callable { return translationConfiguration.build() } - private fun printSchema(filenames: Collection) { + private fun printSchema(filenames: Collection, format: Schema.Format) { val schema = Schema() schema.extractSchema() - filenames.forEach { schema.printToFile(it) } + filenames.forEach { schema.printToFile(it, format) } } /** @@ -563,8 +569,12 @@ class Application : Callable { @Throws(Exception::class, ConnectException::class, IllegalArgumentException::class) override fun call(): Int { - if (schema) { - printSchema(mutuallyExclusiveParameters.files) + if (schemaMarkdown || schemaJson) { + if (schemaMarkdown) { + printSchema(mutuallyExclusiveParameters.files, Schema.Format.MARKDOWN) + } else { + printSchema(mutuallyExclusiveParameters.files, Schema.Format.JSON) + } return EXIT_SUCCESS } diff --git a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt index 5128ce043c..4076c5e8d1 100644 --- a/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt +++ b/cpg-neo4j/src/main/kotlin/de/fraunhofer/aisec/cpg_vis_neo4j/Schema.kt @@ -38,6 +38,11 @@ import org.neo4j.ogm.metadata.MetaData class Schema { + enum class Format { + MARKDOWN, + JSON + } + private val styling = "