Created Expr class
parent
d084a027c5
commit
fe245c1811
@ -0,0 +1,27 @@
|
||||
val types = listOf(
|
||||
"Binary : Expr left, Token operator, Expr right",
|
||||
"Grouping : Expr expression",
|
||||
"Literal : Any value",
|
||||
"Unary : Token operator, Expr right"
|
||||
)
|
||||
|
||||
println("package fr.celticinfo.lox")
|
||||
println()
|
||||
println("sealed class Expr {")
|
||||
println("}")
|
||||
|
||||
for (type in types) {
|
||||
val parts = type.split(":")
|
||||
val name = parts[0].trim()
|
||||
val fields = parts[1].trim().split(",").map { it.trim() }
|
||||
println()
|
||||
println("data class $name(")
|
||||
for (field in fields) {
|
||||
val parts = field.split(" ")
|
||||
val type = parts[0]
|
||||
val name = parts[1]
|
||||
val sep = if (field == fields.last()) "" else ","
|
||||
println(" val $name: $type$sep")
|
||||
}
|
||||
println(") : Expr()")
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
package fr.celticinfo.lox
|
||||
|
||||
sealed class Expr {
|
||||
}
|
||||
|
||||
data class Binary(
|
||||
val left: Expr,
|
||||
val operator: Token,
|
||||
val right: Expr
|
||||
) : Expr()
|
||||
|
||||
data class Grouping(
|
||||
val expression: Expr
|
||||
) : Expr()
|
||||
|
||||
data class Literal(
|
||||
val value: Any
|
||||
) : Expr()
|
||||
|
||||
data class Unary(
|
||||
val operator: Token,
|
||||
val right: Expr
|
||||
) : Expr()
|
||||
Loading…
Reference in New Issue