blob: 0c6b72a407fb2b05d608ebafcb1b722b558ae28d [file] [log] [blame]
Bram Moolenaarbbebc852005-07-18 21:47:53 +00001" Vim syntax file
2" Language: XQuery
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +01003" Author: René Neumann <necoro@necoro.eu>
4" Author: Steve Spigarelli <http://spig.net/>
5" Original Author: Jean-Marc Vanel <http://jmvanel.free.fr/>
Bram Moolenaar251e1912011-06-19 05:09:16 +02006" Last Change: mar jui 12 18:04:05 CEST 2005
Bram Moolenaarbbebc852005-07-18 21:47:53 +00007" Filenames: *.xq
8" URL: http://jmvanel.free.fr/vim/xquery.vim
Bram Moolenaarbbebc852005-07-18 21:47:53 +00009
10" REFERENCES:
11" [1] http://www.w3.org/TR/xquery/
12
13" Quit when a syntax file was already loaded
14if exists("b:current_syntax")
15 finish
16endif
17
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010018" - is allowed in keywords
19setlocal iskeyword+=-
20
Bram Moolenaarbbebc852005-07-18 21:47:53 +000021runtime syntax/xml.vim
22
23syn case match
24
25" From XQuery grammar:
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010026syn keyword xqStatement ancestor ancestor-or-self and as ascending at attribute base-uri boundary-space by case cast castable child collation construction declare default descendant descendant-or-self descending div document element else empty encoding eq every except external following following-sibling for function ge greatest gt idiv if import in inherit-namespaces instance intersect is le least let lt mod module namespace ne no of or order ordered ordering parent preceding preceding-sibling preserve return satisfies schema self some stable strip then to treat typeswitch union unordered validate variable version where xmlspace xquery yes
Bram Moolenaarbbebc852005-07-18 21:47:53 +000027
28" TODO contains clashes with vim keyword
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010029syn keyword xqFunction abs adjust-date-to-timezone adjust-date-to-timezone adjust-dateTime-to-timezone adjust-dateTime-to-timezone adjust-time-to-timezone adjust-time-to-timezone avg base-uri base-uri boolean ceiling codepoint-equal codepoints-to-string collection collection compare concat count current-date current-dateTime current-time data dateTime day-from-date day-from-dateTime days-from-duration deep-equal deep-equal default-collation distinct-values distinct-values doc doc-available document-uri empty ends-with ends-with error error error error escape-uri exactly-one exists false floor hours-from-dateTime hours-from-duration hours-from-time id id idref idref implicit-timezone in-scope-prefixes index-of index-of insert-before lang lang last local-name local-name local-name-from-QName lower-case matches matches max max min min minutes-from-dateTime minutes-from-duration minutes-from-time month-from-date month-from-dateTime months-from-duration name name namespace-uri namespace-uri namespace-uri-for-prefix namespace-uri-from-QName nilled node-name normalize-space normalize-space normalize-unicode normalize-unicode not number number one-or-more position prefix-from-QName QName remove replace replace resolve-QName resolve-uri resolve-uri reverse root root round round-half-to-even round-half-to-even seconds-from-dateTime seconds-from-duration seconds-from-time starts-with starts-with static-base-uri string string string-join string-length string-length string-to-codepoints subsequence subsequence substring substring substring-after substring-after substring-before substring-before sum sum timezone-from-date timezone-from-dateTime timezone-from-time tokenize tokenize trace translate true unordered upper-case year-from-date year-from-dateTime years-from-duration zero-or-one
Bram Moolenaarbbebc852005-07-18 21:47:53 +000030
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010031syn keyword xqOperator add-dayTimeDuration-to-date add-dayTimeDuration-to-dateTime add-dayTimeDuration-to-time add-dayTimeDurations add-yearMonthDuration-to-date add-yearMonthDuration-to-dateTime add-yearMonthDurations base64Binary-equal boolean-equal boolean-greater-than boolean-less-than concatenate date-equal date-greater-than date-less-than dateTime-equal dateTime-greater-than dateTime-less-than dayTimeDuration-equal dayTimeDuration-greater-than dayTimeDuration-less-than divide-dayTimeDuration divide-dayTimeDuration-by-dayTimeDuration divide-yearMonthDuration divide-yearMonthDuration-by-yearMonthDuration except gDay-equal gMonth-equal gMonthDay-equal gYear-equal gYearMonth-equal hexBinary-equal intersect is-same-node multiply-dayTimeDuration multiply-yearMonthDuration node-after node-before NOTATION-equal numeric-add numeric-divide numeric-equal numeric-greater-than numeric-integer-divide numeric-less-than numeric-mod numeric-multiply numeric-subtract numeric-unary-minus numeric-unary-plus QName-equal subtract-dates-yielding-dayTimeDuration subtract-dateTimes-yielding-dayTimeDuration subtract-dayTimeDuration-from-date subtract-dayTimeDuration-from-dateTime subtract-dayTimeDuration-from-time subtract-dayTimeDurations subtract-times subtract-yearMonthDuration-from-date subtract-yearMonthDuration-from-dateTime subtract-yearMonthDurations time-equal time-greater-than time-less-than to union yearMonthDuration-equal yearMonthDuration-greater-than yearMonthDuration-less-than
Bram Moolenaarbbebc852005-07-18 21:47:53 +000032
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010033syn match xqType "xs:\(\|Datatype\|primitive\|string\|boolean\|float\|double\|decimal\|duration\|dateTime\|time\|date\|gYearMonth\|gYear\|gMonthDay\|gDay\|gMonth\|hexBinary\|base64Binary\|anyURI\|QName\|NOTATION\|\|normalizedString\|token\|language\|IDREFS\|ENTITIES\|NMTOKEN\|NMTOKENS\|Name\|NCName\|ID\|IDREF\|ENTITY\|integer\|nonPositiveInteger\|negativeInteger\|long\|int\|short\|byte\|nonNegativeInteger\|unsignedLong\|unsignedInt\|unsignedShort\|unsignedByte\|positiveInteger\)"
34
Bram Moolenaarbbebc852005-07-18 21:47:53 +000035
36" From XPath grammar:
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010037syn keyword xqXPath some every in in satisfies if then else to div idiv mod union intersect except instance of treat castable cast eq ne lt le gt ge is child descendant attribute self descendant-or-self following-sibling following namespace parent ancestor preceding-sibling preceding ancestor-or-self void item node document-node text comment processing-instruction attribute schema-attribute schema-element
Bram Moolenaarbbebc852005-07-18 21:47:53 +000038
39" eXist extensions
40syn match xqExist "&="
41
42" XQdoc
43syn match XQdoc contained "@\(param\|return\|author\)\>"
44
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010045" floating point number, with dot, optional exponent
46syn match xqFloat "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
47" floating point number, starting with a dot, optional exponent
48syn match xqFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
49" floating point number, without dot, with exponent
50syn match xqFloat "\d\+e[-+]\=\d\+[fl]\=\>"
51syn match xqNumber "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
52syn match xqNumber "\<\d\+\>"
Bram Moolenaarbbebc852005-07-18 21:47:53 +000053
Bram Moolenaar251e1912011-06-19 05:09:16 +020054syn region xqString start=+\z(['"]\)+ skip=+\\.+ end=+\z1+
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010055syn region xqComment start='(:' excludenl end=':)' contains=XQdoc
Bram Moolenaarbbebc852005-07-18 21:47:53 +000056
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010057syn match xqVariable "$\<[a-zA-Z:_][-.0-9a-zA-Z0-9:_]*\>"
58syn match xqSeparator ",\|;"
59syn region xqCode transparent contained start='{' excludenl end='}' contains=xqFunction,xqCode,xmlRegionBis,xqComment,xqStatement,xmlString,xqSeparator,xqNumber,xqVariable,xqString keepend extend
Bram Moolenaarbbebc852005-07-18 21:47:53 +000060
61syn region xmlRegionBis start=+<\z([^ /!?<>"']\+\)+ skip=+<!--\_.\{-}-->+ end=+</\z1\_\s\{-}>+ end=+/>+ fold contains=xmlTag,xmlEndTag,xmlCdata,xmlRegionBis,xmlComment,xmlEntity,xmlProcessing,xqCode keepend extend
62
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010063hi def link xqNumber Number
64hi def link xqFloat Number
65hi def link xqString String
66hi def link xqVariable Identifier
67hi def link xqComment Comment
68hi def link xqSeparator Operator
69hi def link xqStatement Statement
70hi def link xqFunction Function
71hi def link xqOperator Operator
72hi def link xqType Type
73hi def link xqXPath Operator
74hi def link XQdoc Special
75hi def link xqExist Operator
Bram Moolenaarbbebc852005-07-18 21:47:53 +000076
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010077" override the xml highlighting
78"hi link xmlTag Structure
79"hi link xmlTagName Structure
80"hi link xmlEndTag Structure
Bram Moolenaarbbebc852005-07-18 21:47:53 +000081
Bram Moolenaar2a8a3ec2011-01-08 16:06:37 +010082let b:current_syntax = "xquery"