loom

Форк
0
/
meta.fuze 
76 строк · 2.6 Кб
1
// Грамматика языка описания грамматики Fuze
2

3
include "fuze";
4

5
main грамматика;
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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.