В настоящее время я пытаюсь написать (очень) небольшой интерпретатор / компилятор для языка программирования.Я установил синтаксис для языка, и теперь мне нужно записать грамматику для языка.Я намереваюсь использовать парсер LL (1), потому что после небольшого исследования кажется, что его проще всего использовать.
Я новичок в этой области, но, как я понял, формализуя синтаксиснастоятельно рекомендуется использовать BNF или EBNF.Однако, похоже, что не все грамматики подходят для реализации с использованием синтаксического анализатора LL (1).Поэтому мне было интересно, каков был правильный (или рекомендуемый) подход к написанию грамматик в форме LL (1).
Спасибо за вашу помощь, Чарли.
PS: Я собираюсь написатьсинтаксический анализатор с использованием библиотеки Parsec Haskell.
РЕДАКТИРОВАТЬ: Кроме того, в соответствии с SK-логикой, Parsec может обрабатывать бесконечную перспективу (LL (k)?) - но я думаю, вопрос все еще стоит для этого типа грамматики.