You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
232 lines
8.9 KiB
232 lines
8.9 KiB
<?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>
|
|
<!-- ======================================================== [ Java ] -->
|
|
|
|
<!--
|
|
| Based on:
|
|
| https://notepad-plus-plus.org/community/topic/12691/function-list-with-java-problems
|
|
\-->
|
|
<parser
|
|
displayName="Java"
|
|
id ="java_syntax"
|
|
>
|
|
<classRange
|
|
mainExpr ="(?x) # Utilize inline comments (see `RegEx - Pattern Modifiers`)
|
|
(?m)^[\t\x20]* # leading whitespace
|
|
(?:
|
|
(?-i:
|
|
abstract
|
|
| final
|
|
| native
|
|
| p(?:rivate|rotected|ublic)
|
|
| s(?:tatic|trictfp|ynchronized)
|
|
| transient
|
|
| volatile
|
|
| @[A-Za-z_]\w* # qualified identifier
|
|
(?: # consecutive names...
|
|
\. # ...are dot separated
|
|
[A-Za-z_]\w*
|
|
)*
|
|
)
|
|
\s+
|
|
)*
|
|
(?-i:class|enum|@?interface)
|
|
\s+
|
|
(?'DECLARATOR'
|
|
(?'VALID_ID' # valid identifier, use as subroutine
|
|
\b(?!(?-i:
|
|
a(?:bstract|ssert)
|
|
| b(?:oolean|reak|yte)
|
|
| c(?:ase|atch|har|lass|on(?:st|tinue))
|
|
| d(?:efault|o(?:uble)?)
|
|
| e(?:lse|num|xtends)
|
|
| f(?:inal(?:ly)?|loat|or)
|
|
| goto
|
|
| i(?:f|mp(?:lements|ort)|nstanceof|nt(?:erface)?)
|
|
| long
|
|
| n(?:ative|ew)
|
|
| p(?:ackage|rivate|rotected|ublic)
|
|
| return
|
|
| s(?:hort|tatic|trictfp|uper|witch|ynchronized)
|
|
| th(?:is|rows?)|tr(?:ansient|y)
|
|
| vo(?:id|latile)
|
|
| while
|
|
)\b) # keywords, not to be used as identifier
|
|
[A-Za-z_]\w* # valid character combination for identifiers
|
|
)
|
|
(?:
|
|
\s*\x3C # start-of-template indicator...
|
|
(?'GENERIC' # ...match first generic, use as subroutine
|
|
\s*
|
|
(?:
|
|
(?&DECLARATOR) # use named generic
|
|
| \? # or unknown
|
|
)
|
|
(?: # optional type extension
|
|
\s+(?-i:extends|super)
|
|
\s+(?&DECLARATOR)
|
|
(?: # multiple bounds...
|
|
\s+\x26 # ...are ampersand separated
|
|
\s+(?&DECLARATOR)
|
|
)*
|
|
)?
|
|
(?: # match consecutive generics objects...
|
|
\s*, # ...are comma separated
|
|
(?&GENERIC)
|
|
)?
|
|
)
|
|
\s*\x3E # end-of-template indicator
|
|
)?
|
|
(?: # package and|or nested classes...
|
|
\. # ...are dot separated
|
|
(?&DECLARATOR)
|
|
)?
|
|
)
|
|
(?: # optional object extension
|
|
\s+(?-i:extends)
|
|
\s+(?&DECLARATOR)
|
|
(?: # consecutive objects...
|
|
\s*, # ...are comma separated
|
|
\s*(?&DECLARATOR)
|
|
)*
|
|
)?
|
|
(?: # optional object implementation
|
|
\s+(?-i:implements)
|
|
\s+(?&DECLARATOR)
|
|
(?: # consecutive objects...
|
|
\s*, # ...are comma separated
|
|
\s*(?&DECLARATOR)
|
|
)*
|
|
)?
|
|
\s*\{ # whatever, up till start-of-body indicator
|
|
"
|
|
openSymbole ="\{"
|
|
closeSymbole="\}"
|
|
>
|
|
<className>
|
|
<nameExpr expr="(?-i:class|enum|@?interface)\s+\K\w+(?:\s*\x3C.*?\x3E)?" />
|
|
</className>
|
|
<function
|
|
mainExpr="(?x) # Utilize inline comments (see `RegEx - Pattern Modifiers`)
|
|
^[\t\x20]* # leading whitespace
|
|
(?:
|
|
(?-i:
|
|
abstract
|
|
| final
|
|
| native
|
|
| p(?:rivate|rotected|ublic)
|
|
| s(?:tatic|trictfp|ynchronized)
|
|
| transient
|
|
| volatile
|
|
| @[A-Za-z_]\w* # qualified identifier
|
|
(?: # consecutive names...
|
|
\. # ...are dot separated
|
|
[A-Za-z_]\w*
|
|
)*
|
|
)
|
|
\s+
|
|
)*
|
|
(?:
|
|
\s*\x3C # start-of-template indicator
|
|
(?&GENERIC)
|
|
\s*\x3E # end-of-template indicator
|
|
)?
|
|
\s*
|
|
(?'DECLARATOR'
|
|
[A-Za-z_]\w* # (parent) type name
|
|
(?: # consecutive sibling type names...
|
|
\. # ...are dot separated
|
|
[A-Za-z_]\w*
|
|
)*
|
|
(?:
|
|
\s*\x3C # start-of-template indicator
|
|
(?'GENERIC' # match first generic, use as subroutine
|
|
\s*
|
|
(?:
|
|
(?&DECLARATOR) # use named generic
|
|
| \? # or unknown
|
|
)
|
|
(?: # optional type extension
|
|
\s+(?-i:extends|super)
|
|
\s+(?&DECLARATOR)
|
|
(?: # multiple bounds...
|
|
\s+\x26 # ...are ampersand separated
|
|
\s+(?&DECLARATOR)
|
|
)*
|
|
)?
|
|
(?: # consecutive generics objects...
|
|
\s*, # ...are comma separated
|
|
(?&GENERIC)
|
|
)?
|
|
)
|
|
\s*\x3E # end-of-template indicator
|
|
)?
|
|
(?: # package and|or nested classes...
|
|
\. # ...are dot separated
|
|
(?&DECLARATOR)
|
|
)?
|
|
(?: # optional compound type...
|
|
\s*\[ # ...start-of-compound indicator
|
|
\s*\] # ...end-of-compound indicator
|
|
)*
|
|
)
|
|
\s+
|
|
(?'VALID_ID' # valid identifier, use as subroutine
|
|
\b(?!(?-i:
|
|
a(?:bstract|ssert)
|
|
| b(?:oolean|reak|yte)
|
|
| c(?:ase|atch|har|lass|on(?:st|tinue))
|
|
| d(?:efault|o(?:uble)?)
|
|
| e(?:lse|num|xtends)
|
|
| f(?:inal(?:ly)?|loat|or)
|
|
| goto
|
|
| i(?:f|mp(?:lements|ort)|nstanceof|nt(?:erface)?)
|
|
| long
|
|
| n(?:ative|ew)
|
|
| p(?:ackage|rivate|rotected|ublic)
|
|
| return
|
|
| s(?:hort|tatic|trictfp|uper|witch|ynchronized)
|
|
| th(?:is|rows?)|tr(?:ansient|y)
|
|
| vo(?:id|latile)
|
|
| while
|
|
)\b) # keywords, not to be used as identifier
|
|
[A-Za-z_]\w* # valid character combination for identifiers
|
|
)
|
|
\s*\( # start-of-parameters indicator
|
|
(?'PARAMETER' # match first parameter, use as subroutine
|
|
\s*(?-i:final\s+)?
|
|
(?&DECLARATOR)
|
|
\s+(?&VALID_ID) # parameter name
|
|
(?: # consecutive parameters...
|
|
\s*, # ...are comma separated
|
|
(?&PARAMETER)
|
|
)?
|
|
)?
|
|
\) # end-of-parameters indicator
|
|
(?: # optional exceptions
|
|
\s*(?-i:throws)
|
|
\s+(?&VALID_ID) # first exception name
|
|
(?: # consecutive exception names...
|
|
\s*, # ...are comma separated
|
|
\s*(?&VALID_ID)
|
|
)*
|
|
)?
|
|
[^{;]*\{ # start-of-function-body indicator
|
|
"
|
|
>
|
|
<functionName>
|
|
<funcNameExpr expr="\w+(?=\s*\()" />
|
|
</functionName>
|
|
</function>
|
|
</classRange>
|
|
</parser>
|
|
</functionList>
|
|
</NotepadPlus> |