An example where a regex parser might not be as capable as a parser written in C is making tags for the properties and methods in a matlab classdef. Using the example in https://au.mathworks.com/help/matlab/ref/classdef.html. At the moment the ctags parser makes tags for the properties `CurrentSpeed` and `SpeedRange` but as stand alone variables, not associated with class `Motor`, and similarly functions `start()` and `stop()` are tagged as standalone functions not associated with `Motor`.
Obviously a parser written in C can associate members and methods with the containing entity since the C/C++ parser shows nested struct/classes to any depth. But it is "slightly" more [complex](https://github.com/geany/geany/tree/master/ctags/parsers/cxx) than ctags `matlab.c`.
IIUC there is a simple context (scope) stack for regex parsers, but I am not sure it can distinguish between a `function foo()` as a standalone function or as a method of a class?