gram:case-008
Table of Contents
Кейс 008: Язык конфигураций (gram:case-008)
Общая информация
| Уровень сложности | 🟡 Средний |
|---|---|
| Рекомендуемые языки | Python, Java |
| Основные инструменты | ANTLR4 |
| Предметная область | Информатика, конфигурирование |
Описание кейса
Разработка предметно-ориентированного языка для конфигурации учебных систем и генерации параметризованных заданий.
Грамматика языка
// Лексемы
STRING : '"' (~["\\] | '\\' .)* '"'
NUMBER : [0-9]+ ('.' [0-9]+)?
BOOL : 'true' | 'false'
ID : [a-zA-Z_][a-zA-Z_0-9]*
ASSIGN : '='
LBRACE : '{'
RBRACE : '}'
COMMA : ','
COLON : ':'
WS : [ \t\r\n]+ -> skip
// Синтаксис
config : section+
section : ID LBRACE setting* RBRACE
setting : ID ASSIGN value (COMMA value)*
value : STRING | NUMBER | BOOL | array | object
array : LBRACE value (COMMA value)* RBRACE
object : LBRACE setting* RBRACE
task_config : config constraints variants
constraints : 'constraints' LBRACE range* RBRACE
variants : 'variants' NUMBER
range : ID COLON min_max
min_max : NUMBER '..' NUMBER
План лабораторных работ
ЛР1: Лексический анализ
Задачи:
- Распознавание различных типов данных
- Поддержка структур (объекты, массивы)
- Обработка вложенных конструкций
ЛР2: Синтаксический анализ
Задачи:
- Парсер конфигурационных файлов
- Построение AST конфигурации
- Валидация структуры секций
ЛР3: Семантический анализ
Задачи:
- Проверка типов значений
- Валидация диапазонов параметров
- Генерация конфигураций по шаблонам
ЛР4: Генерация заданий
Задачи:
- Создание вариантов на основе конфигурации
- Подстановка параметров в шаблоны
- Экспорт в различные форматы
Пример конфигурации
math_task {
topic = "algebra",
difficulty = "medium",
constraints {
numbers_range = 1..100,
variables_count = 1..3
},
variants = 10
}
Педагогическое применение
Использование в школе:
- Настройка генераторов заданий
- Создание индивидуальных траекторий
- Управление сложностью материалов
← К списку | ← 007 | 009 →
gram/case-008.txt · Last modified: by eugeneai
