Строю стандартный лексер на регулярных выражениях используя TypeScript.
Задача такая: входной в лексер Python код нужно разбивать на токены 3-х типов:
empty (то есть пустой символ),
string (любой текст
не включающий круглые скобки
()) и
tuple (то есть любой текст,
заключённый в круглые скобки
(x: int, y: str)).
Тип токенов
tuple предназначен для для кортежей аргументов функций в Python, то есть в коде:
def foo(bar: int, baz: str) -> tuple[str, str]:
retrun ('Hello', 'world!')
Текст "
(bar: int, baz: str)" и "
('Hello', 'world!')" будут идентифицированы как тип
tuple.
И так вопрос:
Какой шаблон регулярного выражения нужно использовать для типа 'tuple'?