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

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() void Scanner::nextToken()
@@ -185,15 +187,31 @@ void Scanner::nextToken()
//Знаки операций. Для "+"/"-" получим лексему операции типа сложнения, и соответствующую операцию. //Знаки операций. Для "+"/"-" получим лексему операции типа сложнения, и соответствующую операцию.
//для "*" - лексему операции типа умножения //для "*" - лексему операции типа умножения
case '+': case '+':
token_ = T_ADDOP;
arithmeticValue_ = A_PLUS;
nextChar(); nextChar();
// Ищем оператор инкремента
if(ch_ == '+') {
token_ = T_INC;
nextChar();
}
else {
token_ = T_ADDOP;
arithmeticValue_ = A_PLUS;
}
break; break;
case '-': case '-':
token_ = T_ADDOP;
arithmeticValue_ = A_MINUS;
nextChar(); nextChar();
// Ищем оператор декремента
if(ch_ == '-') {
token_ = T_DEC;
nextChar();
}
else {
token_ = T_ADDOP;
arithmeticValue_ = A_MINUS;
}
break; break;
case '*': case '*':

View File

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