Pentru a spori confortul și compactitatea descrierii, se recomandă introducerea unor construcții suplimentare în limba respectivă. Există diferite forme extinse de metaj, ușor diferite unul de celălalt. Diversitatea lor este adesea explicată de dorința dezvoltatorilor de limbi de programare de a descrie limba în felul lor. Exemple de astfel de metaogene bine cunoscute includ PL / I meta-limbaj, limbajul metalic al lui Wirth, metalijul Kernigan-Ritchie care descrie Cu. Adesea, astfel de limbi se numesc forme extinse Backus-Naur (RBNF).
În particular, RBNF, utilizat de Wirth, au următoarele caracteristici:
- parantezele pătrate "[" și "]" înseamnă că construcția sintactică inclusă în ea poate să lipsească;
- bretelele curl "" înseamnă repetarea lor (posibil de 0 ori);
- parantezele "(" și ")" sunt utilizate pentru a restricționa desenele alternative;
- pentru a indica repetarea o dată sau de mai multe ori, se utilizează o combinație de brațe și o coloană "". Simbolurile nonterminale sunt reprezentate de cuvinte care exprimă înțelesul lor intuitiv și sunt scrise în limba rusă.
Dacă un nonterminal constă din mai multe cuvinte semantice, atunci acestea trebuie să fie scrise împreună. În acest caz, pentru a îmbunătăți comoditatea în perceperea expresiei, este recomandabil să începeți fiecare cuvânt cu o literă mare sau să separați cuvintele în fraze printr-un simbol de subliniere. Simbolurile terminale sunt reprezentate prin cuvinte scrise în litere ale alfabetului latin (cuvinte rezervate) sau prin șiruri de caractere cuprinse în ghilimele. Regulile sintactice sunt precedate de semnul "$" la începutul liniei. Fiecare regulă se încheie cu semnul "." (Dot). Partea stângă a regulii este separată de dreapta de semnul "=" (egal cu), iar alternativa - de linia verticală "|". În conformitate cu aceste reguli, sintaxa identificatorului va arăta astfel:
$ Litera = "" A "|" B "|" C "|" D "|" E "|" F "|" G "|" H "|" I "|" J "|" K "|" L "|" M "|" N "|" O "|" P "|" Q "|" R "|" S "|" T "|" U "|" V "|" W "|" X „| "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | „h | "I" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | „u "|" v "|" w "|" x "|" y "|" z“.
De exemplu, să descriem sintaxa limbajului de programare demonstrativă utilizând formularele Backus-Naurian.