aboutsummaryrefslogtreecommitdiffstats
path: root/queries/dtd
diff options
context:
space:
mode:
authorObserverOfTime <chronobserver@disroot.org>2023-08-04 14:50:28 +0300
committerObserverOfTime <chronobserver@disroot.org>2023-08-13 10:34:57 +0300
commit5b3dd8cff1064db583ddd3edd314e94a02ea1bef (patch)
tree2a8ae4546d07a867531e7f861e48c004050ecf7f /queries/dtd
parentfixup: php injections (diff)
downloadnvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar
nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.gz
nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.bz2
nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.lz
nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.xz
nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.tar.zst
nvim-treesitter-5b3dd8cff1064db583ddd3edd314e94a02ea1bef.zip
feat: add xml & dtd parsers
Diffstat (limited to 'queries/dtd')
-rw-r--r--queries/dtd/folds.scm4
-rw-r--r--queries/dtd/highlights.scm121
-rw-r--r--queries/dtd/injections.scm1
3 files changed, 126 insertions, 0 deletions
diff --git a/queries/dtd/folds.scm b/queries/dtd/folds.scm
new file mode 100644
index 000000000..ba7ea121b
--- /dev/null
+++ b/queries/dtd/folds.scm
@@ -0,0 +1,4 @@
+[
+ (conditionalSect)
+ (Comment)
+] @fold
diff --git a/queries/dtd/highlights.scm b/queries/dtd/highlights.scm
new file mode 100644
index 000000000..ba34f0bfe
--- /dev/null
+++ b/queries/dtd/highlights.scm
@@ -0,0 +1,121 @@
+;; XML declaration
+
+(XMLDecl "xml" @preproc)
+
+(XMLDecl [ "version" "encoding" ] @tag.attribute)
+
+(XMLDecl (EncName) @string.special)
+
+(XMLDecl (VersionNum) @number)
+
+;; Processing instructions
+
+(PI) @preproc
+
+;; Element declaration
+
+(elementdecl
+ "ELEMENT" @define
+ (Name) @tag)
+
+(contentspec
+ (_ (Name) @tag.attribute))
+
+"#PCDATA" @type.builtin
+
+[ "EMPTY" "ANY" ] @type.qualifier
+
+[ "*" "?" "+" ] @character.special
+
+;; Entity declaration
+
+(GEDecl
+ "ENTITY" @define
+ (Name) @constant)
+
+(GEDecl (EntityValue) @string)
+
+(NDataDecl
+ "NDATA" @keyword
+ (Name) @label)
+
+;; Parsed entity declaration
+
+(PEDecl
+ "ENTITY" @define
+ "%" @operator
+ (Name) @function.macro)
+
+(PEDecl (EntityValue) @string)
+
+;; Notation declaration
+
+(NotationDecl
+ "NOTATION" @preproc
+ (Name) @label)
+
+((NotationDecl
+ (ExternalID
+ (SystemLiteral (URI) @string.special))
+ (#set! "priority" 105)))
+
+;; Attlist declaration
+
+(AttlistDecl
+ "ATTLIST" @define
+ (Name) @tag)
+
+(AttDef (Name) @tag.attribute)
+
+(AttDef (Enumeration (Nmtoken) @string))
+
+[
+ (StringType)
+ (TokenizedType)
+] @type.builtin
+
+(NotationType "NOTATION" @type.builtin)
+
+[
+ "#REQUIRED"
+ "#IMPLIED"
+ "#FIXED"
+] @attribute
+
+;; Entities
+
+(EntityRef) @constant
+
+((EntityRef) @constant.builtin
+ (#any-of? @constant.builtin
+ "&amp;" "&lt;" "&gt;" "&quot;" "&apos;"))
+
+(CharRef) @character
+
+(PEReference) @function.macro
+
+;; External references
+
+[ "PUBLIC" "SYSTEM" ] @keyword
+
+(PubidLiteral) @string.special
+
+(SystemLiteral (URI) @text.uri)
+
+;; Delimiters & punctuation
+
+[ "<?" "?>" "<!" ">" "]]>" ] @tag.delimiter
+
+[ "(" ")" "[" ] @punctuation.bracket
+
+[ "\"" "'" ] @punctuation.delimiter
+
+[ "," "|" "=" ] @operator
+
+;; Misc
+
+[ "INCLUDE" "IGNORE" ] @include
+
+(Comment) @comment @spell
+
+(ERROR) @error
diff --git a/queries/dtd/injections.scm b/queries/dtd/injections.scm
new file mode 100644
index 000000000..ed5557a05
--- /dev/null
+++ b/queries/dtd/injections.scm
@@ -0,0 +1 @@
+(Comment) @comment