Здравствуйте, мне надо написать синтаксический анализатор языка для описания посредством LL(1) грамматик. (т.е. например задание : " Язык последовательностей из 0, 1 и 2, каждый член которых либо равен сумме двух предыдущих по модулю 3, либо равен 2." или "Тарабарский язык. После каждого слога вставляется одна и та же буква, например, «К». Пример. Вместо Кобралово будет КоКбраКлоКвоК." или язык предикатов и т.д.)
В итоге надо получить набор примеров и контрпримеров языка, грамматика, грамматический разбор типичного примера, проверка на однозначность ветвления, модифицированная грамматика (если нужно), синтаксические диаграммы ( в таблице из трех столбиков: правило-диаграмма-замечания), алгоритм синтаксического анализа (в таблице из трех столбиков: правило или диаграмма-оператор на псевдокоде-замечания), код синтаксического анализатора (в таблице из трех столбиков: оператор на псевдокоде-оператор в используемом АЯ-замечания) и код.
Начал читать "книгу дракона", но смущает ее размер(правда я так понимаю мне будет достаточно первых глав)
Может кто сказать что еще почитать и есть ли похожие примеры ?
Здравствуйте, barysh, Вы писали:
B>Здравствуйте, мне надо написать синтаксический анализатор языка для описания посредством LL(1) грамматик. (т.е. например задание : " Язык последовательностей из 0, 1 и 2, каждый член которых либо равен сумме двух предыдущих по модулю 3, либо равен 2." или "Тарабарский язык. После каждого слога вставляется одна и та же буква, например, «К». Пример. Вместо Кобралово будет КоКбраКлоКвоК." или язык предикатов и т.д.) B>В итоге надо получить набор примеров и контрпримеров языка, грамматика, грамматический разбор типичного примера, проверка на однозначность ветвления, модифицированная грамматика (если нужно), синтаксические диаграммы ( в таблице из трех столбиков: правило-диаграмма-замечания), алгоритм синтаксического анализа (в таблице из трех столбиков: правило или диаграмма-оператор на псевдокоде-замечания), код синтаксического анализатора (в таблице из трех столбиков: оператор на псевдокоде-оператор в используемом АЯ-замечания) и код. B>Начал читать "книгу дракона", но смущает ее размер(правда я так понимаю мне будет достаточно первых глав) B>Может кто сказать что еще почитать и есть ли похожие примеры ?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, barysh, Вы писали:
B>>Здравствуйте, мне надо написать синтаксический анализатор языка для описания посредством LL(1) грамматик. (т.е. например задание : " Язык последовательностей из 0, 1 и 2, каждый член которых либо равен сумме двух предыдущих по модулю 3, либо равен 2." или "Тарабарский язык. После каждого слога вставляется одна и та же буква, например, «К». Пример. Вместо Кобралово будет КоКбраКлоКвоК." или язык предикатов и т.д.) B>>В итоге надо получить набор примеров и контрпримеров языка, грамматика, грамматический разбор типичного примера, проверка на однозначность ветвления, модифицированная грамматика (если нужно), синтаксические диаграммы ( в таблице из трех столбиков: правило-диаграмма-замечания), алгоритм синтаксического анализа (в таблице из трех столбиков: правило или диаграмма-оператор на псевдокоде-замечания), код синтаксического анализатора (в таблице из трех столбиков: оператор на псевдокоде-оператор в используемом АЯ-замечания) и код. B>>Начал читать "книгу дракона", но смущает ее размер(правда я так понимаю мне будет достаточно первых глав) B>>Может кто сказать что еще почитать и есть ли похожие примеры ?
А>почитать можно http://citforum.ru/programming/theory/serebryakov/ А>А почему LL(1) а не LR(1)?
Потому что такое задание) а есть принципиальное отличие ?
Здравствуйте, barysh, Вы писали:
B>Начал читать "книгу дракона", но смущает ее размер(правда я так понимаю мне будет достаточно первых глав) B>Может кто сказать что еще почитать и есть ли похожие примеры ?
Из современных:
Свердлов. Языки программирования и методы трансляции
Никлаус Вирт. Построение компиляторов
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, barysh, Вы писали:
B>Здравствуйте, мне надо написать синтаксический анализатор языка для описания посредством LL(1) грамматик. (т.е. например задание : " Язык последовательностей из 0, 1 и 2, каждый член которых либо равен сумме двух предыдущих по модулю 3, либо равен 2."
Сначала надо знать что такое LL(r) грамматика. Упрощенно это грамматика которая гарантировано распознает за r шагов. Прелесть этой грамматики в том, что можно построить линейный распознаватель. Никакого отношения к предложенной далее в скобках грамматике это не имеет и иметь не может. Ее не возможно представить регулярными выражениями.
или "Тарабарский язык. После каждого слога вставляется одна и та же буква, например, «К». Пример. Вместо Кобралово будет КоКбраКлоКвоК." или язык предикатов и т.д.)
Здесь правила достаточно простые. Но все настолько стандартно, что я не вижу даже задачи. B>В итоге надо получить набор примеров и контрпримеров языка, грамматика, грамматический разбор типичного примера, проверка на однозначность ветвления, модифицированная грамматика (если нужно), синтаксические диаграммы ( в таблице из трех столбиков: правило-диаграмма-замечания), алгоритм синтаксического анализа (в таблице из трех столбиков: правило или диаграмма-оператор на псевдокоде-замечания), код синтаксического анализатора (в таблице из трех столбиков: оператор на псевдокоде-оператор в используемом АЯ-замечания) и код.
B>Начал читать "книгу дракона", но смущает ее размер(правда я так понимаю мне будет достаточно первых глав) B>Может кто сказать что еще почитать и есть ли похожие примеры ?
Дракон больше практический.. Теория более полно тех же авторов (Ахо, Ульман ) здесь. Теория синтаксического анализа, перевода и компиляции.
Здравствуйте, batu, Вы писали:
B>Здравствуйте, barysh, Вы писали:
B>>Здравствуйте, мне надо написать синтаксический анализатор языка для описания посредством LL(1) грамматик. (т.е. например задание : " Язык последовательностей из 0, 1 и 2, каждый член которых либо равен сумме двух предыдущих по модулю 3, либо равен 2." B>Сначала надо знать что такое LL(r) грамматика. Упрощенно это грамматика которая гарантировано распознает за r шагов. Прелесть этой грамматики в том, что можно построить линейный распознаватель. Никакого отношения к предложенной далее в скобках грамматике это не имеет и иметь не может. Ее не возможно представить регулярными выражениями. B> или "Тарабарский язык. После каждого слога вставляется одна и та же буква, например, «К». Пример. Вместо Кобралово будет КоКбраКлоКвоК." или язык предикатов и т.д.) B>Здесь правила достаточно простые. Но все настолько стандартно, что я не вижу даже задачи. B>>В итоге надо получить набор примеров и контрпримеров языка, грамматика, грамматический разбор типичного примера, проверка на однозначность ветвления, модифицированная грамматика (если нужно), синтаксические диаграммы ( в таблице из трех столбиков: правило-диаграмма-замечания), алгоритм синтаксического анализа (в таблице из трех столбиков: правило или диаграмма-оператор на псевдокоде-замечания), код синтаксического анализатора (в таблице из трех столбиков: оператор на псевдокоде-оператор в используемом АЯ-замечания) и код.
B>>Начал читать "книгу дракона", но смущает ее размер(правда я так понимаю мне будет достаточно первых глав) B>>Может кто сказать что еще почитать и есть ли похожие примеры ? B>Дракон больше практический.. Теория более полно тех же авторов (Ахо, Ульман ) здесь. Теория синтаксического анализа, перевода и компиляции.
Общее представление о LL грамматике я имею Но пока не полное..
Вы хотите сказать что примеры заданий(те что в скобках) не имеют отношения к LL грамматике или что ? то есть представленное задание некорректно ?
Здравствуйте, barysh, Вы писали:
B>Общее представление о LL грамматике я имею Но пока не полное.. B>Вы хотите сказать что примеры заданий(те что в скобках) не имеют отношения к LL грамматике или что ? то есть представленное задание некорректно ?
Не только LL грамматикам, а вообще к регулярным множествам.