Консольная утилита для анализа переменной массива на языке С/С++.
Позволяет отследить выход за пределы массива и обращение к несуществующему элементу при составлении циклов с заданным диапазонном изменения переменной массива.
Пригодится при разработке других программ, содержащих большое количество повторяющихся действий и сложное выражение изменения переменных цикла внутри тела цикла.
- Поддерживаемые операции в выражении:
- +, -, *, /, -1, %
- ++, -- (как постфиксная, так и префиксная)
- =, +=, -=, *=, /=
- []
- (int)
- abs(), ceil(), floor(), pow()
- Выражение в формате обратной польской записи
- Не допускается использование вложенных квадратных скобок
- Поддерживается не более 3 переменных цикла.
- При использовании нескольких переменных, циклы считаются вложенными.
- Левые и правые границы переменных считаются вложенными.
- Предоставляется информация только о первом выходе массива, но для каждого массива и измерения(если не возникает критическая ошибка).
- Если задается положительный шаг переменной цикла, то цикл будет считаться возрастающим; если отрицательный – цикл убывающий.
- Для обнаружения зацикливания переменных массива (когда их значение повторяется от шага к шагу), можно задать счетчик зацикливания. Счетчик определяет максимальное количество повторных значений переменной.
Вход:
- Однострочное выражение на языке C или С++
- Информация об использующихся в выражении переменных
- Информация об использующихся в выражении массивах
Выход:
- Файл с результатами проверки
- Файл свозникшими ошибками(если они есть)
ArrayRangeAnalyzer.exe <expression.txt> <arrs.xml> <vars.xml>
- expression.txt - файл с выражением
- arrs.xml - файл с информацией о массивах
- vars.xml - файл с информацией о переменных
- loop-counter-value - счетчик зацикливания
Примеры использования
Документация
Проект написан на языке C++ в учебных целях. Скомпилирован в Visual Studio 2013. Platform Toolset v120. Дополнительно используется Qt 5.1.1