|
|
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
Приветствую! Формальная грамматика - T - набор терминальных символов, N - набор нетерминальных символов, S - стартовый (или целевой, или якорный, ...) символ, R - набор правил. Формальный язык - множество фраз (цепочек из терминальных символов). Какие существуют методы составления формальных грамматик для некоторого формального языка? В теории трансляторов на эту тему есть что-нибудь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 13:05:45 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
В теории трансляторов ето -- "наше все". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 13:14:28 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
Это скорее вопрос к мат лингвистике, нежели к теории трансляторов. Нужно иметь ввиду, что в общем случае язык может задаваться далеко не одной грамматикой. И как задан язык? Неужели, перечислением бесконечного множества слов (цепочек терминалов)? Если слов конечное множество, то задача тривиальна, а если бесконечное, то важно - как оно задано. Например, для регулярных языков этот способ задания языка - различные регэкспы, ну и грамматика строится через построение автомата (автомат строится по регэкспу и однозначно определяет А-грамматику). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 13:15:06 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
ноклЭто скорее вопрос к мат лингвистике, нежели к теории трансляторов. Нужно иметь ввиду, что в общем случае язык может задаваться далеко не одной грамматикой. И как задан язык? Неужели, перечислением бесконечного множества слов (цепочек терминалов)? Если слов конечное множество, то задача тривиальна, а если бесконечное, то важно - как оно задано. Например, для регулярных языков этот способ задания языка - различные регэкспы, ну и грамматика строится через построение автомата (автомат строится по регэкспу и однозначно определяет А-грамматику). Язык задается - как бы "выбросами" набора фраз. Каждый раз слов конечное множество. Вообще "бесконечность" неконструктивна. "Тривиальна" - в каком смысле? Если в смысле тривиальных правил на известном наборе, то да. В общем грамматик может быть много. И конечно грамматика нужна покомпактнее. Есть методы построения автоматов по имеющимся наборам ВХОД-ВЫХОД. Или как ещё ставится задача проектирования автомата? Здесь автомат - на входе фразы, на выходе целевой символ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 13:30:49 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
Александр, мне кажется, что вы не задаёте вопрос, а просто рассуждаете вслух. Или вы гораздо умнее, чем представилось вначале. Почитайте что-нибудь про Bizon, если вас интересует чисто "техника" создания транслирующих автоматов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 14:21:54 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
http://censura.ru/articles/chomskyandmind.htm "Хомски это Чегевара лингвистики" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:12:47 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
ХомскиТип 0: языки с фразовой структурой Это самые сложные языки, которые могут быть заданы только грамматикой, относящейся к типу 0. Для распознавания цепочек таких языков требуются вычислители, равномощные машине Тьюринга. Поэтому можно сказать, что если язык относится к типу 0, то для него невозможно построить компилятор, который гарантированно выполнял бы разбор предложений языка за ограниченное время на основе ограниченных вычислительных ресурсов. К сожалению, практически все естественные языки общения между людьми, строго говоря, относятся именно к этому типу языков. Дело в том, что структура и значение фразы естественного языка может зависеть не только от контекста данной фразы, но и от содержания того текста, где эта фраза встречается. Одно и то же слово в естественном языке может не только иметь разный смысл в зависимости от контекста, но и играть различные роли в предложении. Именно поэтому столь велики сложности в автоматизации перевода текстов, написанных на естественных языках, а также отсутствуют (и, видимо, никогда не появятся) компиляторы, которые бы воспринимали программы на основе таких языков. Далее языки с фразовой структурой рассматриваться не будут. Тип 1: контекстно-зависимые (КЗ) языки Тип 1 — второй по сложности тип языков. В общем случае время на распознавание предложений языка, относящегося к типу 1, экспоненциально зависит от длины исходной цепочки символов. Языки и грамматики, относящиеся к типу 1, применяются в анализе и переводе текстов на естественных языках. Распознаватели, построенные на их основе, позволяют анализировать тексты с учетом контекстной зависимости в предложениях входного языка (но они не учитывают содержание текста, поэтому в общем случае для точного перевода с естественного языка требуется вмешательство человека). На основе таких грамматик может выполняться автоматизированный перевод с одного естественного языка на другой, ими могут пользоваться сервисные функции проверки орфографии и правописания в языковых процессорах. В компиляторах КЗ-языки не используются, поскольку языки программирования имеют более простую структуру, поэтому здесь они подробно не рассматриваются. Тип 2: контекстно-свободные (КС) языки КС-языки лежат в основе синтаксических конструкций большинства современных языков программирования, на их основе функционируют некоторые довольно сложные командные процессоры, допускающие управляющие команды цикла и условия. В общем случае время на распознавание предложений языка, относящегося к типу 1, полиномиально зависит от длины входной цепочки символов (в зависимости от класса языка это либо кубическая, либо квадратичная зависимость). Однако среди КС-языков существует много классов языков, для которых эта зависимость линейна. Практически все языки программирования можно отнести к одному из таких классов. КС-языки подробно рассматриваются в главе 4 “Синтаксические анализаторы” данного учебника. Тип 3: регулярные языки Регулярные языки — самый простой тип языков. Поэтому они являются самым широко используемым типом языков в области вычислительных систем. Время на распознавание предложений регулярного языка линейно зависит от длины входной цепочки символов. Как уже было сказано выше, регулярные языки лежат в основе простейших конструкций языков программирования (идентификаторов, констант и т. п.), кроме того, на их основе строятся многие мнемокоды машинных команд (языки ассемблеров), а также командные процессоры, символьные управляющие команды и другие подобные структуры. Регулярные языки — очень удобное средство. Для работы с ними можно использовать регулярные множества и выражения, конечные автоматы. Регулярные языки подробно рассматриваются в главе 3 “Лексические анализаторы”. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:23:21 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
AlexandrPlus, tchingiz Мне кажется, вы упускаете из виду, что в теории единственный способ задания бесконечного языка - это грамматика (регулярные выражения как просто другая эквивалентная форма грамматики). То есть если вы говорите "бесконечный язык", то теоретически подразумеваете "грамматика, которая его порождает"; соответственно, задача "определения грамматики по языку" в таком случае теряет смысл (все равно что писать функцию, "вычисляющую" удвоенную половину своего аргумента - переливание из пустого в порожнее). Набор фраз (слов языка), если он неполон, язык не задает и не определяет. А если он полон, то язык строится как один нетерминал (начальный символ) и по одному правилу на каждое слово; если стоит задача минимизировать данную тривиальную грамматику, то так и говорите (но про решение такой задачи я пока ничего сказать не могу, кроме того что она нуждается в конкретизации и, возможно, интересна), и Хомский тут тогда совершенно ни при чем (он в цитируемом тексте пишет совершенно про обратную задачу - определение цепочки вывода слова в уже заданной грамматике (или вывод о том что анализируемое слово не принадлежит языку, определяемому, опять-таки, уже заданной грамматикой)); то же самое относится к бизону - он решает обратную задачу, грамматика является его входом, а не выходом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 16:55:09 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
нокл, Вообще я решаю прикладную задачу, но математически абстракно она выглядит как получение всех возможных цепочек некоторых символов. То есть работает программа по некоторому алгоритму получения этих цепочек. Мысль - а может быть эти цепочки могут являться порождение некоторой грамматики? Может быть вычислять не цепочки, а определить грамматику и по грамматике все цепочки бысто и просто сгенерировать? Тогда программа очень значительно и весомо оптимизируется. Не любая грамматика подходит. Собственно язык принципиально не должен быть бесконечен. И в теоретич., и в прикладном смыслах. tchingiz, типизация Хомского может быть при чём в том, чтобы пытаться искать грамматику какого-то определенного типа Желание - найти грамматику покомпактнее для простоты. Собственно и у естественных языков сперва существует язык, а потом уже определяется его грамматика. И само собой грамматик может быть много, но выбирают как бы "оптимальную", более компактную, ограничивающую и дающую свободу, но строгую. О том - бесконечный или небесконечный вопрос не стоит. Попробовать каким-то перебором получать грамматики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 18:31:18 |
|
||
|
Методы составления формальных грамматик
|
|||
|---|---|---|---|
|
#18+
Аналогично - есть задача на программирование: что-то должно делать то-то и то-то. Надо построить нормальный алгоритм Маркова. В каком-то смысле и здесь - надо найти грамматику как написать программу. То есть другую программу, которая порождала бы такие цепочки. Методы программирования в общем смысле. Можно говорить и о методах построения алгоритмов Маркова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2009, 19:04:14 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=125&tid=1344575]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 377ms |

| 0 / 0 |
