ANTLRv3: установка пользовательских имен классов Lexer и Parser - PullRequest
0 голосов
/ 06 апреля 2010

Есть ли способ указать произвольное имя класса (то есть независимо от имени грамматики) для сгенерированных ANTLRv3 классов Parser и Lexer?

То же самое для

grammar MDD;

//other stufff

Автоматическион бы создал MDDParser и MDDLexer, но я бы хотел, чтобы они были MDDBaseParser и MDDLexer.

1 Ответ

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

Нет, в объединенной грамматике, такой как MDD, анализатор и лексер называются MDDParser и MDDLexer. Объединенная грамматика - это грамматика, в которой вы не указываете тип (parser или lexer).

Вы можете определить отдельную парсер- и лексер-грамматику:

// put this in a file called MDDBaseParser.g
parser grammar MDDBaseParser;

parse
  :  Token+
  ;

и

// put this in a file called MDDLexer.g
lexer grammar MDDLexer;

Token
  :  'a'..'z'
  ;

Теперь исходные файлы парсера и лексера получат то же имя, что и их файл грамматики.

...