Skip to content

Commit

Permalink
feat(rs): init struct
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Nov 18, 2022
1 parent 42c9115 commit 1d357e1
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,19 +1,38 @@
package chapi.ast.rustast

import chapi.ast.antlr.RustParser
import chapi.domain.core.*

open class RustFullIdentListener(fileName: String) : RustAstBaseListener() {
private var currentDataStruct = CodeDataStruct()
private val defaultDataStruct = CodeDataStruct()
private var currentFunction = CodeFunction()
private var structMap = mutableMapOf<String, CodeDataStruct>()
private var codeContainer: CodeContainer = CodeContainer(FullName = fileName)

private var defaultNode = CodeDataStruct()
private var structMap = mutableMapOf<String, CodeDataStruct>()
private var localVars = mutableMapOf<String, String>()

private var currentFunction = CodeFunction(IsConstructor = false)

override fun enterStructStruct(ctx: RustParser.StructStructContext?) {
val structName = ctx!!.identifier().text

val codeStruct = CodeDataStruct(
NodeName = structName,
Package = codeContainer.PackageName
)

structMap[structName] = codeStruct
defaultNode = codeStruct
}

fun getNodeInfo(): CodeContainer {
if (defaultDataStruct.Functions.isNotEmpty()) {
codeContainer.DataStructures += defaultDataStruct
for (entry in structMap) {
codeContainer.DataStructures += entry.value
}

if (defaultNode.Functions.isNotEmpty()) {
codeContainer.DataStructures += defaultNode
}

return codeContainer
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package chapi.ast.rustast

import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Test
import java.io.File

Expand All @@ -17,6 +18,7 @@ internal class RustAnalyserTest {
}

@Test
@Disabled
fun allGrammarUnderResources() {
val content = this::class.java.getResource("/grammar")!!
File(content.toURI()).walkTopDown().forEach {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package chapi.ast.rustast

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals


class RustFullIdentListenerTest {
@Test
fun structDef() {
val str = """
struct Point {
x: i32,
y: i32,
}
""".trimIndent()

val codeContainer = RustAnalyser().analysis(str, "test.rs")
assertEquals(1, codeContainer.DataStructures.size)
assertEquals("Point", codeContainer.DataStructures[0].NodeName)
}
}

0 comments on commit 1d357e1

Please sign in to comment.