actionIndex method
Implementation
int actionIndex(int state, int symbol) {
if (state < 0 || state >= stateCount || symbol < 0) return 0;
if (state < parseTable.length) {
final row = parseTable[state];
return symbol < row.length ? row[symbol] : 0;
}
final smallIndex = state - largeStateCount;
if (smallIndex >= smallParseTableMap.length) return 0;
var position = smallParseTableMap[smallIndex];
if (position >= smallParseTable.length) return 0;
final groupCount = smallParseTable[position++];
for (var group = 0; group < groupCount; group++) {
if (position + 1 >= smallParseTable.length) return 0;
final value = smallParseTable[position++];
final count = smallParseTable[position++];
for (var index = 0; index < count; index++) {
if (position >= smallParseTable.length) return 0;
if (smallParseTable[position++] == symbol) return value;
}
}
return 0;
}