Skip to content

Commit 52cc319

Browse files
committed
Add function to ask for operator name/kind of AST node
1 parent 9891d32 commit 52cc319

7 files changed

Lines changed: 19 additions & 11 deletions

File tree

src/main/kotlin/c/invariantAST/BinaryExpression.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@ data class BinaryExpression(val left: Expression, val op: BinaryOp, val right: E
6161
else -> "$lStr ${op.name} $rStr"
6262
}
6363
}
64+
65+
override fun nodeOpStr(): String = op.name
6466
}

src/main/kotlin/c/invariantAST/Const.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ data class Const(val value: String, val suffix: String?) : Expression() {
66
override fun normalize() = this
77
override fun toCode() = value + (suffix ?: "")
88
override fun toValue() = value + (suffix ?: "")
9+
override fun nodeOpStr(): String = "const"
910
}

src/main/kotlin/c/invariantAST/Expression.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ sealed class Expression : Node() {
44
abstract fun normalize(): Expression
55
abstract fun toCode(): String
66
abstract fun toValue(): String
7+
abstract fun nodeOpStr(): String
78
}

src/main/kotlin/c/invariantAST/Op.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ sealed class Op : Expression() {
77
override fun toCode() = name
88
override fun toValue() = name
99
override fun toString() = name
10+
override fun nodeOpStr() = name
1011
}

src/main/kotlin/c/invariantAST/TernaryExpression.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ data class TernaryExpression(val fst: Expression, val snd: Expression, val thrd:
1717

1818
override fun toValue() = str
1919

20+
override fun nodeOpStr() = "?:"
2021
}

src/main/kotlin/c/invariantAST/UnaryExpression.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,5 @@ data class UnaryExpression(val op: Op, val exp: Expression, val str: String) : E
4343
else -> "${op.name}${exp.toCode()}"
4444
}
4545

46+
override fun nodeOpStr() = op.name
4647
}
Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
package c.invariantAST
2-
3-
import kotlinx.serialization.Serializable
4-
5-
@Serializable
6-
data class Var(val name: String) : Expression() {
7-
override val abstractNodeList: List<AbstractNode> = listOf(dataNode(name))
8-
override fun <T> accept(visitor: InvariantAstVisitor<T>) = visitor.visit(this)
9-
override fun normalize() = this
10-
override fun toCode() = name
11-
override fun toValue() = name
1+
package c.invariantAST
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class Var(val name: String) : Expression() {
7+
override val abstractNodeList: List<AbstractNode> = listOf(dataNode(name))
8+
override fun <T> accept(visitor: InvariantAstVisitor<T>) = visitor.visit(this)
9+
override fun normalize() = this
10+
override fun toCode() = name
11+
override fun toValue() = name
12+
override fun nodeOpStr() = "var"
1213
}

0 commit comments

Comments
 (0)