powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Методы составления формальных грамматик
10 сообщений из 10, страница 1 из 1
Методы составления формальных грамматик
    #35902947
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!
Формальная грамматика - T - набор терминальных символов, N - набор нетерминальных символов, S - стартовый (или целевой, или якорный, ...) символ, R - набор правил.
Формальный язык - множество фраз (цепочек из терминальных символов).

Какие существуют методы составления формальных грамматик для некоторого формального языка?

В теории трансляторов на эту тему есть что-нибудь?
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35902978
Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Q
Гость
В теории трансляторов ето -- "наше все". :)
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35902982
нокл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это скорее вопрос к мат лингвистике, нежели к теории трансляторов.
Нужно иметь ввиду, что в общем случае язык может задаваться далеко не одной грамматикой.
И как задан язык? Неужели, перечислением бесконечного множества слов (цепочек терминалов)? Если слов конечное множество, то задача тривиальна, а если бесконечное, то важно - как оно задано.
Например, для регулярных языков этот способ задания языка - различные регэкспы, ну и грамматика строится через построение автомата (автомат строится по регэкспу и однозначно определяет А-грамматику).
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35903053
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ноклЭто скорее вопрос к мат лингвистике, нежели к теории трансляторов.
Нужно иметь ввиду, что в общем случае язык может задаваться далеко не одной грамматикой.
И как задан язык? Неужели, перечислением бесконечного множества слов (цепочек терминалов)? Если слов конечное множество, то задача тривиальна, а если бесконечное, то важно - как оно задано.
Например, для регулярных языков этот способ задания языка - различные регэкспы, ну и грамматика строится через построение автомата (автомат строится по регэкспу и однозначно определяет А-грамматику).

