Формальный язык: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
смысловая последовательность, краткость, оформление
Строка 1:
{{не путать|Функциональные стили речи|формальным стилем речи}}
В [[математическая логика|математической логике]] и [[информатика|информатике]] '''формальный язык''' — это [[множество]] конечных [[Слово (математика)|слов]] (''[[синоним|син]].'' [[строка|строк]], цепочек) над конечным [[Алфавит (информатика)#В математике|алфавитом]]. Понятие языка чаще всего используется в теории [[Абстрактный автомат|автоматов]], [[теория вычислимости|теории вычислимости]] и [[теория алгоритмов|теории алгоритмов]]. Научная теория, которая имеет дело с этими объектами, называется ''[[теория формальных языков|теорией формальных языков]]''.
 
В терминологии [[теория моделей|теории моделей]], '''язык''' соответствует не языку в информатике, а скорее алфавиту. Язык состоит из множеств символов, [[Функция (математика)|функций]] и [[отношение|отношений]] вместе с их [[арность]]ю, а также множество [[переменная|переменных]]. Каждое из этих множеств может быть бесконечным. Из языка вместе с [[Исчисление высказываний|универсальными логическими символами]] составляются логические высказывания.
Например, если алфавит задан как {''a'', ''b''}, а язык ''L'' включает в себя все слова над ним, то слово ''ababba'' принадлежит ''L''.
 
'''Пустое слово''' (то есть строка нулевой длины) допускается и часто обозначается как ''e'', ε или Λ.
 
Некоторые примеры формальных языков:
 
* множество всех слов над {''a'', ''b''}
* множество <math>\{ a^n\}</math>, где ''n'' — [[простое число]], а <math>a^{n}</math> означает, что ''a'' повторяется ''n'' раз
* множество [[синтаксис|синтаксически]] корректных [[Компьютерная программа|программ]] в данном [[язык программирования|языке программирования]]
 
== Определение ==
Формальный язык может быть определен по-разному, например:
 
Строка 19 ⟶ 13 :
* Словами, порождёнными [[Форма Бэкуса — Наура|БНФ-конструкцией]]
 
Например, еслиЕсли алфавит задан как {''a'', ''b''}, а язык ''L'' включает в себя все слова над ним, то слово ''ababba'' принадлежит ''L''. '''Пустое слово''' (то есть строка нулевой длины) допускается и часто обозначается как ''e'', ε или Λ.
 
Некоторые примеры формальных языков:
 
* множество всех слов над {''a'', ''b''}
* множество <math>\{ a^n\}</math>, где ''n'' — [[простое число]], а <math>a^{n}</math> означает, что ''a'' повторяется ''n'' раз
* множество [[синтаксис|синтаксически]] корректных [[Компьютерная программа|программ]] в данном [[язык программирования|языке программирования]]
 
== Операции ==
Некоторые операции могут быть использованы для того, чтобы порождать новые языки из данных. Предположим, что <math>L_{1}</math> и <math>L_{2}</math> являются языками, определёнными над некоторым общим алфавитом.
 
Строка 29 ⟶ 32 :
* ''Обращение'' <math>L_{1}^{R}</math> содержит обращенные слова из <math>L_{1}</math>.
* ''Смешение'' <math>L_{1}</math> и <math>L_{2}</math> содержит все слова, которые могут быть записаны в форме <math>v_{1}w_{1}v_{2}w_{2}...v_{n}w_{n}</math>, где <math>n \ge 1</math> и <math>v_{1},...,v_{n}</math> являются такими словами, что связь <math>v_{1}...v_{n}</math> находится в <math>L_{1}</math>, а <math>w_{1},...,w_{n}</math> являются такими словами, что <math>w_{1}...w_{n}</math> находятся в <math>L_{2}</math>.
 
== Другие значения ==
 
Следует помнить, что мы можем говорить о ''формальном языке'' во многих контекстах ([[наука|научном]], [[юриспруденция|юридическом]], [[лингвистика|лингвистическом]] и других), подразумевая способ выражения более осторожный и аккуратный или же более манерный, чем повседневная речь. Смысл формального языка, подразумеваемый здесь, соответствует его определению в теории формальных языков.
 
В терминологии [[теория моделей|теории моделей]], '''язык''' соответствует не языку в информатике, а скорее алфавиту. Язык состоит из множеств символов, [[Функция (математика)|функций]] и [[отношение|отношений]] вместе с их [[арность]]ю, а также множество [[переменная|переменных]]. Каждое из этих множеств может быть бесконечным. Из языка вместе с [[Исчисление высказываний|универсальными логическими символами]] составляются логические высказывания.
 
== Список литературы ==
* [[Хопкрофт, Джон|Хопкрофт, Дж.]], Мотвани, Р., Дж. Ульман (2002). ''Введение в теорию автоматов, языков и вычислений.'' Addison Wesley. ISBN 5-8459-0261-4
* ''Серебряков В.А., Галочкин М.П., Гончар Д.Р., Фуругян М.Г.'' [http://trpl.narod.ru/TRYAP_BOOK_Details.htm Теория и реализация языков программирования] //М.: МЗ-Пресс, 2006 г., 2-е изд. ISBN 94073-094-9.
* [http://trpl.narod.ru/printed_guides.htm Избранные книги по курсам «Теория и реализация языков программирования» и «Формальные языки трансляций»]
* [http://trpl.narod.ru/printed_guides.htm Подборка ссылок на литературу по направлению.]
 
[[Категория:Формальные языки|*]]