aboutsummaryrefslogtreecommitdiff
path: root/compiler/dfa.go
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/dfa.go')
-rw-r--r--compiler/dfa.go16
1 files changed, 9 insertions, 7 deletions
diff --git a/compiler/dfa.go b/compiler/dfa.go
index 049ff3e..de2c451 100644
--- a/compiler/dfa.go
+++ b/compiler/dfa.go
@@ -112,18 +112,20 @@ func genTransitionTable(dfa *DFA) (*spec.TransitionTable, error) {
acc[state2Num[s]] = id
}
- tran := make([][]int, len(dfa.States)+1)
+ rowCount := len(dfa.States) + 1
+ colCount := 256
+ tran := make([]int, rowCount*colCount)
for s, tab := range dfa.TransitionTable {
- entry := make([]int, 256)
for v, to := range tab {
- entry[v] = state2Num[to]
+ tran[state2Num[s]*256+v] = state2Num[to]
}
- tran[state2Num[s]] = entry
}
return &spec.TransitionTable{
- InitialState: state2Num[dfa.InitialState],
- AcceptingStates: acc,
- Transition: tran,
+ InitialState: state2Num[dfa.InitialState],
+ AcceptingStates: acc,
+ UncompressedTransition: tran,
+ RowCount: rowCount,
+ ColCount: colCount,
}, nil
}