Метаязыки

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

Известно, что при описании структуры и правил использования любого искусственного языка всегда употребляют определенную систему обозначений, понятий и конструкций. Эта система позволяет представить описываемый язык при помощи объектов и отношений между ними и подчинена строгом правилам, она может сама считаться языком, либо уже известным, либо специально разработанным для описания исходного языка. Такой язык, описывающий свойства другого языка, т.е. язык второго порядка, называется метаязыком.

При описании естественного языка обычно в качестве метаязыка рекомендуется использовать тот же самый язык, например ограниченный русский для представления русского языка или ограниченный английский, который используется в машинном переводе.

Дело существенно меняется, если требуется описание искусственного языка в строящихся для определенных целей и имеющих формальные и однозначные правила построения. Эти метаязыки для искусственных языков должны иметь простую структуру и простую внутреннюю организацию. В настоящее время для описания синтаксиса искусственного языка используется ряд популярных метаязыков, их еще называют метасинтаксические языки:

1. метаязык Хомского
Пример модели на метаязыке для записи идентификатора (имени)
A1→A              A2→0                      A3→A1
A1→B              A2→1                      A3→A3A1
A1→C              A2→2…                   A3→A3A2
A1→Z              A2→9

2. расширенный язык Хомского-ШутценБерже
A1=A+B+C…+Z
A2=0+1+2+…+9
A3=A1+A3A1+A3A4

3. БНФ

<буква>: : = А|В|С...|Z
<цифра>: : =0 |1|2...9
<идентификатор>::=<буква>|<идентификатор><буква>|<идентификатор><буква>|<цифра>

P.S. Для БНФ появляются различные методы расширения, их называют РБНФ.


4. Диаграмма Вирта (введены Виртом для описания выражений и лексем языка Pascal) - это синтаксические диаграммы.

Наиболее распространенными популярным языком является БНФ, так как синтаксис большинства языков программирования описывается с помощью него (см. примеры). Основное назначение заключается в представлении в сжатом и компактном виде формальных правил написания основных конструкций языка. Любое представление языка таким образом рассматривают как цепочку основных символов и с помощью БНФ можно построить любую правильную конструкцию, из этого видно, что один из классов объектов, который использует БНФ - это основные символы языка, вторым классом объектов являются имена конструкций. Эти имена называют идентификаторами, которые являются металингвистическими переменными. Каждая формальная БНФ имеет две основные части, соединенные через стандартную связку. В правой части указывается один из нескольких вариантов построений конструкции, определенной в левой части. Причем металингвистические переменные являются классом нетерминальных символов и заключаются в < >.

 

Формы Бекуса-Наура используются с двумя основными целями:

1. они являются металингвистическим языком, стандартным для описания языков программирования;
2. они описывают правила построения текстов или конструкций.

Для того, чтобы БНФ приблизить к традиционному представлению формальной грамматики, следует осуществить ряд преобразований:

1. стандартную связку : : = заменить на →
2. < > представляются большими буквами, в основном латинскими
1. основные символы языка представляют маленькими и называют терминалами.
2. выделяется нетерминальный символ, составляющий самой первой и общей конструкции, и его называют начальным символом S.

Таким образом, множество терминальных символов, множество нетерминалов с выделенными начальными символами и множество правил вывода входят в формальное определение порождающей грамматики.

Язык, порождаемый такими грамматиками, это множество терминальных цепочек, которые можно вывести из начального символа.

Маша любит Васю
↓ ↓ ↓
Т Т Т =Vтер.
М Л В
↓ ↓ ↓
<под.> <сказ.> <доп.> =Vнетер.

[Vт, Vнт, R, S]  R  <S> → <П> <С> <Д>

<П> Маша
<С> любит
<Д> Васю

Таким образом, формальное определение порождающей грамматики состоит из 4-ки компонентов [Vт, Vнт, R, S] :

1. множество терминальных символов (словарь)
2. множество нетерминальных символов (словарь метаязыка)
3. S – начальная аксиома метаязыка
4. R – правила.