c0c070abaf
New "functionList" will be added beside of notepad++.exe or "%APPDATA%\Notepad++\", according the installation mode. If the portable package is used, after removing "doLocalConf.xml", the "functionList" folder should be copied manually from Notepad++ installed directory to "%APPDATA%\Notepad++\" to make function list work again. All splited files are localized in this folder with the explicit language name. "overrideMap.xml" is optional for overriding the default functionList parse rule files, and for adding UDL parse rule files. Close #4896
112 lines
3.9 KiB
XML
112 lines
3.9 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!-- ==========================================================================\
|
|
|
|
|
| To learn how to make your own language parser, please check the following
|
|
| link:
|
|
| https://npp-user-manual.org/docs/function-list/
|
|
|
|
|
\=========================================================================== -->
|
|
<NotepadPlus>
|
|
<functionList>
|
|
<!-- =========================================================== [ C ] -->
|
|
<parser
|
|
displayName="C"
|
|
id ="c_function"
|
|
commentExpr="(?x) # Utilize inline comments (see `RegEx - Pattern Modifiers`)
|
|
(?s:\x2F\x2A.*?\x2A\x2F) # Multi Line Comment
|
|
| (?m-s:\x2F{2}.*$) # Single Line Comment
|
|
| (?s:\x22(?:[^\x22\x5C]|\x5C.)*\x22) # String Literal - Double Quoted
|
|
| (?s:\x27(?:[^\x27\x5C]|\x5C.)*\x27) # String Literal - Single Quoted
|
|
"
|
|
>
|
|
<function
|
|
mainExpr="(?x) # Utilize inline comments (see `RegEx - Pattern Modifiers`)
|
|
(?: # Declaration specifiers
|
|
\b
|
|
(?:
|
|
(?-i:auto|register|static|extern|typedef) # Storage class specifier
|
|
| (?: # Type specifier
|
|
(?-i:void|char|short|int|long|float|double|(?:un)?signed)
|
|
| (?-i:struct|union|enum)
|
|
\s+
|
|
(?&VALID_ID) # Struct, Union or Enum Specifier (simplified)
|
|
| (?&VALID_ID) # Type-definition name
|
|
)
|
|
| (?'TYPE_QUALIFIER'(?-i:const|volatile))
|
|
)
|
|
\b
|
|
\s*
|
|
)*
|
|
(?'DECLARATOR'
|
|
(?'POINTER'
|
|
\*
|
|
\s*
|
|
(?:
|
|
\b(?&TYPE_QUALIFIER)\b
|
|
\s*
|
|
)*
|
|
(?:(?&POINTER))? # Boost::Regex 1.58-1.59 do not correctly handle quantifiers on subroutine calls
|
|
)?
|
|
(?: # 'DIRECT_DECLARATOR'
|
|
\s*
|
|
(?'VALID_ID' # valid identifier, use as subroutine
|
|
\b(?!(?-i:
|
|
auto
|
|
| break
|
|
| c(?:ase|har|on(?:st|ntinue))
|
|
| d(?:efault|o(?:uble)?)
|
|
| e(?:lse|num|xtern)
|
|
| f(?:loat|or)
|
|
| goto
|
|
| i(?:f|n(?:t|line))
|
|
| long
|
|
| while
|
|
| re(?:gister|strict|turn)
|
|
| s(?:hort|i(?:gned|zeof)|t(?:atic|ruct)|witch)
|
|
| typedef
|
|
| un(?:ion|signed)
|
|
| vo(?:id|latile)
|
|
| _(?:
|
|
A(?:lignas|lignof|tomic)
|
|
| Bool
|
|
| Complex
|
|
| Generic
|
|
| Imaginary
|
|
| Noreturn
|
|
| Static_assert
|
|
| Thread_local
|
|
)
|
|
)\b) # keywords, not to be used as identifier
|
|
[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]* # valid character combination for identifiers
|
|
)
|
|
| \s*\(
|
|
(?&DECLARATOR)
|
|
\)
|
|
| \s*(?&VALID_ID)
|
|
\s*\[
|
|
[^[\];{]*?
|
|
\]
|
|
| \s*(?&VALID_ID)
|
|
\s*\(
|
|
[^();{]*?
|
|
\)
|
|
)
|
|
\s*
|
|
)
|
|
(?=\{) # start of function body
|
|
"
|
|
>
|
|
<functionName>
|
|
<nameExpr expr="(?x) # Utilize inline comments (see `RegEx - Pattern Modifiers`)
|
|
[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*
|
|
\s*\( # start of parameters
|
|
(?s:.*?) # whatever, until...
|
|
\) # end of parameters
|
|
" />
|
|
<!-- comment out the following node to display the method with its parameters -->
|
|
<!-- <nameExpr expr="[A-Za-z_\x7F-\xFF][\w\x7F-\xFF]*" /> -->
|
|
</functionName>
|
|
</function>
|
|
</parser>
|
|
</functionList>
|
|
</NotepadPlus> |