Что такое invokingState в реализациях класса RuleContext?

Я вижу индексы правил в JavaParser.java, но есть другое целочисленное значение, т.е. состояние вызова. Связано ли это состояние вызова с getStartToken или чем оно отличается от индексов правил?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
120
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Состояние вызова - это состояние ATN, которое использовалось для достижения правила, представленного этим контекстом правила. комментарий в исходном коде это очень хорошо объясняет:

/** What state invoked the rule associated with this context? * The "return address" is the followState of invokingState * If parent is null, this should be -1 this context object represents * the start rule. */

Вот пример:

Это ATN для правила start: e EOF;, где e представляет субправило. Состояние 4 - это состояние вызова для e, а 5 - состояние возврата (или следования). Имейте в виду, что правило может быть вызвано из многих мест, поэтому вы не можете использовать переходы из конечного состояния правила для возврата к вызывающему правилу (отсюда и необходимость в члене followState). Это состояние возврата сохраняется в Правило перехода, который переходит из состояния вызова (состояние 4 в этом примере) в состояние запуска правила e.

Другие вопросы по теме