Comments 2
Предупреждение в yy_find_shift_action очень похоже на ложное срабатывание. Если бы они хотели проверить тем условием границы индеса, то не было бы assert далее, разве нет?
Очень похоже на ложное: поле stateno
из автосгенерированного LALR-парсера явно может хранить значение, представляющее индексы в разных массивах. В зависимости от значения, может быть индексом состояния сдвига или смещённым на YY_MIN_REDUCE
индексом состояния свёртки, так что проверка вполне корректна. Здесь нет дополнительной проверки на попадание состояния в диапазон [YY_SHIFT_COUNT; YY_MIN_REDUCE)
, но она и не нужна: переменная stateno
не может быть напрямую изменена пользовательскими данными и устанавливается только в процессе перехода автомата между состояниями. Код, конечно, всё равно запутанный — но автосгенерированному коду парсера такое простительно.
Sign up to leave a comment.
Chromium: использование недостоверных данных