в ANTLR Что означают автоматически сгенерированные строки DFA, такие как eotS, eofS, acceptS и как они генерируются - PullRequest
1 голос
/ 06 апреля 2011

Когда я генерирую лексер с antlr из файла грамматики, я замечаю, что он генерирует серию строк в шестнадцатеричном формате.

Эти строки используются DFA, чтобы предсказать, какие токены могут быть следующими.

Что означают эти строки и как они генерируются.

строки, о которых я имею в виду, появляются в сгенерированном лексере следующим образом (a и передаются в DFA в конструкторе):

static final String DFA1_eotS = ....

static final String DFA1_eofS = ....

static final String DFA1_minS = ....

static final String DFA1_maxS = ....

static final String DFA1_acceptS = ....

static final String DFA1_specialS = ....                                                

static final String[] DFA1_transitionS = ....

Редактировать:

Я начну отвечать собственным вопросом, чтобы начать работу

acceptS [i] = массив, содержащий идентификатор для возможных токенов (я не знаю, почемусодержит много значений -1)

1 Ответ

1 голос
/ 06 апреля 2011

DFA_minS, DFA_maxS Я думаю, относится к диапазону символов, между которыми он может падать при перемещении по таблице состояний

DFA_transitionS .Я думаю, что это таблица состояний

DFA_specialsS Я думаю, что это связано с добавлением предикатов семантики в правила, и

DFA_acceptS кажетсянабор значений регистра в переключателе, определяющих, какой токен принимается DFA

Примечание. Я все еще хотел бы знать, верны ли они и как они генерируются

...