juan_gandhi: (VP)
[personal profile] juan_gandhi
1. Is it true that transforming a word in a context-free language into an AST takes linear time and finite space (except for the growing AST), so it could be done by an FSM? If so, all the stack requirements are about evaluating the trees...

2. Say, I have a language for some kind of expressions, and I want to use the fact that operations are associative (or maybe even commutative); is there a way to stipulate it somehow; or, rather, does it give us something that can be used to facilitate compilation? I wonder...

Date: 2014-06-23 06:41 am (UTC)
From: [identity profile] justy-tylor.livejournal.com
2. Support for associative or commutative operations can be integrated into AST pattern matching. http://reference.wolfram.com/mathematica/tutorial/FlatAndOrderlessFunctions.html

Date: 2014-06-23 06:58 am (UTC)
From: [identity profile] mikhail edoshin (from livejournal.com)
1. Разобрать CF (и построить AST) без стека нельзя. Классический пример -- вложенные скобки. КА может обрабатывать вложенные скобки, но только фиксированное число уровней; если число уровней может быть произвольным, КА недостаточно.

На практике, впрочем, парсятся не вообще CF-языки, а такое их подмножество, которое позволяет построит детерминированный парсер при условии, что можно подглядеть следующий токен (или несколько следующих токенов). То есть парсер по эффективности не отличается от КА (но стек ему все равно нужен). В этом смысле, наверное, можно сказать, что да, для разбора требуется линейное время и конечная память, не считая AST.

2. В SQL такое широко используется для оптимизации запроса; насчет остальных языков затруднюсь сказать. В принципе, там будет дерево, в узле оператор, в потомках операнды; ассоциативность и коммутативность означают, что одну структуру можно заменить другой эквивалентной, и если можно оценить эффективность разных вариантов, то можно подобрать оптимальный. Но это для оптимизации; для собственно компиляции это, наверное, безразлично.

Date: 2014-06-23 02:33 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> Но это для оптимизации;

Похоже на суперкомпиляцию через эквивалентность.

Date: 2014-06-23 07:00 am (UTC)
From: [identity profile] thedeemon.livejournal.com
By "transforming a word" you mean parsing (source stream to AST)?
It depends on parsing algorithm. "takes linear time and finite space" - definitely not true, as some parsing methods may have exponential complexity. Packrat parsing (a way to implement PEG) can handle everything in linear time but still uses stack. PEG is like CFG minus ambiguity. For arbitrary CFG (with ambiguities that should be parsed and reflected in AST) there is Earley parsing:

"The Earley parser executes in cubic time in the general case {O}(n^3), where n is the length of the parsed string, quadratic time for unambiguous grammars {O}(n^2), and linear time for almost all LR(k) grammars."

Without stack, using just FSM, you're limited to regular grammars, I guess.

Date: 2014-06-23 07:08 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
вот, пришел, а уже все ответили :)

Date: 2014-06-23 02:29 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Не думаю. Если мы может строить (и модифицировать) дерево, достаточно ли его, или нужен еще стек? Ну хотя бы для однозначного случая.

Date: 2014-06-23 02:32 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Если дерево есть, можно и в фиксированной памяти визитора. На узлы надо будет навесить позиции в строке, что ли...

Правда, я так с ходу не скажу, какой алгоритм так модифицировать легче всего.

На первый взгляд кажется, что PEG, но не факт.
Edited Date: 2014-06-23 07:45 pm (UTC)

Date: 2014-06-23 11:15 am (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Похоже мозг практически не использует "некоторые методы синтаксического анализа" которые "могут иметь экспоненциальную сложность".
Edited Date: 2014-06-23 11:15 am (UTC)

Date: 2014-06-23 02:32 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Мозг не выдает всё множество результатов, он выполняет отсечение по наиболее вероятным.

Date: 2014-06-23 03:11 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Это вы про мужской мозг

Date: 2014-06-23 03:21 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Пруфы в студию.

Date: 2014-06-23 03:23 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Анна Каренина

Date: 2014-06-23 04:12 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Хвост нормального распределения

Date: 2014-06-23 04:39 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
По вашему, бросится под поезд - это нормльно? Подумаешь муж изменил, она ни первая, ни последняяю

Date: 2014-06-23 05:01 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Хорошо, Анна Каренина - ненормальная. Что также согласуется с моим аргументом "хвост нормального распределения".

На основании каких данных это утверждение распространяется на остальных женщин? ;)

женский разум

Date: 2014-06-23 05:16 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
как ивестно непредсказуем

Re: женский разум

Date: 2014-06-23 05:24 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Вот это вот "известно" - оно откуда?

Re: женский разум

Date: 2014-06-23 05:29 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Вас же никто не учил языку? вы сами научились. И вы не спрашиваете откуда младенец знает "некоторые методы синтаксического анализа" которые "могут иметь экспоненциальную сложность".

Re: женский разум

Date: 2014-06-23 06:15 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> вы сами научились

Из того, что я выучил какой-то язык, не следуюет, что женский мозг непредсказуем.

Re: женский разум

Date: 2014-06-23 06:23 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Поставим опыт.
Математики утверждают, что женский ум предсказуем. Смело.
Ну предскажите чо нить про женщин.

