Добавил инкремент и декремент в лексер
This commit is contained in:
@@ -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 '*':
|
||||
|
||||
@@ -29,7 +29,9 @@ enum Token {
|
||||
T_CMP, // Сводная лексема для операторов отношения
|
||||
T_LPAREN, // Открывающая скобка
|
||||
T_RPAREN, // Закрывающая скобка
|
||||
T_SEMICOLON // ";"
|
||||
T_SEMICOLON, // ";"
|
||||
T_INC, // Оператор инкремента
|
||||
T_DEC // Оператор декремента
|
||||
};
|
||||
|
||||
// Функция tokenToString возвращает описание лексемы.
|
||||
|
||||
Reference in New Issue
Block a user