loom

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

3
include "lex/lex-fuze.fuze";
4

5
main грамматика;
6

7
грамматика
8
    = оператор_грамматики
9
    = грамматика оператор_грамматики
10
    ;
11
оператор_грамматики
12
    = именованный_обработчик
13
    = оператор_вставки
14
    = основная_продукция_грамматики
15
    = правило_грамматики
16
    ;
17
именованный_обработчик
18
    = ID блок_операторов
19
    ;
20
оператор_вставки
21
    = "include" файл_include ";"
22
    ;
23
    файл_include
24
        = ID | ANNOTATION
25
        ;
26
основная_продукция_грамматики
27
    = "main" ID ";"
28
    ;
29
правило_грамматики
30
    = продукция "=" список_шаблонов ";"
31
    ;
32
    продукция
33
        = ID
34
        ;
35
    список_шаблонов
36
        = шаблон
37
        = список_шаблонов разделитель_шаблонов шаблон
38
        ;
39
    разделитель_шаблонов
40
        = "|" | "="
41
        ;
42
    шаблон
43
        = список_символов
44
        = список_символов ассоциативность
45
        = список_символов блок_операторов
46
        = список_символов ассоциативность блок_операторов
47
        ;
48
    ассоциативность
49
        = "<"
50
        = ">"
51
        ;
52
    список_символов
53
        = символ
54
        = список_символов символ
55
        ;
56
    символ
57
        = ANNOTATION                        // - разные разделители в виде строковой константы (терминалы)
58
        = "ID" | "ANNOTATION" | "NUMBER"    // - метасимволы в описаниях грамматики (терминалы)
59
        = ID                                // - символы-переменные (нетерминалы = compound)
60
        ;
61

62
блок_операторов
63
        = "{" перечень_вызовов "}"
64
        ;
65

66
перечень_вызовов
67
        = вызов
68
        = перечень_вызовов вызов
69
        ;
70

71
вызов   = адресное_выражение ";"
72
        ;
73

74
адресное_выражение
75
        = атом
76
        = атом "." адресное_выражение
77
        ;
78

79
атом    = ID
80
        = ID "[" NUMBER "]"
81
        = ID "(" ")"
82
        = ID "(" список_параметров ")"
83
        ;
84

85
список_параметров
86
        = параметр
87
        = список_параметров "," параметр
88
        ;
89

90
параметр
91
        = ANNOTATION
92
        = NUMBER
93
        = адресное_выражение
94
        = "true"
95
        = "false"
96
        ;
97

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

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

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

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