Re: женский разум

Date: 2014-06-23 07:03 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> Математики утверждают, что женский ум предсказуем

Вы ошибаетесь, я этого не утверждал.

Re: женский разум

Date: 2014-06-23 07:13 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
То есть предсказать женское поведение вы не сможете.
Edited Date: 2014-06-23 07:14 pm (UTC)

Re: женский разум

Date: 2014-06-23 07:22 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Да. Только из этого не следует утверждение "женский мозг не выполняет отсечение результатов".

Re: женский разум

Date: 2014-06-23 07:34 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Ну и что?
Мой вопрос в том, как же работает мозг, как работает "синаксический анализатор" мозга, как стейт-машина или с бесконечным стеком? Или ни так, ни так, а как же? Или вы не хотите ничего утверждать?
Edited Date: 2014-06-23 07:34 pm (UTC)

Re: женский разум

Date: 2014-06-23 07:41 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> анализатор (...) с бесконечным стеком
Это утверждение не имеет смысла. Хотя я полагаю, что имелось в виду "анализатор контекстно-свободной грамматики".

> стейт-машина или с бесконечным стеком?
А это, к тому же, ложный выбор, потому что естественные языки не являются ни контекстно-свободными, ни регулярными.

> вы не хотите ничего утверждать?
Я утверждаю, что между синтаксическими анализаторами женского и мужского мозга носителей одного и того же языка нет существенной разницы (она меньше, чем, например, между синтаксическим анализатором носителя флективного языка и изолирующего языка)
Edited Date: 2014-06-23 07:44 pm (UTC)

Re: женский разум

Date: 2014-06-23 07:57 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
"разница ... меньше, чем" - ну, это вы погорячились. Хотя бы потому, что разница в генетике между М и Ж гораздо старше, чем возникновение языка.
Вот например, моя собачка понимает меня в 99% случаев, но по русски не говорит. Я её понимаю хуже.
Edited Date: 2014-06-23 08:02 pm (UTC)

Re: женский разум

Date: 2014-06-23 08:04 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
Заведите суку и кобеля (от одного приплода). А потом уже сравнивайте.
Напомню, что для получения сколько-нибудь достоверных результатов эксперимент необходимо повторить хотя бы 25 раз, причем с разными экспериментаторами и породами собак.

Re: женский разум

Date: 2014-06-23 08:10 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
То есть мир непознаваем для тех,у кого нет времени и денег. Вы далеко пойдёте.

Re: женский разум

Date: 2014-06-23 08:34 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> мир непознаваем для тех,у кого нет времени и денег.
Я предпочитаю познавать мир научным методом.

> Вы далеко пойдёте.
Ну, цыплят по осени считают.

Re: женский разум

Date: 2014-06-23 08:43 pm (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Видимо у вас есть время и деньги.
Но изучать начным методом мир нелепо. Если вы вчера поставили в холодильник пиво, а утром его там не оказалось, вы будете проводить 25 раз экперимент?
Добытые знания другими людьми проверять не надо, это выпил сосед по общаге. Так же вы верите в учебник сопромата,когда поезд проезжает по мосту.

Re: женский разум

Date: 2014-06-23 09:35 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> учебник сопромата
Учебник сопромата я скачать могу, и почитать. Ну и статей полно.

А про мозги давайте ссылку на ваши источники.
Edited Date: 2014-06-23 09:36 pm (UTC)

Re: женский разум

Date: 2014-06-24 05:29 am (UTC)
From: [identity profile] Андрей Иванов (from livejournal.com)
Какие источники в наше время? Сегодня даже дети знают, что в интернете всё врут и за деньги. Я верю только свои мозгам и своей памяти.Предсказать женщину, даже жену невозможно. Это ненормальное распределение.

Re: женский разум

Date: 2014-06-24 09:27 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
> Какие источники в наше время?
PubMed, Science, Nature, в принципе и российские рецензируемые журналы тоже подошли бы.

Date: 2014-06-23 02:27 pm (UTC)
From: [identity profile] ivan-gandhi.livejournal.com
Earley requires, basically, an analog of a stack even for unambiguous grammars; not sure about LR(k).

So it's not good; but in general, can the tree we build serve as the stack? That's what I was asking.

Date: 2014-06-23 05:28 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
LR needs some temp storage that doesn't resemble parse tree, so it's hardly possible, however for recursive descent that's an interesting idea, yes. Needs some more thought and experiments to find the answer.

Date: 2014-06-26 06:18 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Here's one problem. Imagine we've got a big grammar, its BNF (or similar definition) is a big tree by itself. Now we use some variant of recursive descent for parsing. And we've got some long syntactically incorrect sentence on input. Before we understand it's incorrect we'll have to recurse a lot, trying different alternatives, but then the whole sentence will be rejected and no tree will be built for it. So we had to use some stack to track our state but we don't have any tree built, so we can't use it for our data.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

June 2025

S M T W T F S
1 2345 6 7
8 9 10 11 121314
15161718 1920 21
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 27th, 2025 06:38 pm
Powered by Dreamwidth Studios