1
/* Описание грамматики базового языка SIMODO
3
SIMODO Base Language for scripts.
11
/* Определение перечисления
12
******************************************************************************/
14
= определение_перечисления
17
определение_перечисления
18
= начало_определения_перечисления наименование_перечисления тело_перечисления ";"
20
начало_определения_перечисления
23
наименование_перечисления
28
= начало_тела_перечисления список_элементов_перечисления "}"
29
= начало_тела_перечисления список_элементов_перечисления "," "}"
31
начало_тела_перечисления
34
список_элементов_перечисления
35
= элемент_перечисления
36
= список_элементов_перечисления "," элемент_перечисления
40
= наименование_элемента_перечисления "=" значение_элемента_перечисления
41
= наименование_элемента_перечисления
43
наименование_элемента_перечисления
46
значение_элемента_перечисления
52
******************************************************************************/
54
// = определение_кортежа
58
// = начало_определения_кортежа перечень_внешних_интерфейсов название_кортежа тело_кортежа ";"
59
// = начало_определения_кортежа название_кортежа тело_кортежа ";"
60
// = начало_определения_кортежа название_кортежа ";"
63
//// TODO: Нужно предусмотреть модификаторы неизменяемых и некопируемых кортежей
64
//начало_определения_кортежа
74
// = начало_тела_кортежа перечень_членов_кортежа "}"
75
// = начало_тела_кортежа "}"
82
//перечень_членов_кортежа
83
// = определение_члена_кортежа
84
// = перечень_членов_кортежа определение_члена_кортежа
87
//определение_члена_кортежа
88
// = определение_конструктора
89
// = определение_деструктора
90
// = определение_перечисления
91
// = определение_кортежа
92
// = определение_метода
93
// = определение_атрибута
96
//определение_конструктора
97
// = наименование_функции определение_аргументов тело_функции
100
//определение_деструктора
101
// = "~" наименование_функции определение_аргументов тело_функции
105
// = начало_объявления_метода наименование_функции определение_аргументов возвращаемые_типы тело_функции
106
// = начало_объявления_метода наименование_функции определение_аргументов тело_функции
109
//начало_объявления_метода
115
//определение_атрибута
116
// = наименование_типа список_объявлений_переменных_атрибутов
118
// список_объявлений_переменных_атрибутов
119
// = определение_переменной_атрибута
120
// = список_объявлений_переменных_атрибутов "," определение_переменной_атрибута
123
//определение_переменной_атрибута
124
// = наименование_переменной_атрибута размерность_массива инициализация_переменной геттеры_сеттеры
125
// = наименование_переменной_атрибута инициализация_переменной геттеры_сеттеры
126
// = наименование_переменной_атрибута размерность_массива геттеры_сеттеры
127
// = наименование_переменной_атрибута геттеры_сеттеры
128
// = наименование_переменной_атрибута размерность_массива инициализация_переменной ";"
129
// = наименование_переменной_атрибута инициализация_переменной ";"
130
// = наименование_переменной_атрибута размерность_массива ";"
131
// = наименование_переменной_атрибута ";"
134
//наименование_переменной_атрибута
139
// = геттеры_сеттеры_с_телом_в_конце
140
// = геттеры_сеттеры_без_тела_в_конце ";"
143
//геттеры_сеттеры_с_телом_в_конце
144
// = начало_геттера_сеттера тело_функции начало_геттера_сеттера тело_функции
145
// = начало_геттера_сеттера начало_геттера_сеттера тело_функции
146
// = начало_геттера_сеттера тело_функции
149
//геттеры_сеттеры_без_тела_в_конце
150
// = начало_геттера_сеттера тело_функции начало_геттера_сеттера
151
// = начало_геттера_сеттера начало_геттера_сеттера
152
// = начало_геттера_сеттера
155
//начало_геттера_сеттера
160
/* Оператор генерации исключения
161
******************************************************************************/
163
= оператор_генерации_исключения
166
оператор_генерации_исключения
167
= "throw" выражение ";"
170
/* Оператор перехвата исключений
171
******************************************************************************/
173
= оператор_перехвата_исключений
176
оператор_перехвата_исключений
177
= начало_оператора_перехвата_исключений блок_операторов перечень_перехватов_исключений
179
начало_оператора_перехвата_исключений
183
перечень_перехватов_исключений
184
= блок_перехвата_исключения
185
= перечень_перехватов_исключений блок_перехвата_исключения
188
блок_перехвата_исключения
189
= начало_блока_перехвата_исключения "(" тип_исключения ID ")" блок_операторов
191
начало_блока_перехвата_исключения
198
/* Оператор отложенного выполнения
199
******************************************************************************/
205
= начало_оператора_отложенного_выполнения оператор_выполнения
208
начало_оператора_отложенного_выполнения