User Tools

Site Tools


gram:case-002

Кейс 002: Мини-калькулятор (gram:case-002)

Общая информация

Уровень сложности 🟢 Начальный
Рекомендуемые языки Python
Основные инструменты ANTLR4
Предметная область Математика, вычисления

Описание кейса

Разработка калькулятора с поддержкой базовых арифметических операций, переменных и простых функций.

Грамматика языка

// Лексемы
NUMBER    : [0-9]+ ('.' [0-9]+)?
ID        : [a-zA-Z_][a-zA-Z_0-9]*
PLUS      : '+'
MINUS     : '-'  
MUL       : '*'
DIV       : '/'
ASSIGN    : '='
LPAREN    : '('
RPAREN    : ')'
NEWLINE   : '\r'? '\n'
WS        : [ \t]+ -> skip

// Синтаксис
program   : statement+ EOF
statement : expr NEWLINE
          | ID ASSIGN expr NEWLINE
   
expr      : term ( (PLUS | MINUS) term )*
term      : factor ( (MUL | DIV) factor )*
factor    : NUMBER
          | ID
          | ID LPAREN expr RPAREN  // sin(x), cos(x), sqrt(x)
          | LPAREN expr RPAREN

План лабораторных работ

ЛР1: Лексический анализ

Задачи:

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

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

Задачи:

  1. Построить парсер для арифметических выражений
  2. Реализовать приоритет операций
  3. Сгенерировать AST с узлами для операций и функций

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

Задачи:

  1. Реализовать таблицу переменных
  2. Проверить существование переменных при использовании
  3. Валидировать аргументы функций

ЛР4: Генерация кода

Задачи:

  1. Создать интерпретатор выражений
  2. Реализовать вычисление значений
  3. Добавить интерактивный режим работы

Примеры использования

// Простые вычисления
2 + 3 * 4
x = 5
y = x * 2 + 1
sin(3.14/2) + cos(0)

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

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

  1. Демонстрация приоритета операций
  2. Визуализация вычислений
  3. Проверка алгебраических преобразований

← К списку | ← 001 | 003 →

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