Re: Компилятоp (тpанслятоp)
- From
- Sergey I. Yevtushenko ()
- To
- All
- Date
- 2000-02-29T02:11:56Z
- Area
- RU.ALGORITHMS
From: evsi@naverex.kiev.ua (Sergey I. Yevtushenko)
On Mon, 28 Feb 100 14:15:23, "Andrey Belyakov" <andrejb@care.lv> wrote:
> > > > Раз на раз не приходится. Да и от грамматики зависит достаточно
> > > > сильно.
> > > От грамматики? Ну если только считать на счетной линейке.
> > При чем тут линейка?
> Логарифмы на ней считаются быстрее, чем на калькуляторе :)
Не вижу связи, правда.
> > > А так только время счета т.е. генерации таблиц разбора.
------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > То есть, из этой фразы надо сделать 2 вывода:
> > 1) генерить таблицы руками - предельно просто;
> Не просто, но возможно.
Я специально подчеркнул. Я, конечно, придираюсь к словам, но..
> > 2) атоматические генераторы существуют только для LR(k).
> Я этого не говорил. Но пока я не нашел процедуры для LL(1).
Плохо искал. Существуют генераторы не только LL(1), но и LL(k) парсеров.
Поройся на http://www.compilerconnection.com/topics/catalog.htm.
> Ее предпочитают _писать_ как рекурсивный спуск и кивать
> - это, мол, LL(1).
В свете того, что ты не знаешь о существовании генераторов для LL(k)
грамматик, подобное утверждение вполне резонно, но ошибочно.
> > Мне очень жаль, но ни то, ни другое не верно. Или насчет
> > первго я ошибаюсь и ты можешь построить, например, таблицы
> > для примитивного LR(1) парсера тех же арифметических
> > выражений прямо из головы?
> Могу. Где-то до 15-20 продукций можно сделать в голове.
> И еще буду _гарантировать_ их работоспособность т.е. LR(1).
Силен. Много ли людей которые смогут так поступить? А между тем
рекурсивный спуск существенно проще для восприятия, и это,
зачастую, важнее в простых задачах.
В сложных - все равно, поскольку парсер генерится не руками.
> Для арифметических выражений вообще не надо строить ни
> LL(1), ни LR(1) грамматику. Они разбираются автоматом с 16-ю
> состояниями.
Это другой вопрос.
Regards,
Sergey.
*--------------------------------------
ES@Home
--- ifmail v.2.15dev4
* Origin: ES@Home (2:5020/400)