А можно подробнее если не про алгоритм, то хотя бы про альтернативу EBNF? Кроме ссылок в википедию и на исходники.
EBNF задает правила генерации всех текстов на данном языке. Она так и называется пораждающая грамматика. Те она пораждает тексты. С теоритической точки зрения она просто создает всё множество текстов, которое принадлежит языку.
Аналитические грамматики разбирают текст. С теоритической точки зрения им дают все множество текстов, и они для каждого текста говорят, принадлежит ли он языку.
Таким образом, идя с двух разных сторон, мы получаем одно и то же множество текстов.
Но когда мы пишем парсер, у нас нет задачи, сгенерировать все тексты на языке.
У нас есть задача взять строку и сказать принадлежит ли она языку.
Те аналитические грамматики просто по построению подходят для парсеров лучше.