Antlr новичок не соответствует заданному вопросу - PullRequest
0 голосов
/ 27 января 2010

Я только начинаю с Antlr, поэтому, пожалуйста, прости вопрос noob здесь. Я потерялся. Любая помощь приветствуется.

Это мой грамматический скрипт:

grammar test;

script : 
    'begin script' IDENT ':'

    'end script' IDENT
    ;

IDENT : ('a'..'z' | 'A'..'Z') ('a'..'z'|'A'..'Z'|'0'..'9')*
    ;

Это скрипт, с которым я пытаюсь его запустить:

begin script spork:

end script spork

Результат в ANTLRWorks 1.3.1:

image

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 27 января 2010

Обычно вы хотите указать ANTLR игнорировать пробелы с помощью правила лексера:

WHITESPACE
    :   ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+
        { $channel = HIDDEN; } ;
1 голос
/ 27 января 2010

У меня нет большого опыта работы с AntLR, но я предполагаю, что лексер создает токен для новой строки, и он не соответствует вашей грамматике.

Обычно, когда вы пишете парсер, вы должны явно указать лексеру игнорировать пробелы и окончания строк. Но я могу ошибаться, это может быть то, что AntLR должен сделать для вас.

...