syn keyword wsmlKeywordsInsideLEs true false memberOf hasValue subConceptOf ofType impliesType and or implies impliedBy equivalent neg naf forall exists
syn keyword wsmlNFP nfp endnfp nonFunctionalProperties endNonFunctionalProperties
syn region wsmlNFPregion start="nfp\|nonFunctionalProperties" end="endnfp\|endNonFunctionalProperties" contains=ALL
syn region wsmlNamespace start="namespace" end="}" contains=wsmlIdentifier
syn match wsmlOperator "!=\|:=:\|=<\|>=\|=\|+\|\*\|/\|<->\|->\|<-\|:-\|!-\|-\|<\|>"
syn match wsmlBrace "(\|)\|\[\|\]\|{\|}"
syn match wsmlIdentifier +_"\S*"+
syn match wsmlIdentifier "_#\d*"
syn match wsmlSqName "[0-9A-Za-z]\+#[0-9A-Za-z]\+"
syn match wsmlVariable "?[0-9A-Za-z]\+"
" ASM-specific code
syn keyword wsmlBehavioral choreography orchestration transitionRules
syn keyword wsmlChoreographyPri stateSignature in out shared static controlled
syn keyword wsmlChoreographySec with do withGrounding forall endForall choose if then endIf
syn match wsmlChoreographyTer "\(\s\|\_^\)\(add\|delete\|update\)\s*(.*)" contains=wsmlKeywordsInsideLEs,wsmlIdentifier,wsmlSqName,wsmlString,wsmlNumber,wsmlDataTypes,wsmlVariable
" Comments
syn keyword wsmlTodo contained TODO
syn keyword wsmlFixMe contained FIXME
if exists("wsml_comment_strings")
syn region wsmlCommentString contained start=+"+ end=+"+ end=+$+ end=+\*/+me=s-1,he=s-1 contains=wsmlSpecial,wsmlCommentStar,wsmlSpecialChar,@Spell
syn region wsmlComment2String contained start=+"+ end=+$\|"+ contains=wsmlSpecial,wsmlSpecialChar,@Spell
syn match wsmlCommentCharacter contained "'\\[^']\{1,6\}'" contains=wsmlSpecialChar
syn match wsmlCommentCharacter contained "'\\''" contains=wsmlSpecialChar
syn match wsmlCommentCharacter contained "'[^\\]'"
syn cluster wsmlCommentSpecial add=wsmlCommentString,wsmlCommentCharacter,wsmlNumber
syn cluster wsmlCommentSpecial2 add=wsmlComment2String,wsmlCommentCharacter,wsmlNumber
endif
syn region wsmlComment start="/\*" end="\*/" contains=@wsmlCommentSpecial,wsmlTodo,wsmlFixMe,@Spell
syn match wsmlCommentStar contained "^\s*\*[^/]"me=e-1
syn match wsmlCommentStar contained "^\s*\*$"
syn match wsmlLineComment "//.*" contains=@wsmlCommentSpecial2,wsmlTodo,@Spell
syn cluster wsmlTop add=wsmlComment,wsmlLineComment
"match the special comment /**/
syn match wsmlComment "/\*\*/"
" Strings
syn region wsmlString start=+"+ end=+"+ contains=wsmlSpecialChar,wsmlSpecialError,@Spell
syn match wsmlCharacter "'[^']*'" contains=javaSpecialChar,javaSpecialCharError
syn match wsmlCharacter "'\\''" contains=javaSpecialChar
syn match wsmlCharacter "'[^\\]'"
syn match wsmlNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
syn match wsmlNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
syn match wsmlNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
syn match wsmlNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
" unicode characters
syn match wsmlSpecial "\\u\d\{4\}"
syn cluster wsmlTop add=wsmlString,wsmlCharacter,wsmlNumber,wsmlSpecial,wsmlStringError
" Define the default highlighting.
" " For version 5.7 and earlier: only when not done already
" " For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_wsml_syn_inits")