Skip to content

Реализация логических операций NOT, AND, OR и оператора относительной адресации []#19

Merged
netkeep80 merged 4 commits intonetkeep80:mainfrom
konard:issue-15-2cd565f9481f
Feb 6, 2026
Merged

Conversation

@konard
Copy link
Contributor

@konard konard commented Feb 6, 2026

Summary

Реализация следующей задачи в текущей фазе разработки (Фаза 2: Функциональность) — логические операции и механизм вычисления функций через относительную адресацию.

Fixes #15

Что реализовано

1. Логические операции NOT, AND, OR (include/avm.h)

  • Добавлены Not, And, Or в базовый словарь rel_t
  • NOT: одномерная таблица истинности через entity map — NOT[True]=False, NOT[False]=True
  • AND: двумерная таблица через частичное применение (currying) — AND[arg1][arg2]
  • OR: двумерная таблица через частичное применение — OR[arg1][arg2]
  • Реализация соответствует теоретическому описанию в amr.txt

2. Оператор относительной адресации eval() (src/main.cpp)

  • eval(func, arg) — одномерная адресация через entity map
  • eval(func, arg1, arg2) — многомерная адресация через цепочку вложенных вызовов
  • Null-safe: возвращает E при nullptr аргументах или отсутствии ключа

3. Модульные тесты (test/unit_test.cpp)

  • 30 новых тестов (всего 99 assertions):
    • Базовый словарь логических операций (9 проверок)
    • Полная таблица истинности NOT (3 проверки)
    • Полная таблица истинности AND (4 проверки)
    • Полная таблица истинности OR (4 проверки)
    • Составные выражения: NOT[AND[True][False]], AND[NOT[False]][NOT[True]] и др.
    • Null-safety тесты (3 проверки)

4. Обновление документации

  • plan.md: отмечены завершённые задачи Фазы 1 и Фазы 2
  • README.md: обновлены возможности, текущее состояние, версия
  • analysis.md: обновлена оценка зрелости проекта
  • CMakeLists.txt: версия обновлена до 0.0.2

Принцип работы

Логические операции реализованы как lookup-таблицы в entity map (ent_aspect) существующей структуры rel_t. Функция eval() выполняет поиск значения по ключу в map:

NOT[True] → (*Not).find(True) → False
AND[True][False] → (*And).find(True) → and_true → (*and_true).find(False) → False

Для AND и OR используется частичное применение (currying): первый аргумент возвращает промежуточную сущность, второй аргумент — финальный результат.

Файлы изменены

  • include/avm.h — добавлены Not, And, Or и их truth tables (+44 строки)
  • src/main.cpp — добавлен eval() и обновлена версия (+22 строки)
  • test/unit_test.cpp — 30 новых тестов (+88 строк)
  • CMakeLists.txt — версия 0.0.2
  • README.md — обновлены Features и Current Status
  • analysis.md — обновлены слабые стороны и оценка зрелости
  • plan.md — отмечены завершённые задачи

Test plan

  • Все 99 unit assertions проходят
  • Все 17 CTest тестов проходят (1 unit + 16 JSON roundtrip)
  • Сборка успешна (CMake Release)
  • Все файлы < 1500 строк
  • Существующие тесты не сломаны
  • CI проходит на Ubuntu
  • CI проходит на Windows
  • CI проходит на macOS

🤖 Generated with Claude Code

konard and others added 3 commits February 6, 2026 17:24
Adding CLAUDE.md with task information for AI processing.
This file will be removed when the task is complete.

Issue: netkeep80#15
… адресации []

- Добавлены NOT, AND, OR в базовый словарь rel_t с таблицами истинности
  через entity map (ent_aspect)
- NOT: одномерная адресация NOT[True]=False, NOT[False]=True
- AND/OR: двумерная адресация через частичное применение
  AND[arg1][arg2], OR[arg1][arg2]
- Реализован оператор eval() для вычисления функций через
  относительную адресацию в entity map
- Добавлены 30 модульных тестов: базовый словарь логических операций,
  полные таблицы истинности NOT/AND/OR, составные выражения,
  null-safety проверки

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- plan.md: отмечены завершённые задачи Фазы 1 и Фазы 2
  (логические операции, оператор [], тесты, CI/CD, кроссплатформенность)
- README.md: обновлены разделы возможностей и текущего состояния
  (добавлены NOT/AND/OR, eval, 99 тестов, CI/CD)
- analysis.md: обновлена оценка зрелости проекта
- CMakeLists.txt: версия обновлена до 0.0.2
- src/main.cpp: версия в баннере обновлена до 0.0.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] Сделать следующую задачу в текущей фазе разработки и после обновить README.md и файл фазы разработки Реализация логических операций NOT, AND, OR и оператора относительной адресации [] Feb 6, 2026
@konard konard marked this pull request as ready for review February 6, 2026 16:36
@konard
Copy link
Contributor Author

konard commented Feb 6, 2026

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $7.268586 USD
  • Calculated by Anthropic: $5.191519 USD
  • Difference: $-2.077068 (-28.58%)
    📎 Log file uploaded as Gist (1380KB)
    🔗 View complete solution draft log

Now working session is ended, feel free to review and add any feedback on the solution draft.

@netkeep80 netkeep80 merged commit 2264584 into netkeep80:main Feb 6, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants