| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?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>
- <!--
- | 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>
|