# Compiler project
## Semantic analysis
### Типы операндов
- [ ] Каст типов при операциях (сравнение, арифметика)
- [ ] Определять при не указанном типе
- [ ] Проверять соответствие значения с указанным типом (кастовать при возможности)
- [ ] Целое значение индекса/размера массива
### Циклы
- [ ] Внутри while находится bool или 1, 0, 1.0, 0.0
- [ ] Внутри for loop целые числа в range
- [ ] Числа в range должны быть в правильном порядке (возр., убыв. - reverse)
- [ ] Нельзя менять переменную цикла внутри его тела
### Декларация
- [ ] Проверка на использование до декларации
- [ ] Проверка на область видимости
- [x] Редекларация не допускается
### Функции
- [ ] Проверка возвращаемого функцией значения с указанным
- [ ] Отсутствие return в void подпрограммах
- [ ] Проверка типов аргументов функций