mirror of
				https://github.com/notepad-plus-plus/notepad-plus-plus.git
				synced 2025-10-31 03:24:04 +01:00 
			
		
		
		
	- added missing unittest for c - added further function lists for ada, fortran, fortran77, haskell from previous PR of MAPJe71_functionlist_update3 - added simple rust function list - unittest files from the internet probably no complex ones - added to installer Fix #9698, close #3393, close #9727
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.4 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>
 | |
| 		<!--
 | |
| 		|   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> |