Files
JiboSDK/grammars/esml.json

239 lines
6.8 KiB
JSON
Raw Normal View History

2026-03-22 03:21:45 +02:00
{
"scopeName": "text.esml",
"fileTypes": [
"esml"
],
"name": "Jibo Embodied Speech Markup Language",
"patterns": [
{
"begin": "(</?)(tts)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.tts.begin.esml"
},
"2": {
"name": "entity.tag.name.tts.esml"
}
},
"end": "(/?>)",
"endCaptures": {
"1": {
"name": "keyword.control.tts.end.esml"
}
},
"name": "meta.tag.tts.esml",
"patterns": [
{
"include": "#tts-tag-stuff"
}
]
},
{
"begin": "(</?)(anim|es|ssa|sfx)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.anim.begin.esml"
},
"2": {
"name": "entity.name.tag.anim.esml"
}
},
"end": "(/?>)",
"endCaptures": {
"1": {
"name": "keyword.control.anim.end.esml"
}
},
"name": "meta.tag.anim.esml",
"patterns": [
{
"include": "#es-ssa-sfx-anim-tag-stuff"
}
]
},
{
"begin": "(</?)(sound)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.sound.begin.esml"
},
"2": {
"name": "entity.name.tag.sound.esml"
}
},
"end": "(/?>)",
"endCaptures": {
"1": {
"name": "keyword.control.sound.end.esml"
}
},
"name": "meta.tag.sound.esml",
"patterns": [
{
"include": "#sound-tag-stuff"
}
]
},
{
"begin": "(</?)(break)\\b",
"beginCaptures": {
"1": {
"name": "keyword.control.break.begin.esml"
},
"2": {
"name": "entity.name.tag.break.other.esml"
}
},
"end": "(/?>)",
"endCaptures": {
"1": {
"name": "keyword.control.break.end.esml"
}
},
"name": "meta.tag.break.esml",
"patterns": [
{
"include": "#break-tag-stuff"
}
]
},
{
"begin": "(</?)((?!(tts|anim|sound|break|es|ssa|sfx))\\w*)",
"beginCaptures": {
"1": {
"name": "keyword.control.tag.begin.esml"
},
"2": {
"name": "invalid.illegal.entity.name.esml"
}
},
"end": "(/?>)",
"endCaptures": {
"1": {
"name": "keyword.control.tag.end.esml"
}
},
"name": "meta.tag.other.esml"
},
{
"match": "<>",
"name": "invalid.illegal.incomplete.emsl"
}
],
"repository": {
"string-double-quoted": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.esml"
}
},
"end": "\"",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.esml"
}
},
"name": "string.quoted.double.esml"
},
"string-single-quoted": {
"begin": "'",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.esml"
}
},
"end": "'",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.esml"
}
},
"name": "string.quoted.single.esml"
},
"tts-attribute": {
"match": "(?<=[^=])\\b(params|config)",
"name": "entity.other.tts.attribute-name.esml"
},
"es-ssa-sfx-anim-attribute": {
"match": "(?<=[^=])\\b(path|name|cat|nonBlocking|endNeutral|filter|layers)",
"name": "entity.other.es-ssa-sfx-anim.attribute-name.esml"
},
"sound-attribute": {
"match": "(?<=[^=])\\b(path|nonBlocking)",
"name": "entity.other.sound.attribute-name.esml"
},
"break-attribute": {
"match": "(?<=[^=])\\b(size)",
"name": "entity.other.break.attribute-name.esml"
},
"tts-tag-stuff": {
"patterns": [
{
"include": "#tts-attribute"
},
{
"include": "#string-double-quoted"
},
{
"include": "#string-single-quoted"
},
{
"include": "#unquoted-attribute"
}
]
},
"es-ssa-sfx-anim-tag-stuff": {
"patterns": [
{
"include": "#es-ssa-sfx-anim-attribute"
},
{
"include": "#string-double-quoted"
},
{
"include": "#string-single-quoted"
},
{
"include": "#unquoted-attribute"
}
]
},
"sound-tag-stuff": {
"patterns": [
{
"include": "#sound-attribute"
},
{
"include": "#string-double-quoted"
},
{
"include": "#string-single-quoted"
},
{
"include": "#unquoted-attribute"
}
]
},
"break-tag-stuff": {
"patterns": [
{
"include": "#break-attribute"
},
{
"include": "#string-double-quoted"
},
{
"include": "#string-single-quoted"
},
{
"include": "#unquoted-attribute"
}
]
},
"unquoted-attribute": {
"match": "(?<==)(?:[^\\s<>/'\"]|/(?!>))+",
"name": "invalid.illegal.unquoted.esml"
}
}
}