gram:case-012
Table of Contents
Кейс 012: Декларативный язык разметки (gram:case-012)
Общая информация
| Уровень сложности | 🟠 Продвинутый |
|---|---|
| Рекомендуемые языки | Python, Java |
| Основные инструменты | ANTLR4 |
| Предметная область | Информатика, обработка текстов |
Описание кейса
Язык для разметки учебных материалов: структурирование контента, генерация вариантов представления, экспорт в различные форматы.
Грамматика языка
// Лексемы
TITLE : 'title'
SECTION : 'section'
SUBSECTION : 'subsection'
QUESTION : 'question'
ANSWER : 'answer'
OPTION : 'option'
CORRECT : 'correct'
LBRACKET : '['
RBRACKET : ']'
LBRACE : '{'
RBRACE : '}'
EQ : '='
STRING : '"' (~["\\] | '\\' .)* '"'
NUMBER : [0-9]+
ID : [a-zA-Z_][a-zA-Z_0-9]*
WS : [ \t\r\n]+ -> skip
// Синтаксис
document : element+
element : title | section | question
title : TITLE LBRACKET STRING RBRACKET
section : SECTION LBRACKET STRING RBRACKET LBRACE element* RBRACE
subsection : SUBSECTION LBRACKET STRING RBRACKET LBRACE element* RBRACE
question : QUESTION LBRACKET attributes RBRACKET LBRACE content RBRACE
attributes : (type EQ STRING) (difficulty EQ NUMBER)?
content : text (answer | options)+
text : STRING
answer : ANSWER LBRACE expression RBRACE
options : OPTION LBRACE option_item+ RBRACE
option_item : text (CORRECT?)
expression : term ( (PLUS | MINUS) term )*
term : factor ( (MUL | DIV) factor )*
factor : NUMBER | ID | LPAREN expression RPAREN
План лабораторных работ
ЛР1: Лексический анализ
Задачи:
- Распознавание элементов разметки
- Поддержка атрибутов и метаданных
- Обработка вложенных структур
ЛР2: Синтаксический анализ
Задачи:
- Парсер структурированных документов
- Построение AST документа
- Валидация вложенности элементов
ЛР3: Семантический анализ
Задачи:
- Проверка ссылок и зависимостей
- Валидация типов вопросов
- Контроль корректности вариантов ответов
ЛР4: Генерация материалов
Задачи:
- Экспорт в GIFT-формат для Moodle
- Генерация HTML-представления
- Создание PDF-вариантов
Пример разметки
title "Контрольная работа по математике"
section "Алгебра" {
subsection "Уравнения" {
question [type="linear" difficulty=2] {
"Решите уравнение: 2x + 5 = 13"
answer { "4" }
}
}
}
Педагогическое применение
Использование в школе:
- Создание структурированных учебных материалов
- Быстрая генерация вариантов контрольных
- Подготовка интерактивных заданий
← К списку | ← 011 | 013 →
gram/case-012.txt · Last modified: by eugeneai
