| Уровень сложности | 🟠 Продвинутый |
|---|---|
| Рекомендуемые языки | 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
Задачи:
Задачи:
Задачи:
Задачи:
title "Контрольная работа по математике"
section "Алгебра" {
subsection "Уравнения" {
question [type="linear" difficulty=2] {
"Решите уравнение: 2x + 5 = 13"
answer { "4" }
}
}
}
Использование в школе:
← К списку | ← 011 | 013 →