Добавил инкремент и декремент в лексер

This commit is contained in:
2025-05-28 12:07:32 +03:00
parent e3918eb442
commit 35cf9b5ed4
2 changed files with 25 additions and 5 deletions

View File

@@ -28,6 +28,8 @@ static const char * tokenNames_[] = {
"'('",
"')'",
"';'",
"'++'",
"'--'",
};
void Scanner::nextToken()
@@ -185,15 +187,31 @@ void Scanner::nextToken()
//Знаки операций. Для "+"/"-" получим лексему операции типа сложнения, и соответствующую операцию.
//для "*" - лексему операции типа умножения
case '+':
nextChar();
// Ищем оператор инкремента
if(ch_ == '+') {
token_ = T_INC;
nextChar();
}
else {
token_ = T_ADDOP;
arithmeticValue_ = A_PLUS;
nextChar();
}
break;
case '-':
nextChar();
// Ищем оператор декремента
if(ch_ == '-') {
token_ = T_DEC;
nextChar();
}
else {
token_ = T_ADDOP;
arithmeticValue_ = A_MINUS;
nextChar();
}
break;
case '*':

View File

@@ -29,7 +29,9 @@ enum Token {
T_CMP, // Сводная лексема для операторов отношения
T_LPAREN, // Открывающая скобка
T_RPAREN, // Закрывающая скобка
T_SEMICOLON // ";"
T_SEMICOLON, // ";"
T_INC, // Оператор инкремента
T_DEC // Оператор декремента
};
// Функция tokenToString возвращает описание лексемы.