@@ -3,31 +3,36 @@ package eu.yeger.cyk.model
33public data class Coordinates (val row : Int , val column : Int )
44
55public sealed class CYKState {
6- public abstract val cykModel: CYKModel
7- }
6+ public abstract val model: CYKModel
7+
8+ public data class Start (
9+ public override val model : CYKModel ,
10+ ) : CYKState()
811
9- public data class CYKStart (
10- public override val cykModel : CYKModel ,
11- ) : CYKState()
12+ public data class Step (
13+ public override val model : CYKModel ,
14+ public val productionRule : ProductionRule ,
15+ public val productionRuleWasApplied : Boolean ,
16+ public val sourceCoordinates : Coordinates ,
17+ public val targetCoordinates : List <Coordinates >,
18+ ) : CYKState()
1219
13- public data class CYKStep (
14- public override val cykModel : CYKModel ,
15- public val productionRule : ProductionRule ,
16- public val ruleWasApplied : Boolean ,
17- public val sourceCoordinates : Coordinates ,
18- public val targetCoordinates : List <Coordinates >
19- ) : CYKState()
20+ public data class Done (
21+ public override val model : CYKModel ,
22+ public val wordIsMemberOfLanguage : Boolean ,
23+ ) : CYKState()
24+ }
2025
2126internal fun CYKState.stepWithRuleAt (
2227 productionRule : ProductionRule ,
2328 rowIndex : Int ,
2429 columnIndex : Int ,
2530 targetCoordinates : List <Coordinates >,
26- ): CYKStep {
27- return CYKStep (
28- cykModel = cykModel .withSymbolAt(productionRule.left, rowIndex = rowIndex, columnIndex = columnIndex),
31+ ): CYKState . Step {
32+ return CYKState . Step (
33+ model = model .withSymbolAt(productionRule.left, rowIndex = rowIndex, columnIndex = columnIndex),
2934 productionRule = productionRule,
30- ruleWasApplied = true ,
35+ productionRuleWasApplied = true ,
3136 sourceCoordinates = Coordinates (rowIndex, columnIndex),
3237 targetCoordinates = targetCoordinates,
3338 )
@@ -38,12 +43,19 @@ internal fun CYKState.stepWithoutRuleAt(
3843 rowIndex : Int ,
3944 columnIndex : Int ,
4045 targetCoordinates : List <Coordinates >,
41- ): CYKStep {
42- return CYKStep (
43- cykModel = cykModel ,
46+ ): CYKState . Step {
47+ return CYKState . Step (
48+ model = model ,
4449 productionRule = productionRule,
45- ruleWasApplied = false ,
50+ productionRuleWasApplied = false ,
4651 sourceCoordinates = Coordinates (rowIndex, columnIndex),
4752 targetCoordinates = targetCoordinates,
4853 )
4954}
55+
56+ internal fun CYKState.terminated (): CYKState .Done {
57+ return CYKState .Done (
58+ model = model,
59+ wordIsMemberOfLanguage = model.result,
60+ )
61+ }
0 commit comments