Кіріспе
Метатілдес фразалар мен сөйлемдердің рұқсат етілген құрылымы мен құрамы. Метасинтаксис – бағдарламалау тілінің немесе формальды тілдің синтаксисін анықтауға қолданылатын синтаксис. Ол табиғи тілді немесе компьютерлік бағдарламалау тілін сипаттау үшін қолданылатын метатілдегі фразалар мен сөйлемдердің рұқсат етілген құрылымы мен құрамын сипаттайды. Компьютерлік тілдер үшін кеңінен қолданылатын формальды метатілдердің кейбіреулері – Backus–Naur формасы (BNF), кеңейтілген Backus–Naur формасы (EBNF), Wirth синтаксистік нотациясы (WSN) және күшейтілген Backus–Naur формасы (ABNF). Метатілдердің әрқайсысының терминалдық символдардан, терминалдық емес символдардан және метасимволдардан тұратын өзіндік метасинтаксисі бар. Терминалдық символ, мысалы, сөз немесе таңба, анықталатын тілдегі жеке құрылым болып табылады. Терминалдық емес символ – синтаксистік категорияны білдіреді, ол n элементтен тұратын бір немесе бірнеше жарамды фразеологиялық немесе сөйлемдік құрылымды анықтайды. Метасимволдар берілген метасинтаксисте денотациялық мақсаттар үшін синтаксистік ақпаратты ұсынады. Терминалдар, терминалдық емес символдар және метасимволдар барлық метатілдерде қолданылмайды. Әдетте, таңба деңгейіндегі тілдерге арналған метатілдерде (формальды түрде «реттелі тілдер» деп аталады) терминалдық емес символдар болмайды, себебі осы реттелі тілдерде ішкі енгізілмеу мәселесі туындамайды. Ағылшын тілі, белгілі бір тілдерді сипаттау үшін метатіл ретінде, метасимволдарды қамтымайды, өйткені барлық түсіндірмелерді ағылшын тіліндегі сөз тіркестерін қолдану арқылы жасауға болады. Тек рекурсивті тілдерді сипаттау үшін қолданылатын кейбір формальды метатілдер (формальды түрде контекстсіз тілдер деп аталады) өз метасинтаксисінде терминалдарды, терминалдық емес символдарды және метасимволдарды қамтиды.
A metasyntax is a syntax used to define the syntax of a programming language or formal language. It describes the allowable structure and composition of phrases and sentences of a metalanguage, which is used to describe either a natural language or a computer programming language. Some of the widely used formal metalanguages for computer languages are Backus–Naur form (BNF), extended Backus–Naur form (EBNF), Wirth syntax notation (WSN), and augmented Backus–Naur form (ABNF). Metalanguages have their own metasyntax each composed of terminal symbols, nonterminal symbols, and metasymbols. A terminal symbol, such as a word or a token, is a stand alone structure in a language being defined. A nonterminal symbol represents a syntactic category, which defines one or more valid phrasal or sentence structure consisted of an n element subset. Metasymbols provide syntactic information for denotational purposes in a given metasyntax. Terminals, nonterminals, and metasymbols do not apply across all metalanguages. Typically, the metalanguage for token level languages (formally called "regular languages") does not have nonterminals because nesting is not an issue in these regular languages. English, as a metalanguage for describing certain languages, does not contain metasymbols since all explanation could be done using English expression. There are only certain formal metalanguages used for describing recursive languages (formally called context free languages) that have terminals, nonterminals, and metasymbols in their metasyntax.
Метасинтаксис элементі
Терминалдар: дербес синтаксистік құрылым. Терминалдарды олардың атауларын қос тырнақшаға алып көрсету арқылы белгілеуге болады. мысалы: "a", "b", "c". Терминал емес: элементтердің ішкі жиынынан құралған, қабылданған синтаксистік құрылымдар жиынтығын анықтайтын символдық бейнелеу. Терминал емес элементтерді бұрыштық жақшалармен көрсетуге болады. мысалы: <S>, <A>, <B>. Метасимвол: синтаксистік ақпаратты көрсететін символдық бейнелеу. мысалы: ::, |, ., ∅, ε.
Nonterminals: a symbolic representation defining a set of allowable syntactic structures that is composed of a subset of elements. Nonterminals could be denoted by angle bracketing the name of the nonterminals. e. g. , ,
Metasymbol: a symbolic representation denoting syntactic information. e. g. , , , , ,
Сөз тіркесін аяқтау әдістері
Қатар қою: м.ғ.
Кезектестік: м.ғ.
Қайталау: м.ғ.
Қолданылатын тіркес: м.ғ.
Топтастыру: м.ғ.
Alternation: e. g.
Repetition: e. g.
Optional phrase: e. g.
Grouping: e. g.
Стандарттық келісім
'Backus–Naur формасы' синтаксистік санаттың атын бұрышты жақшаға алып қою арқылы аяқталмайтын символдарды, ал аяқталған символдарды қос тырнақшаға алып қою арқылы көрсетеді. Аяқталған символдар туындыру ережесінде метасимволдың сол жағында ешқашан пайда бола алмайды. Оң жақтағы анықтаманың мәні бірнеше баламалы формалардан құралуы мүмкін, әр баламалы синтаксистік құрылым метасимволмен бөлінеді. Осы баламалы құрылымдардың әрқайсысы аяқталған немесе аяқталмаған болуы мүмкін. 'Extended Backus–Naur формасы' BNF-дегі барлық мүмкіндіктерді пайдаланады және қосымша мүмкіндіктер үшін тағы екі метасимвол енгізеді. Осы екі жаңа мүмкіндіктің бірі, сөйлемдегі қосымша сөз тіркесін квадрат жақшаға алып қою арқылы белгілеу үшін қолданылады. Екінші мүмкіндік, сөз тіркесін нөл немесе одан көп рет қайталау үшін жиін жақшаға алып қою арқылы қолданылады. 'Wirth синтаксис белгісі' EBNF-дегі барлық мүмкіндіктерді пайдаланады, бірақ аяқталмаған символдар міндетті түрде бұрышты жақшаға алынбайды, бірақ өндіріс ережесінде оң жағында әрқашан анықталады. Сондай-ақ, әрбір аяқталмаған символты нақты анықтау қажет емес. және сияқты аяқталмаған символдар ASCII символы және сәйкесінше бос орын ретінде анықталады. 'Augmented Backus–Naur формасы' синтаксистік санаттың аты ретінде бір сөздік атауды әріппен бастау арқылы аяқталмайтын символдарды көрсетеді. Бұрышты жақшалар қажет емес. Аяқталған символдар қос тырнақшаға алынған сөздермен немесе келесі сандық құрылыммен белгіленеді: a , содан кейін немесе немесе , содан кейін сандық мән немесе сандық мәндердің тізбегі. Метасимвол екі сандық мәннің арасында мән диапазонын көрсету үшін орналастырылады. BNF сияқты, ABNF-тің аяқталған символдары туындыру ережесінде метасимволдың сол жағында ешқашан пайда болмайды. Метасимвол баламаларды көрсетеді. Анықтаманың мәніндегі элементтерді бөлу үшін бос орын қолданылады. ABNF-де қайталау метасинтаксисінің бірнеше түрі бар. Элемент алдындағы элементті нөл немесе одан көп рет қайталауды білдіреді. Сандық мәннен кейін сандық мәннен кейін элемент элементтің ең кем дегенде рет және ең көп дегенде рет қайталанатынын білдіреді. Элемент алдындағы жалғыз сандық мән элементтің рет қайталанатынын білдіреді. Түсініктемелер метасимволдан кейін жазылуы мүмкін. EBNF сияқты, квадрат жақшаға алынған сөз тіркесі сөз тіркесінің міндетті емес екенін білдіреді.
Вариациялар
Бұл формальды метатілдердің метасинтаксистік конвенциясы әлі формалданып біткен жоқ. Әртүрлі компьютерлік бағдарламалау тілдерінің анықтамалық нұсқаулықтарында көптеген метасинтаксистік нұсқалар немесе кеңейтулер кездеседі. Терминал емес және терминалдарды белгілеудің стандартты конвенциясының бір түрі – бұрышты жақшалар мен тырнақшалар сияқты метасимволдарды жою және мақсатталған сөздерге шрифттерді қолдану. Мысалы, Ada тілінде синтаксистік категориялар мақсатталған сөздердің немесе символдардың үстіне кішкенә әріптермен sans serif шрифтын қолдану арқылы белгіленеді. Ada тіліндегі барлық терминал сөздер немесе символдар және (оның ішінде) арасындағы кодтық позиция таңбаларынан тұрады. Әрбір таңбалар жинағының анықтамасы ISO/IEC 10646:2003 халықаралық стандартында сипатталған. C және Java тілдерінде синтаксистік категориялар курсивпен, ал терминал символдары готика шрифтімен белгіленеді. J тілінде метасинтаксис J тілінің синтаксисын сипаттау үшін метасимволдарды қолданбайды. Керісінше, барлық синтаксистік түсіндірмелер ағылшын тіліне өте ұқсас «Сөздік» деп аталатын метатілде жасалады, ол J үшін ерекше құжатталған.
Ұзартулардың артықшылығы
Жаңа кеңейтулердің мақсаты – қарапайым және бірмәнді метасинтаксис ұсыну. Қарапайымдық тұрғысынан алғанда, BNF метанотациясы метасинтаксисті оқуды жеңілдетпейді, себебі ашық және жабық метасимволдар тым жиі кездеседі. Бірмәнділік тұрғысынан алғанда, BNF метанотациясы қажетсіз күрделіліктер тудырады, өйткені олар жиі терминалдық символдар ретінде қолданылады, мысалы, тырнақшалар, апострофтар, кішіден үлкен белгілер немесе кері белгілер. Кеңейтілген метасинтаксис жоғарыда айтылған күрделілікті азайту үшін әріптердің регистрі, қаріптері және кодтық орны сияқты қасиеттерді пайдаланады. Бұдан өзге, кейбір металл тілдері макет ережелері үшін метасинтаксикалық мүмкіндіктерді енгізу үшін қаріптік бөлгіш санаттарын қолданады, бұл мүмкіндіктер BNF-та ресми түрде қолдау таппайды.