Я пытаюсь отсканировать исходный код C, чтобы обнаружить строку кода, а затем получить выражения A и expressionB в виде, подобном следующему:
(*((_type*)expressionA)) = expressionB;
с регулярным выражением:
[*][(][\s]*[(\s]*.*[*][)\s]*(.*)\s*[)]\s*=(.*)[\s]*;
Вот ссылка с некоторыми тестами.
Но это регулярное выражение не может охватывать такие случаи:
(*((volatile unsigned short*)(type01_01_06_base + (type01_01_06_offset * 1))) = (unsigned short)(unsigned long)0x01010101);
(*((volatile unsigned char*)add)) = (unsigned char)data;
Есть ли какое-либо решение использовать регулярные выражения для покрытия всех случаев в моей проблеме?