Почему подобная грамматика antrl2 не дает предупреждения о недетерминированности?

Я пытаюсь создать antlr грамматику для разбора комментариев Javadoc. Я использую ANTLR v2.

Почему первая грамматика выдает предупреждения о недетерминированности, а вторая - нет? Я думал, что они похожи.

Первая грамматика:

class TestParser extends Parser;

options {
    buildAST = true;
    k = 2;
}

startRule: START TEXT END;

class TestLexer extends Lexer;

options {
    k = 2;
}

START: "/**";
END: "*/";

TEXT: (
    {LA(2)!='/'}? '*'
    | ~('*')
    )+;

Предупреждения:

warning:lexical nondeterminism between rules START and TEXT upon
k==1:'/'
k==2:'*'
warning:lexical nondeterminism between rules END and TEXT upon
k==1:'*'
k==2:'/'

Вторая грамматика:

class TestParser extends Parser;

options {
    buildAST = true;
    k = 2;
}

startRule: "/**" TEXT "*/";

class TestLexer extends Lexer;

options {
    k = 2;
}

TEXT: (
    {LA(2)!='/'}? '*'
    | ~('*')
    )+;

0 ответов

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