===== Кейс 007: Кинематика - равномерное движение (gram:case-007) =====
=== Общая информация ===
^ Уровень сложности ^ 🟡 Средний ^
^ Рекомендуемые языки ^ Python ^
^ Основные инструменты ^ ANTLR4 ^
^ Предметная область ^ Физика 9 класс ^
=== Описание кейса ===
Система для задач на равномерное прямолинейное движение: генерация условий, проверка решений, работа с формулами.
=== Грамматика языка ===
// Лексемы
NUMBER : [0-9]+ ('.' [0-9]+)?
UNIT : 'м' | 'с' | 'м/с' | 'км' | 'ч' | 'км/ч'
ID : [vVsStT]
PLUS : '+'
MINUS : '-'
MUL : '*'
DIV : '/'
EQ : '='
LPAREN : '('
RPAREN : ')'
WS : [ \t\r\n]+ -> skip
// Синтаксис
problem : 'движение' body conditions question
body : 'тело' | 'автомобиль' | 'пешеход'
conditions : condition+
condition : (speed | distance | time) EQ value
speed : 'скорость' | 'v'
distance : 'расстояние' | 's'
time : 'время' | 't'
value : NUMBER UNIT?
question : 'найти' (speed | distance | time)
expression : term ( (PLUS | MINUS) term )*
term : factor ( (MUL | DIV) factor )*
factor : NUMBER | ID | LPAREN expression RPAREN
=== План лабораторных работ ===
==== ЛР1: Лексический анализ ====
**Задачи:**
- Распознавание физических величин и единиц
- Поддержка различных обозначений (v, скорость)
- Обработка математических операций
==== ЛР2: Синтаксический анализ ====
**Задачи:**
- Парсер условий задач по кинематике
- Построение AST физической задачи
- Валидация структуры условия
==== ЛР3: Семантический анализ ====
**Задачи:**
- Проверка размерностей величин
- Решение уравнений движения
- Контроль применения формул
==== ЛР4: Генерация задач ====
**Задачи:**
- Создание вариантов задач на движение
- Генерация числовых данных
- Проверка решений учащихся
=== Примеры задач ===
// Формулировка задачи
движение автомобиль скорость=60 км/ч, время=2 ч, найти расстояние
// Проверка решения
s = v * t = 60 * 2 = 120 км
=== Педагогическое применение ===
**Использование в школе:**
- Тренажер решения задач по кинематике
- Автоматическая проверка домашних работ
- Подготовка к ОГЭ по физике
----
[[gram:labs|← К списку]] | [[gram:case-006|← 006]] | [[gram:case-008|008 →]]