+" Vim syntax file
+" Language: API Notation
+" Maintainer: Rubén Beltrán del Río
+" Latest Revision: 22 June 2015
+
+if exists("b:current_syntax")
+ finish
+endif
+
+syn match moduleName '^\w\+'
+
+syn match classMembers '^\s\+\(\(<+\)\|\(<\~\)\|\(<-\)\|\(+>\)\|\(\~>\)\|\(->\)\|-\|+\|\(::\)\|#\)' nextgroup=memberName skipwhite
+syn match internalOperators '\(\(<+\)\|\(<\~\)\|\(<-\)\|\(+>\)\|\(\~>\)\|\(->\)\|-\|+\|\(::\)\|#\)' contained nextgroup=memberName skipwhite
+syn match returnIdentifiers '\(=>\)' nextgroup=returnValue
+syn match returnIdentifiers '\(->\)'
+
+syn match memberName '\w\+' contained nextgroup=internalOperators,spacedDataType
+
+syn region parameterList start="(" end=")" transparent contains=parameters,separators,optionalParameter,dataType
+syn region optionalParameter start="\[" end="]" contains=optionalParameters contained
+syn region dataType start="<" end=">" contains=dataTypes,separators contained
+syn region spacedDataType start='\s\+<' end=">" contains=dataTypes,separators contained
+
+syn match optionalParameters '\w\+' contained
+syn match parameters '\w\+' contained
+syn match dataTypes '\w\+' contained
+syn match separators '|\|,' contained
+
+syn match returnValue '.*' contained contains=dataType,parameters
+
+
+hi def link moduleName Identifier
+
+hi def link classMembers Operator
+hi def link returnIdentifiers Operator
+hi def link internalOperators Operator
+
+hi def link memberName Special
+
+hi def link parameters PreProc
+hi def link optionalParameters Underlined
+hi def link dataTypes Constant
+
+hi def link separators Comment