Hello @Jeroen6,
this should do the trick, I hope I didn’t break any other functions.
It’s basically Peter Brands proposal with a little modification (using * instead of +, as it is optional)
and introduced a new nameExpr to catch the interrupt functions.
<parser id="c_function" displayName="C source" commentExpr="((/\*.*?\*)/|(//.*?$))">
<function mainExpr="^[\t ]*((static|const|virtual|_interrupt(\(.*?\))*)[\s]+)?[\w:]+([\s]+[\w]+)?([\s]+|(\*|\*\*)[\s]+|[\s]+(\*|\*\*)|[\s]+(\*|\*\*)[\s]+)([\w_]+[\s]*::)?(?!(if|while|for))[\w_]+[\s]*\([^\)\(]*\)([\s]*const[\s]*)?[\n\s]*\{" displayMode="$functionName">
<functionName>
<nameExpr expr="(?!_interrupt(\(.*?\))*) [\w_~]+[\s]*\("/>
<nameExpr expr="(?!(if|while|for))[\w_~]+[\s]*\("/>
<nameExpr expr="(?!(if|while|for))[\w_~]+"/>
</functionName>
</function>
</parser>
Cheers
Claudia