stevedlawrence commented on code in PR #117: URL: https://github.com/apache/daffodil-vscode/pull/117#discussion_r889172880
##########
language/syntaxes/dfdl.tmLanguage.json:
##########
@@ -0,0 +1,387 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from
https://github.com/atom/language-xml/blob/master/grammars/xml.cson",
+ "If you want to provide a fix or improvement, please create a
pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update
request."
+ ],
+ "version":
"https://github.com/atom/language-xml/commit/7bc75dfe779ad5b35d9bf4013d9181864358cb49",
+ "name": "dfdl",
+ "scopeName": "text.xml.dfdl.xsd",
+ "patterns": [
+ {
+ "begin": "(<\\?)\\s*([-_a-zA-Z0-9]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.xml"
+ }
+ },
+ "end": "(\\?>)",
+ "name": "meta.tag.preprocessor.xml",
+ "patterns": [
+ {
+ "match": " ([a-zA-Z-]+)",
+ "name":
"entity.other.attribute-name.xml"
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ {
+ "begin":
"(<!)(DOCTYPE)\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "keyword.other.doctype.xml"
+ },
+ "3": {
+ "name":
"variable.language.documentroot.xml"
+ }
+ },
+ "end": "\\s*(>)",
+ "name": "meta.tag.sgml.doctype.xml",
+ "patterns": [
+ {
+ "include": "#internalSubset"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin":
"(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "4": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end":
"(>)(</)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "5": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "6": {
+ "name": "entity.name.tag.localname.xml"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.xml"
+ }
+ },
+ "name": "meta.tag.no-content.xml",
+ "patterns": [
+ {
+ "include": "#tagStuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)(?:([-\\w\\.]+)((:)))?([-\\w\\.:]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.xml",
+ "patterns": [
+ {
+ "include": "#tagStuff"
+ }
+ ]
+ },
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ },
+ {
+ "begin": "<%@",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.begin.xml"
+ }
+ },
+ "end": "%>",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.end.xml"
+ }
+ },
+ "name": "source.java-props.embedded.xml",
+ "patterns": [
+ {
+ "match": "page|include|taglib",
+ "name": "keyword.other.page-props.xml"
+ }
+ ]
+ },
+ {
+ "begin": "<%[!=]?(?!--)",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.begin.xml"
+ }
+ },
+ "end": "(?!--)%>",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.section.embedded.end.xml"
+ }
+ },
+ "name": "source.java.embedded.xml",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ },
+ {
+ "begin": "<!\\[CDATA\\[",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "]]>",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.unquoted.cdata.xml"
+ }
+ ],
+ "repository": {
+ "EntityDecl": {
+ "begin":
"(<!)(ENTITY)\\s+(%\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\s+(?:SYSTEM|PUBLIC)\\s+)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "keyword.other.entity.xml"
+ },
+ "3": {
+ "name":
"punctuation.definition.entity.xml"
+ },
+ "4": {
+ "name": "variable.language.entity.xml"
+ },
+ "5": {
+ "name": "keyword.other.entitytype.xml"
+ }
+ },
+ "end": "(>)",
+ "patterns": [
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ "bare-ampersand": {
+ "match": "&",
+ "name": "invalid.illegal.bad-ampersand.xml"
+ },
+ "doublequotedString": {
+ "begin": "(?<!\\}\\s*+)\"(?!\\s*+\\{)",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.double.xml",
+ "patterns": [
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ }
+ ]
+ },
+ "entity": {
+ "captures": {
+ "1": {
+ "name":
"punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name":
"punctuation.definition.constant.xml"
+ }
+ },
+ "match":
"(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "name": "constant.character.entity.xml"
+ },
+ "internalSubset": {
+ "begin": "(\\[)",
+ "captures": {
+ "1": {
+ "name":
"punctuation.definition.constant.xml"
+ }
+ },
+ "end": "(\\])",
+ "name": "meta.internalsubset.xml",
+ "patterns": [
+ {
+ "include": "#EntityDecl"
+ },
+ {
+ "include": "#parameterEntity"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "parameterEntity": {
+ "captures": {
+ "1": {
+ "name":
"punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name":
"punctuation.definition.constant.xml"
+ }
+ },
+ "match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)",
+ "name": "constant.character.parameter-entity.xml"
+ },
+ "singlequotedString": {
+ "begin": "(?<!\\}\\s*+)'(?!\\s*+\\{)",
+ "beginCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name":
"punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.single.xml",
+ "patterns": [
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ }
+ ]
+ },
+ "tagStuff": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name":
"entity.other.attribute-name.namespace.xml"
+ },
+ "2": {
+ "name":
"entity.other.attribute-name.xml"
+ },
+ "3": {
+ "name":
"punctuation.separator.namespace.xml"
+ },
+ "4": {
+ "name":
"entity.other.attribute-name.localname.xml"
+ }
+ },
+ "match":
"(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)\\s*="
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "<%--",
+ "captures": {
+ "0": {
+ "name":
"punctuation.definition.comment.xml"
+ },
+ "end": "--%>",
+ "name": "comment.block.xml"
+ }
+ },
+ {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name":
"punctuation.definition.comment.xml"
+ }
+ },
+ "end": "-->",
+ "name": "comment.block.xml",
+ "patterns": [
+ {
+ "begin": "--(?!>)",
+ "captures": {
+ "0": {
+ "name":
"invalid.illegal.bad-comments-or-CDATA.xml"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
Review Comment:
But that's not DFDL specific. That's just normal XML/XSD. In fact, the only
syntax that is unique to DFDL is values of certain attributes (e.g. DFDL
expression). Can we rely on some other extension to define that syntax, and
this extension only includes logic for things specific to DFDL (e.g.
autocompletion, highlighting expressions) and can build on existing extensions
to implement everything else.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
