User Tools

Site Tools


gram:case-008

Кейс 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: Лексический анализ

Задачи:

  1. Распознавание различных типов данных
  2. Поддержка структур (объекты, массивы)
  3. Обработка вложенных конструкций

ЛР2: Синтаксический анализ

Задачи:

  1. Парсер конфигурационных файлов
  2. Построение AST конфигурации
  3. Валидация структуры секций

ЛР3: Семантический анализ

Задачи:

  1. Проверка типов значений
  2. Валидация диапазонов параметров
  3. Генерация конфигураций по шаблонам

ЛР4: Генерация заданий

Задачи:

  1. Создание вариантов на основе конфигурации
  2. Подстановка параметров в шаблоны
  3. Экспорт в различные форматы

Пример конфигурации

math_task {
    topic = "algebra",
    difficulty = "medium",
    constraints {
        numbers_range = 1..100,
        variables_count = 1..3
    },
    variants = 10
}

Педагогическое применение

Использование в школе:

  1. Настройка генераторов заданий
  2. Создание индивидуальных траекторий
  3. Управление сложностью материалов

← К списку | ← 007 | 009 →

gram/case-008.txt · Last modified: by eugeneai