Язык задается - как бы "выбросами" набора фраз.
Каждый раз слов конечное множество. Вообще "бесконечность" неконструктивна.
"Тривиальна" - в каком смысле? Если в смысле тривиальных правил на известном наборе, то да.
В общем грамматик может быть много. И конечно грамматика нужна покомпактнее.
Есть методы построения автоматов по имеющимся наборам ВХОД-ВЫХОД. Или как ещё ставится задача проектирования автомата?
Здесь автомат - на входе фразы, на выходе целевой символ?
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35903274
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр, мне кажется, что вы не задаёте вопрос, а просто рассуждаете вслух. Или вы гораздо умнее, чем представилось вначале. Почитайте что-нибудь про Bizon, если вас интересует чисто "техника" создания транслирующих автоматов.
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35903732
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://censura.ru/articles/chomskyandmind.htm
"Хомски это Чегевара лингвистики"
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35903773
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХомскиТип 0: языки с фразовой структурой Это самые сложные языки, которые могут быть заданы только грамматикой, относящейся к типу 0. Для распознавания цепочек таких языков требуются вычислители, равномощные машине Тьюринга. Поэтому можно сказать, что если язык относится к типу 0, то для него невозможно построить компилятор, который гарантированно выполнял бы разбор предложений языка за ограниченное время на основе ограниченных вычислительных ресурсов.
К сожалению, практически все естественные языки общения между людьми, строго говоря, относятся именно к этому типу языков. Дело в том, что структура и значение фразы естественного языка может зависеть не только от контекста данной фразы, но и от содержания того текста, где эта фраза встречается. Одно и то же слово в естественном языке может не только иметь разный смысл в зависимости от контекста, но и играть различные роли в предложении. Именно поэтому столь велики сложности в автоматизации перевода текстов, написанных на естественных языках, а также отсутствуют (и, видимо, никогда не появятся) компиляторы, которые бы воспринимали программы на основе таких языков.
Далее языки с фразовой структурой рассматриваться не будут.
Тип 1: контекстно-зависимые (КЗ) языки
Тип 1 — второй по сложности тип языков. В общем случае время на распознавание предложений языка, относящегося к типу 1, экспоненциально зависит от длины исходной цепочки символов.
Языки и грамматики, относящиеся к типу 1, применяются в анализе и переводе текстов на естественных языках. Распознаватели, построенные на их основе, позволяют анализировать тексты с учетом контекстной зависимости в предложениях входного языка (но они не учитывают содержание текста, поэтому в общем случае для точного перевода с естественного языка требуется вмешательство человека). На основе таких грамматик может выполняться автоматизированный перевод с одного естественного языка на другой, ими могут пользоваться сервисные функции проверки орфографии и правописания в языковых процессорах.
В компиляторах КЗ-языки не используются, поскольку языки программирования имеют более простую структуру, поэтому здесь они подробно не рассматриваются.
Тип 2: контекстно-свободные (КС) языки
КС-языки лежат в основе синтаксических конструкций большинства современных языков программирования, на их основе функционируют некоторые довольно сложные командные процессоры, допускающие управляющие команды цикла и условия.
В общем случае время на распознавание предложений языка, относящегося к типу 1, полиномиально зависит от длины входной цепочки символов (в зависимости от класса языка это либо кубическая, либо квадратичная зависимость). Однако среди КС-языков существует много классов языков, для которых эта зависимость линейна. Практически все языки программирования можно отнести к одному из таких классов. КС-языки подробно рассматриваются в главе 4 “Синтаксические анализаторы” данного учебника.
Тип 3: регулярные языки
Регулярные языки — самый простой тип языков. Поэтому они являются самым широко используемым типом языков в области вычислительных систем. Время на распознавание предложений регулярного языка линейно зависит от длины входной цепочки символов.
Как уже было сказано выше, регулярные языки лежат в основе простейших конструкций языков программирования (идентификаторов, констант и т. п.), кроме того, на их основе строятся многие мнемокоды машинных команд (языки ассемблеров), а также командные процессоры, символьные управляющие команды и другие подобные структуры.
Регулярные языки — очень удобное средство. Для работы с ними можно использовать регулярные множества и выражения, конечные автоматы. Регулярные языки подробно рассматриваются в главе 3 “Лексические анализаторы”.
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35903889
нокл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexandrPlus, tchingiz
Мне кажется, вы упускаете из виду, что в теории единственный способ задания бесконечного языка - это грамматика (регулярные выражения как просто другая эквивалентная форма грамматики). То есть если вы говорите "бесконечный язык", то теоретически подразумеваете "грамматика, которая его порождает"; соответственно, задача "определения грамматики по языку" в таком случае теряет смысл (все равно что писать функцию, "вычисляющую" удвоенную половину своего аргумента - переливание из пустого в порожнее).
Набор фраз (слов языка), если он неполон, язык не задает и не определяет. А если он полон, то язык строится как один нетерминал (начальный символ) и по одному правилу на каждое слово; если стоит задача минимизировать данную тривиальную грамматику, то так и говорите (но про решение такой задачи я пока ничего сказать не могу, кроме того что она нуждается в конкретизации и, возможно, интересна), и Хомский тут тогда совершенно ни при чем (он в цитируемом тексте пишет совершенно про обратную задачу - определение цепочки вывода слова в уже заданной грамматике (или вывод о том что анализируемое слово не принадлежит языку, определяемому, опять-таки, уже заданной грамматикой)); то же самое относится к бизону - он решает обратную задачу, грамматика является его входом, а не выходом.
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35904161
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нокл,
Вообще я решаю прикладную задачу, но математически абстракно она выглядит
как получение всех возможных цепочек некоторых символов. То есть работает программа по
некоторому алгоритму получения этих цепочек.
Мысль - а может быть эти цепочки могут являться порождение некоторой грамматики?
Может быть вычислять не цепочки, а определить грамматику и по грамматике все цепочки бысто и просто сгенерировать?
Тогда программа очень значительно и весомо оптимизируется.
Не любая грамматика подходит.
Собственно язык принципиально не должен быть бесконечен. И в теоретич., и в прикладном смыслах.

tchingiz,
типизация Хомского может быть при чём в том, чтобы пытаться искать грамматику какого-то определенного типа

Желание - найти грамматику покомпактнее для простоты.
Собственно и у естественных языков сперва существует язык, а потом уже определяется его грамматика.
И само собой грамматик может быть много, но выбирают как бы "оптимальную", более компактную, ограничивающую и дающую свободу, но строгую.
О том - бесконечный или небесконечный вопрос не стоит.


Попробовать каким-то перебором получать грамматики?
...
Рейтинг: 0 / 0
Методы составления формальных грамматик
    #35904232
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аналогично - есть задача на программирование: что-то должно делать то-то и то-то.
Надо построить нормальный алгоритм Маркова.

В каком-то смысле и здесь - надо найти грамматику как написать программу.
То есть другую программу, которая порождала бы такие цепочки.

Методы программирования в общем смысле.

Можно говорить и о методах построения алгоритмов Маркова.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Методы составления формальных грамматик
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]