Есть такая, например, строка:
ABC X=(...) Y=a+b*(...) Z=123
X, Y, Z можно назвать параметрами.
Как бы так изловчиться, чтобы вылавливать эти параметры и всё содержимое каждого вместе со скобками (т.е от «=» до следующего параметра)? Внутри скобок может быть что угодно, в том числе другие выражения в скобках, но скобки обязательно сбалансированы.
Перерыл уже весь гуголь и документацию, но везде только примеры инфиксных калькуляторов, мне же не нужно вычислять выражение, а только убедиться в балансе скобок в нём и поместить куда-нибудь.
Пока имеется такое:
.l
name [a-zA-Z][a-zA-Z0-9]*
{name}"=" { yylval.sval = strdup(yytext); return PARAM; }
"(" { return LBRK; }
")" { return RBRK; }
.y
param:
PARAM expr { printf(" {%s%s}", $1, $2); }
;