[functionList.xml] What do these colons mean?
-
In “c-function” node of functionList.xml, there are “[\w:]+” and “([\w]+[\s]*::)?” in mainExpr.
What do these colons mean?
-
[\w:]+means “match one or more word characters (i.e. A to Z, a to z, 0 to 9 or an underscore) or a colon”.([\w]+[\s]*::)?means “optionally (i.e. the question mark at the end) match one or more word characters followed by zero or more white space (Most engines: space, tab, newline, carriage return, vertical tab; .NET, Python 3, JavaScript: any Unicode separator) followed by two colons”. -
Thanks to MAPJe71!
But I don’t understand why there needs colon in C function definition’s head line.What I say “function definition’s head line” means:
int func(int a, int b)
{
…
}
Then, “int func(int a, int b)” is “function definition’s head line”. -
The Notepad++ v6.9.2 parser looks like this:
<parser id="c_function" displayName="C source" commentExpr="((/\*.*?\*)/|(//.*?$))"> <function mainExpr="^[\t ]*((static|const|virtual)[\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="(?!(if|while|for))[\w_~]+[\s]*\("/> <nameExpr expr="(?!(if|while|for))[\w_~]+"/> </functionName> </function> </parser>I don’t think this parser works correctly.
I suspect parts of it have been copied from the C/C++ parser hence the double colon i.e. trying to match a class name.
The(?!(if|while|for))[\w_]+part is for the function name. -
I agree with you. Thank you!
-
I’m actually in the process of creating the first update/overhaul for functionList.xml.
Unfortunately it will only be a cleanup for the C parser not a correction, yet.Current state:
<parser displayName="C source" id="c_function" commentExpr="(?s-m:/\*.*?\*/)|(?m-s://.*?$)" > <function mainExpr="^[\t ]*((?-i:static|const|virtual)\s+)?[\w:]+(\s+\w+)?(\s+|(\*|\*\*)\s+|\s+(\*|\*\*)|\s+(\*|\*\*)\s+)(\w+\s*::)?(?-i:\b(?!if|while|for)\b)\w+\s*\([^\)\(]*\)(\s*const\s*)?[\n\s]*\{" > <functionName> <nameExpr expr="(?-i:\b(?!if|while|for)\b)[\w~]+\s*\(" /> <nameExpr expr="[\w~]+" /> </functionName> </function> </parser>
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login