Используют ли производственные компиляторы генераторы синтаксического анализатора?

Я слышал, что «настоящие разработчики компиляторов» используют собственный синтаксический анализатор, а не используют его генераторы. Я также слышал, что генераторы парсеров не подходят для реальных языков. Предположительно, есть много частных случаев, которые сложно реализовать с помощью генератора парсеров. У меня есть сомнения по этому поводу:

  1. Теоретически генератор синтаксического анализатора GLR должен уметь обрабатывать большинство конструкций языков программирования (кроме, может быть, C ++ ...)
  2. Я знаю по крайней мере один рабочий язык, который использует генератор синтаксического анализатора: Ruby [1].
  3. Когда я посещал свой класс компиляторов в школе, мы использовали генератор синтаксического анализатора.

Итак, мой вопрос: разумно ли писать производственный компилятор, используя генератор синтаксического анализатора, или использовать генератор синтаксического анализатора, который считается плохое дизайнерское решение сообщества компиляторов?

[1] https://github.com/ruby/ruby/blob/trunk/parse.y

5
задан Matt Fichman 17 June 2011 в 16:39
поделиться