Почему альтернативный символ грамматики ECMAScript RegExp остается рекурсивным? - PullRequest
0 голосов
/ 25 июня 2010

Я не могу понять, почему Альтернатива остается рекурсивной.Это действительно бросает гаечный ключ в мой парсер.

Alternative :: 
    [empty] 
    Alternative Term 

Вот примечание в части семантики спецификации, которая не совсем ясна.Может быть, причина будет раскрыта, как только я это пойму?

ПРИМЕЧАНИЕ. Последовательные термины пытаются одновременно сопоставлять последовательные части входной строки.Если левая Альтернатива, правое Термин и продолжение регулярного выражения имеют точки выбора, все варианты в сиквеле пробуются перед переходом к следующему выбору в правильном Термине, а все варианты в правильном Термине пробуются раньше.переход к следующему варианту в левой альтернативе.

Какой синтаксический анализатор может правильно обрабатывать левую рекурсивную грамматику?

1 Ответ

2 голосов
/ 25 июня 2010

Потому что для некоторых типов парсера левая рекурсия намного лучше (например, для yacc - см. Раздел 6.2 здесь для объяснения).

Если это создает проблемы для вашего конкретного анализатора, то обязательно поменяйте его местами - это никак не повлияет на определение языка.

...