(от греч. meta - после, за, позади) - язык, средствами которого исследуются и описываются свойства другого языка, называемого предметным, или объектным. Напр., когда мы начинаем изучать иностранный язык, знакомиться с его выражениями, с его грамматической структурой, системой времен, падежей и т. п., мы пользуемся для описания свойств этого пока еще не известного нам языка своим родным языком, который и выступает в данном случае в качестве М. Смешение объектного языка и М. приводит к противоречиям и парадоксам (см.: «Лжеца» парадокс). В естественном языке явного различия между объектным и М. нет: мы пользуемся одним и тем же языком и для того, чтобы говорить о внеязыковых объектах, и для того, чтобы говорить о самом языке. Только интуиция помогает нам избежать путаницы и противоречий. Однако всегда существует опасность того, что неразличение объектного и М. приведет к противоречию. Поэтому в науке, в частности в металогике и метаматематике, проводится четкое разделение этих двух языков. К М. обычно предъявляются следующие требования:
1) в нем должны быть средства для описания синтаксических свойств объектного языка, в частности средства для построения выражений объектного языка;
2) М. должен быть настолько богат по своим выразительным возможностям, чтобы для каждого выражения объектного языка в нем существовала формула, являющаяся переводом этого выражения;
3) логический словарь М. должен быть по крайней мере столь же богат, как и логический словарь объектного языка;
4) в М. должны быть дополнительные переменные, принадлежащие к более высокому типу, чем переменные объектного языка, и т. д.
Понятие метаязыка используется:
1) в лингвистике, при описании естественных языков . Метаязык как язык для описания языка. Естественный язык может являться своим же метаязыком (например, для описания русского языка можно использовать тот же русский язык), или отличаться лишь частично, например специальной терминологией (русская лингвистическая терминология — элемент метаязыка для описания русского языка;
2)при исследовании языков различных логико-математических исчислений (Например: Форма Бэкуса — Наура).
в классической философии: как понятие, фиксирующее логический инструментарий рефлексии над феноменами семиотического ряда;
3)в философии постмодернизма, при выражении процессуальности вербального продукта рефлексии над процессуальностью языка. Постмодернистская трактовка М. восходит к работе Р.Барта «Литература и метаязык» (1957)
Школьный АЯ - метаязык по отношению к языку программирования паскаль.
алг Строки с нулями (арг цел N, M, арг цел таб A[1:N, 1:M], рез цел K) дано | N>0, M>0 нач цел i, j, лит Flag K := 0 нц для i от 1 до N | цикл по всем строкам j:= 1; Flag := "Нет" нц пока (j <= M) и (Flag = "Нет") | цикл до нулевого элемента строки если A[i, j] = 0 то Flag:="Да"; K:=K+1 иначе j:=j+1 все кц кц кон
Turbo Pascal - объектный язык по отношению к школьному АЯ языку.
Program ContainZero; Uses Crt; Var A : Array[1..10, 1..10] of Integer; N, M, i, j : Integer; K : Integer; Procedure InputOutput; Begin ClrScr; Write('Количество строк - '); ReadLn(N); Write('Количество столбцов - '); ReadLn(M); For i := 1 to N do For j := 1 to M do begin Write('A[' , i , ' , ' , j , ']= ? '); ReadLn(A[i, j]) end; WriteLn; WriteLn('Исходная матрица :'); For i := 1 to N do begin For j := 1 to M do Write(A[i, j] : 5); WriteLn end; WriteLn End; Function Zero(i:Integer):Boolean; Var Flag : Boolean; Begin j:=1; Flag:=FALSE; While (j<=M) and not Flag do If A[i, j]=0 then Flag:=TRUE else j:=j+1; Zero:=Flag End; BEGIN InputOutput; K:=0; For i := 1 to N do If Zero(i) then K:=K+1; WriteLn('Количество строк, содержащих нули, равно ', K); ReadLn END.
Пример с английским языком :
we use passiv when we don't know who did something;
мы используем пассив когда мы не знаем, кто что-то сделал.
Русский язык в этом случает относится к английскому как метаязык.
Язык Бэкуса — Наура(сокр. БНФ, Бэкуса—Наура форма) — формальная система описания синтаксиса, в которой одни синтаксические категории последовательно определяются через другие категории. БНФ используется для описания контекстно-свободных формальных грамматик. Применение
Используется для описания синтаксиса языков программирования, данных, протоколов (например, в документах RFC1)) и т. д. (причем как грамматики, так и регулярной лексики, поскольку регулярные грамматики являются подмножеством контекстно-свободных).
Терминология этой статьи может расходиться с традиционной.
БНФ-конструкция определяет конечное число символов (нетерминалов). Кроме того, она определяет правила замены символа на какую-то последовательность букв (терминалов) и символов. Процесс получения цепочки букв, можно определить поэтапно: изначально имеется один символ (символы обычно заключаются в угловые скобки, а их название не несёт никакой информации). Затем этот символ заменяется на некоторую последовательность букв и символов, согласно одному из правил. Затем процесс повторяется (на каждом шаге один из символов заменяется на последовательность, согласно правилу). В конце концов, получается цепочка, состоящая из букв (и не содержащая символов). Это означает, что полученная цепочка может быть выведена из начального символа. БНФ-конструкция состоит из нескольких предложений вида
<определяемый символ> ::= <посл.1> | <посл.2> | . . . | <посл.n>
, описывающих правила. Такое правило, означает, что символ <определяемый символ> может заменяться на одну из последовательностей посл.1. Знак определения, обычно выглядит как ::=, но возможны и другие варианты.
Некоторые специальные символы, как например <пусто> означают какую-то последовательность (в данном случае — пустую).
Вот пример БНФ-конструкции, описывающей правильные скобочные последовательности:
<правпосл>::=<пусто> | (<правпосл>) | <правпосл><правпосл>
Это простая конструкция, состоящая всего из одного правила, утверждающего, что символ <правпосл> может замениться либо на пустое место, либо на этот же символ <правпосл>, заключённый в скобки, либо на два символа <правпосл> идущих подряд. Вот, как получить с помощью этой конструкции цепочку ( ( ( ) )( ) )( ) (ниже перечисляются все этапы, символы <пусто> опускаются): <правпосл> <правпосл><правпосл> (<правпосл>)<правпосл> (<правпосл>)(<правпосл>) (<правпосл>)(<пусто>) (<правпосл><правпосл>)() 2) (англ. Extended Backus–Naur Form (EBNF)) — формальная система определения синтаксиса, в которой одни синтаксические категории последовательно определяются через другие. Используется для описания контекстно-свободных формальных грамматик. Предложена Никлаусом Виртом. Является расширенной переработкой форм Бэкуса-Наура, отличается от БНФ более «ёмкими» конструкциями, позволяющими при той же выразительной способности упростить и сократить в объёме описание. === Описание === == Терминалы и нетерминалы == Как и в БНФ, описание грамматики в РБНФ представляет собой набор правил, определяющих отношения между терминальными символами (терминалами) и нетерминальными символами (нетерминалами). Терминальные символы — это минимальные элементы грамматики, не имеющие собственной грамматической структуры. В РБНФ терминальные символы — это либо предопределённые идентификаторы (имена, считающиеся заданными для данного описания грамматики), либо цепочки — последовательности символов в кавычках или апострофах. Нетерминальные символы — это элементы грамматики, имеющие собственные имена и структуру. Каждый нетерминальный символ состоит из одного или более терминальных и/или нетерминальных символов, сочетание которых определяется правилами грамматики. В РБНФ каждый нетерминальный символ имеет имя, которое представляет собой строку символов.
((<правпосл>)(<правпосл>))() ((<правпосл>)(<пусто>))() (((<правпосл>))())() (((<пусто>))())() ((())())()==== Расширенная форма Бэкуса — Наура ==== Расширенная форма Бэкуса — Наура (расширенная Бэкус — Наурова форма (РБНФ