LCOV - code coverage report
Current view: top level - src/common - obstacle.cpp (source / functions) Hit Total Coverage
Test: flower-f.info Lines: 66 113 58.4 %
Date: 2022-06-10 00:44:15 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include <iostream>
       2             : #include "common/obstacle.hpp"
       3             : 
       4          34 : void Obstacle::describe(void) const {
       5          34 :     switch (r) {
       6           0 :         case PANIC:
       7           0 :             std::cout << "Компилятор в панике." << std::endl;
       8           0 :             break;
       9           0 :         case PROG_START: expected("program"); break;
      10           0 :         case PROG_OPENBR: expected("{"); break;
      11           1 :         case FUNC_OPENBR: expected("("); break;
      12           1 :         case FUNC_CLOSEBR: expected(")"); break;
      13           0 :         case OP_CLOSEBR:
      14           0 :         case PROG_CLOSEBR: expected("}"); break;
      15           0 :         case SEMICOLON: expected(";"); break;
      16           0 :         case BAD_PARAMS_OPBR: expected("("); break;
      17           0 :         case BAD_PARAMS_CLBR:
      18           0 :         case EXPR_CLOSEBR: expected(")"); break;
      19           1 :         case BAD_INT: expected("целое число"); break;
      20           1 :         case BAD_REAL: expected("вещественное число"); break;
      21           1 :         case BAD_BOOL: expected("true или false"); break;
      22           1 :         case WRONG_SCOPE: 
      23           1 :             std::cout << "Неизвестная область программы." << std::endl;
      24           1 :             break;
      25           1 :         case BAD_IDENT:
      26           1 :             std::cout << "Плохой идентификатор." << std::endl;
      27           1 :             break;
      28           1 :         case BAD_STRING:
      29           1 :             std::cout << "Плохая строка." << std::endl;
      30           1 :             break;
      31           0 :         case TYPE_UNKNOWN:
      32           0 :             std::cout << "Неизвестный тип." << std::endl;
      33           0 :             break;
      34           3 :         case EXPR_BAD_TYPE:
      35           3 :             std::cout << "Неподходящий тип выражения." << std::endl;
      36           3 :             break;
      37           0 :         case BAD_OPERATOR:
      38           0 :             std::cout << "Плохой оператор." << std::endl;
      39           0 :             break;
      40           7 :         case IDENT_NOT_DEF:
      41           7 :             std::cout << "Идентификатор не описан." << std::endl;
      42           7 :             break;
      43           1 :         case IDENT_DUP:
      44           1 :             std::cout << "Повторное описание идентификатора." << std::endl;
      45           1 :             break;
      46           3 :         case BAD_IF:
      47           3 :             std::cout << "Выражение должно быть условным." << std::endl;
      48           3 :             break;
      49           0 :         case BAD_LABEL:
      50           0 :             std::cout << "Перемещаться можно только по метке." << std::endl;
      51           0 :             break;
      52           0 :         case BAD_EXPR:
      53           0 :             std::cout << "Неверное выражение." << std::endl;
      54           0 :             break;
      55           1 :         case BREAK_OUTSIDE_CYCLE: 
      56           1 :             std::cout << "Break вне цикла." << std::endl;
      57           1 :             break;
      58           1 :         case CONTINUE_OUTSIDE_CYCLE:
      59           1 :             std::cout << "Continue вне цикла." << std::endl;
      60           1 :             break;
      61           0 :         case BAD_STRUCT:
      62           0 :             std::cout << "Плохое описание структуры." << std::endl;
      63           0 :             break;
      64           0 :         case STRUCT_UNDEF:
      65           0 :             std::cout << "Структура не описана." << std::endl;
      66           0 :             break;
      67           0 :         case LABEL_OR_IDENT: 
      68           0 :             std::cout << "Этот идентификатор описан не как метка." << std::endl;
      69           0 :             break;
      70           0 :         case TOO_MUCH_PARAMS:
      71           0 :             std::cout << "Слишком много формальных параметров." << std::endl;
      72           0 :             break;
      73           0 :         case NOT_CALLABLE:
      74           0 :             std::cout << "Этот объект нельзя вызвать как функцию." << std::endl;
      75           0 :             break;
      76           0 :         case CALLABLE:
      77           0 :             std::cout << "Нельзя проводить арифметические операции над функцией. Возможно, Вы забыли \"()\"." << std::endl;
      78           0 :             break;
      79           0 :         case LACK_PARAMS:
      80           0 :             std::cout << "Недостаточно параметров." << std::endl;
      81           0 :             break;
      82           1 :         case PROCEDURE:
      83           1 :             std::cout << "Процедуры не поддерживаются." << std::endl;
      84           1 :             break;
      85           1 :         case BAD_PARAMS_COUNT:
      86           1 :             std::cout << "Неверное количество фактических параметров." << std::endl;
      87           1 :             break;
      88           1 :         case NO_RETURN:
      89           1 :             std::cout << "Нет выхода из функции." << std::endl;
      90           1 :             break;
      91           1 :         case NO_TYPE: expected("тип функции"); break;
      92           1 :         case RETURN_TYPE_MISMATCH:
      93           1 :             std::cout << "Неверный тип возвращаемого параметра." << std::endl;
      94           1 :             break;
      95           1 :         case MODIF_WITHOUT_TYPE:
      96           1 :             std::cout << "Модификатор должен использоваться с типом переменной." << std::endl;
      97           1 :             break;
      98           1 :         case BAD_TYPE:
      99           1 :             std::cout << "Плохой тип." << std::endl;
     100           1 :             break;
     101           1 :         case NEED_THREAD_NUMBER:
     102           1 :             std::cout << "Поток должен иметь свой номер, отделённый двоеточием." << std::endl;
     103           1 :             break;
     104           1 :         case NESTED_THREADS:
     105           1 :             std::cout << "Вложенное описание потоков запрещено." << std::endl;
     106           1 :             break;
     107           1 :         case PRIVATE_VAR_IN_THREAD:
     108           1 :             std::cout << "В потоках можно использовать только общие переменные." << std::endl;
     109           1 :             break;
     110           0 :         default:
     111           0 :             std::cout << "Неизвестная ошибка." << std::endl;
     112           0 :             break;
     113             :     }
     114          34 : }
     115             : 
     116           6 : void Obstacle::expected(const char * msg) {
     117           6 :     std::cout << "Ожидалось получить " << msg << '.' << std::endl;
     118           6 : }

Generated by: LCOV version 1.14