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> | |
| <!-- | |
| | Based on: | |
| | http://stackoverflow.com/questions/32126855/notepad-and-ada | |
| \--> | |
| <parser | |
| displayName="ADA" | |
| id ="ada_syntax" | |
| commentExpr="(?x) # free-spacing (see `RegEx - Pattern Modifiers`) | |
| (?m-s:-{2}.*?$) # Single Line Comment | |
| " | |
| > | |
| <function | |
| mainExpr="(?x) # free-spacing (see `RegEx - Pattern Modifiers`) | |
| ^\h* # optional leading whitespace at start-of-line | |
| (?: | |
| (?-i:function) | |
| \s+ | |
| (?'VALID_ID' # valid identifier, use as subroutine | |
| \b(?!(?-i: # keywords (case-sensitive), not to be used as identifier | |
| a(?:b(?:ort|s(?:tract)?)|cce(?:pt|ss)|l(?:iased|l)|nd|rray|t) | |
| | b(?:egin|ody) | |
| | c(?:ase|onstant) | |
| | d(?:eclare|el(?:ay|ta)|igits|o) | |
| | e(?:ls(?:e|if)|n(?:d|try)|x(?:ception|it)) | |
| | f(?:or|unction) | |
| | g(?:eneric|oto) | |
| | i(?:[fs]|n(?:terface)?) | |
| | l(?:imited|oop) | |
| | mod | |
| | n(?:ew|ot|ull) | |
| | o(?:[fr]|thers|ut|verriding) | |
| | p(?:ackage|r(?:agma|ivate|o(?:cedure|tected))) | |
| | r(?:a(?:is|ng)e|e(?:cord|m|names|queue|turn|verse)) | |
| | s(?:e(?:lect|parate)|ome|ubtype|ynchronized) | |
| | t(?:a(?:gged|sk)|erminate|hen|ype) | |
| | u(?:ntil|se) | |
| | w(?:h(?:en|ile)|ith) | |
| | xor | |
| )\b) | |
| [A-Za-z_]\w* # valid character combination for identifiers | |
| ) | |
| (?'PARAMETERS' | |
| \s* | |
| \( # start-of-parameters indicator | |
| [^()]* # parameters | |
| \) # end-of-parameters indicator | |
| )? # parentheses and parameters optional | |
| \s*return # function returns a value with... | |
| \s+(?&VALID_ID) # ...type-name | |
| | | |
| (?-i:procedure) | |
| \s+(?&VALID_ID) | |
| (?:(?&PARAMETERS))? # Boost::Regex 1.58-1.59 do not correctly handle quantifiers on subroutine calls | |
| ) | |
| \s*(?-i:\bis\b) # end-of-definition indicator | |
| " | |
| > | |
| <functionName> | |
| <nameExpr expr="(?x) # free-spacing (see `RegEx - Pattern Modifiers`) | |
| (?:function|procedure)\s+ | |
| \K # discard text matched so far | |
| [A-Za-z_]\w* | |
| (?:\s*\([^()]*\))? # parentheses and parameters optional | |
| (?= | |
| \s* | |
| \b(?:return|is) | |
| ) | |
| " | |
| /> | |
| <!-- comment out the following node to display the method with its parameters --> | |
| <!-- <nameExpr expr="[A-Za-z_]\w*" /> --> | |
| </functionName> | |
| </function> | |
| </parser> | |
| </functionList> | |
| </NotepadPlus> |