Грамматика БНФ может быть не слишком полезной в определенных обстоятельствах ...
Написание логотипа, точно совместимого с существующей / исторической реализацией, не простая задача (я работал над таким проектом). Проблема в том, что парсер не выполняет всю работу, а оценщик (интерпретатор) должен работать с частичными данными. Рассмотрим этот пример:
proc1 a b proc2 c
Это может означать proc1 (a, b, proc2 (c)) или proc1 (a, b, proc2 (), c) в зависимости от количества параметров для proc1 и proc2.
Кроме того, известные мне интерпретаторы LOGO, например, Berkely LOGO, с беглого взгляда не пишут традиционный синтаксический анализатор, который дополнительно имеет доступ к каждой процедуре и ее арности; вместо этого они запускают процедуры, а процедуры «съедают» количество необходимых параметров. Это делает синтаксический анализатор немного наивным, и его главная роль - интерпретатор, поэтому синтаксический анализ является чем-то необычным.