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)