gram:case-011
Table of Contents
Кейс 011: Простой SQL-подобный язык (gram:case-011)
Общая информация
| Уровень сложности | 🟠 Продвинутый |
|---|---|
| Рекомендуемые языки | Python, Java |
| Основные инструменты | ANTLR4 |
| Предметная область | Информатика, базы данных |
Описание кейса
Учебный язык запросов к базам данных для обучения основам SQL: SELECT-запросы, фильтрация, сортировка, агрегация.
Грамматика языка
// Лексемы
SELECT : 'SELECT'
FROM : 'FROM'
WHERE : 'WHERE'
ORDER : 'ORDER'
BY : 'BY'
ASC : 'ASC'
DESC : 'DESC'
AND : 'AND'
OR : 'OR'
NOT : 'NOT'
LIKE : 'LIKE'
IN : 'IN'
COUNT : 'COUNT'
SUM : 'SUM'
AVG : 'AVG'
MIN : 'MIN'
MAX : 'MAX'
STAR : '*'
COMMA : ','
SEMI : ';'
LPAREN : '('
RPAREN : ')'
EQ : '='
NEQ : '!='
LT : '<'
GT : '>'
LEQ : '<='
GEQ : '>='
STRING : '\'' (~['\\] | '\\' .)* '\''
NUMBER : [0-9]+ ('.' [0-9]+)?
ID : [a-zA-Z_][a-zA-Z_0-9]*
WS : [ \t\r\n]+ -> skip
// Синтаксис
query : select from where? order? limit? SEMI
select : SELECT (STAR | column (COMMA column)*)
column : (aggregate LPAREN ID RPAREN | ID) (AS ID)?
aggregate : COUNT | SUM | AVG | MIN | MAX
from : FROM ID (AS ID)?
where : WHERE condition
condition : expression ( (AND | OR) expression )*
expression : column comparison value | column IN LPAREN value (COMMA value)* RPAREN
comparison : EQ | NEQ | LT | GT | LEQ | GEQ | LIKE
value : STRING | NUMBER | ID
order : ORDER BY order_item (COMMA order_item)*
order_item : ID (ASC | DESC)?
limit : LIMIT NUMBER
План лабораторных работ
ЛР1: Лексический анализ
Задачи:
- Распознавание SQL-ключевых слов
- Поддержка агрегатных функций
- Обработка условий и операторов
ЛР2: Синтаксический анализ
Задачи:
- Парсер SELECT-запросов
- Построение AST запроса
- Валидация структуры предложений
ЛР3: Семантический анализ
Задачи:
- Проверка существования таблиц и столбцов
- Контроль типов в условиях
- Валидация агрегатных функций
ЛР4: Исполнение запросов
Задачи:
- Интерпретация запросов на учебных данных
- Сравнение с эталонным результатом
- Генерация тестовых баз данных
Пример запроса
SELECT имя, оценка FROM студенты WHERE оценка >= 4 ORDER BY оценка DESC;
Педагогическое применение
Использование в школе:
- Обучение основам баз данных
- Тренажер написания SQL-запросов
- Подготовка к олимпиадам по информатике
← К списку | ← 010 | 012 →
gram/case-011.txt · Last modified: by eugeneai
