loom
1// Грамматика языка описания грамматики Fuze
2
3include "fuze";
4
5main грамматика;
6
7//грамматика
8// = оператор_грамматики
9// = грамматика оператор_грамматики
10// ;
11оператор_грамматики
12// = оператор_вставки
13= группа_деклараций
14// = основная_продукция_грамматики
15// = правило_грамматики
16;
17//оператор_вставки
18// = начало_оператора_втавки файл_include разделитель_операторов
19// ;
20// начало_оператора_втавки
21// = "include"
22// ;
23// файл_include
24// = ID | ANNOTATION
25// ;
26группа_деклараций
27= начало_группы_деклараций перечень_деклараций "}"
28;
29начало_группы_деклараций
30= "{"
31;
32перечень_деклараций
33= декларация
34= перечень_деклараций декларация
35;
36декларация
37= объявление_функции разделитель_операторов
38= определение_функции
39= объявление_переменной разделитель_операторов
40= определение_переменной разделитель_операторов
41;
42//основная_продукция_грамматики
43// = "main" ID разделитель_операторов
44// ;
45правило_грамматики
46= продукция "=" список_шаблонов разделитель_операторов
47;
48продукция
49= ID
50;
51список_шаблонов
52= шаблон
53= список_шаблонов разделитель_шаблонов шаблон
54;
55разделитель_шаблонов
56= "|" | "="
57;
58шаблон
59= список_символов
60= список_символов ассоциативность
61= список_символов блок_операторов
62= список_символов ассоциативность блок_операторов
63;
64ассоциативность
65= "<"
66= ">"
67;
68список_символов
69= символ
70= список_символов символ
71;
72символ
73= ANNOTATION // - разные разделители в виде строковых констант (терминалы)
74= "ID" | "ANNOTATION" | "NUMBER" // - метасимволы в описаниях грамматики (терминалы)
75= ID // - символы-переменные (нетерминалы = compaund)
76;
77
78