Spaces:
Sleeping
Sleeping
| <!-- ==========================================================================\ | |
| | | |
| | 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> |