43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
class Parser:
|
|
def __init__(self):
|
|
self.in_quotes = False
|
|
|
|
|
|
def parse(self, command: str) -> list[str]:
|
|
tokens = []
|
|
current_token = []
|
|
|
|
for char in command:
|
|
if char == '"':
|
|
if self.in_quotes:
|
|
# Завершаем токен внутри кавычек
|
|
tokens.append(''.join(current_token))
|
|
current_token = []
|
|
self.in_quotes = False
|
|
else:
|
|
# Начинаем новый токен в кавычках
|
|
if current_token:
|
|
# Если до кавычек были символы, добавляем их как отдельный токен
|
|
tokens.append(''.join(current_token))
|
|
current_token = []
|
|
self.in_quotes = True
|
|
elif char == ' ':
|
|
if self.in_quotes:
|
|
# Внутри кавычек пробелы добавляем к текущему токену
|
|
current_token.append(char)
|
|
else:
|
|
if current_token:
|
|
# Завершаем текущий токен, если он есть
|
|
tokens.append(''.join(current_token))
|
|
current_token = []
|
|
else:
|
|
# Любой символ, кроме кавычек и пробела
|
|
current_token.append(char)
|
|
|
|
if current_token:
|
|
tokens.append(''.join(current_token))
|
|
|
|
return tokens
|
|
|
|
|