2010-04-06 3 views
0

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

Таким образом, в случае

grammar MDD; 

//other stufff 

Автоматически это будет обрешетка MDDParser и MDDLexer, но я хотел бы иметь их как MDDBaseParser и MDDLexer.

ответ

1

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

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

// 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' 
    ; 

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

 Смежные вопросы

  • Нет связанных вопросов^_^