diff --git a/lab4/cmilan/src/scanner.cpp b/lab4/cmilan/src/scanner.cpp index 29f5474..4d269d0 100644 --- a/lab4/cmilan/src/scanner.cpp +++ b/lab4/cmilan/src/scanner.cpp @@ -28,6 +28,8 @@ static const char * tokenNames_[] = { "'('", "')'", "';'", + "'++'", + "'--'", }; void Scanner::nextToken() @@ -185,15 +187,31 @@ void Scanner::nextToken() //Знаки операций. Для "+"/"-" получим лексему операции типа сложнения, и соответствующую операцию. //для "*" - лексему операции типа умножения case '+': - token_ = T_ADDOP; - arithmeticValue_ = A_PLUS; nextChar(); + + // Ищем оператор инкремента + if(ch_ == '+') { + token_ = T_INC; + nextChar(); + } + else { + token_ = T_ADDOP; + arithmeticValue_ = A_PLUS; + } break; case '-': - token_ = T_ADDOP; - arithmeticValue_ = A_MINUS; nextChar(); + + // Ищем оператор декремента + if(ch_ == '-') { + token_ = T_DEC; + nextChar(); + } + else { + token_ = T_ADDOP; + arithmeticValue_ = A_MINUS; + } break; case '*': diff --git a/lab4/cmilan/src/scanner.h b/lab4/cmilan/src/scanner.h index 15d1523..d0a677a 100644 --- a/lab4/cmilan/src/scanner.h +++ b/lab4/cmilan/src/scanner.h @@ -29,7 +29,9 @@ enum Token { T_CMP, // Сводная лексема для операторов отношения T_LPAREN, // Открывающая скобка T_RPAREN, // Закрывающая скобка - T_SEMICOLON // ";" + T_SEMICOLON, // ";" + T_INC, // Оператор инкремента + T_DEC // Оператор декремента }; // Функция tokenToString возвращает описание лексемы.