Initial commit
This commit is contained in:
commit
f8b8c528ca
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
node_modules/
|
||||||
|
package-lock.json
|
16
build.js
Normal file
16
build.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
const yaml = require('js-yaml')
|
||||||
|
const plist = require('plist')
|
||||||
|
|
||||||
|
const inPath = path.join(__dirname, 'sehn.tmLanguage.yaml')
|
||||||
|
const outPath = path.join(__dirname, 'package/syntaxes/sehn.tmLanguage')
|
||||||
|
|
||||||
|
fs.readFile(inPath, (err, str) => {
|
||||||
|
if (err) throw err
|
||||||
|
const data = yaml.load(str)
|
||||||
|
fs.writeFile(outPath, plist.build(data), (err) => {
|
||||||
|
if (err) throw err
|
||||||
|
})
|
||||||
|
})
|
15
package.json
Normal file
15
package.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "sehn-tm-language",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"private": true,
|
||||||
|
"description": "",
|
||||||
|
"scripts": {
|
||||||
|
"build": "node build.js"
|
||||||
|
},
|
||||||
|
"author": "James Dyson",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"js-yaml": "^3.12.0",
|
||||||
|
"plist": "^3.0.1"
|
||||||
|
}
|
||||||
|
}
|
20
package/package.json
Normal file
20
package/package.json
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "sehn",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"engines": {
|
||||||
|
"vscode": ">=0.9.0"
|
||||||
|
},
|
||||||
|
"publisher": "me",
|
||||||
|
"contributes": {
|
||||||
|
"languages": [{
|
||||||
|
"id": "sehn",
|
||||||
|
"aliases": ["SEHN", "sehn"],
|
||||||
|
"extensions": [".sehn"]
|
||||||
|
}],
|
||||||
|
"grammars": [{
|
||||||
|
"language": "sehn",
|
||||||
|
"scopeName": "source.sehn",
|
||||||
|
"path": "./syntaxes/sehn.tmLanguage"
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
420
package/syntaxes/sehn.tmLanguage
Normal file
420
package/syntaxes/sehn.tmLanguage
Normal file
@ -0,0 +1,420 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>SEHN</string>
|
||||||
|
<key>uuid</key>
|
||||||
|
<string>06947fd2-ab1f-4518-8f45-cc76b0294e5f</string>
|
||||||
|
<key>scopeName</key>
|
||||||
|
<string>source.sehn</string>
|
||||||
|
<key>fileTypes</key>
|
||||||
|
<array>
|
||||||
|
<string>sehn</string>
|
||||||
|
</array>
|
||||||
|
<key>foldingStartMarker</key>
|
||||||
|
<string>^\s*[{\[\`](?!.*[}\]\`],?\s*$)|[{\[\`]\s*$</string>
|
||||||
|
<key>foldingStopMarker</key>
|
||||||
|
<string>^\s*[}\]\`]</string>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#value</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
<key>repository</key>
|
||||||
|
<dict>
|
||||||
|
<key>value</key>
|
||||||
|
<dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#bool</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#real</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#text</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#text-list</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#list</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#dict</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#tag</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#kind</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#comment</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#illegal</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>bool</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>constant.language.boolean.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\b(?:true|false)\b</string>
|
||||||
|
</dict>
|
||||||
|
<key>real</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>constant.numeric.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\-?(?:(?:([0-9]+)(\.)([0-9]+))|(?:([1-9][0-9]*)(e)(-?)([1-9][0-9]+))|(?:([1-9][0-9]+)))</string>
|
||||||
|
</dict>
|
||||||
|
<key>text</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>string.quoted.double.sehn</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>"</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>"</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.string.begin.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.string.end.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#text-content</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>text-content</key>
|
||||||
|
<dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>constant.character.escape.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>invalid.illegal.unrecognized-string-escape.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\\.</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>text-list</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>meta.structure.stringlist</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>\`</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>\`</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.stringlist.begin.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.stringlist.end.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#text</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#comment</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#illegal</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>dict</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>meta.structure.dictionary.sehn</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>\{</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>\}</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.dictionary.begin.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.dictionary.end.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#dict-key</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#comment</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#dict-val</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>invalid.illegal.expected-dictionary-separator.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>[^\s\}]</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>dict-key</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>string.sehn support.type.property-name.sehn</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>"</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>"</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.support.type.property-name.begin.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.support.type.property-name.end.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#text-content</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>dict-val</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>meta.structure.dictionary.value.sehn</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>:</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>(,)|(?=\})</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.separator.dictionary.key-value.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>1</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.separator.dictionary.pair.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#value</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name"</key>
|
||||||
|
<string>invalid.illegal.expected-dictionary-separator.sehn</string>
|
||||||
|
<key>match"</key>
|
||||||
|
<string>[^\\s,]</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>list</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>meta.structure.list.sehn</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>\[</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>\]</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.list.begin.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.list.end.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.separator.list.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>,</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#value</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>invalid.illegal.expected-list-separator.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>[^\s\]]</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>tag</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>meta.structure.tag</string>
|
||||||
|
<key>begin</key>
|
||||||
|
<string>(?:(\b(?:[a-z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b)|(\b(?:[A-Z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b))(\()</string>
|
||||||
|
<key>end</key>
|
||||||
|
<string>(\))</string>
|
||||||
|
<key>beginCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>1</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>storage.type.tag.standard.sehn</string>
|
||||||
|
</dict>
|
||||||
|
<key>2</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>storage.type.tag.application.sehn</string>
|
||||||
|
</dict>
|
||||||
|
<key>3</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.tag.begin.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>endCaptures</key>
|
||||||
|
<dict>
|
||||||
|
<key>0</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>punctuation.definition.tag.end.sehn</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>include</key>
|
||||||
|
<string>#value</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>kind</key>
|
||||||
|
<dict>
|
||||||
|
<key>patterns</key>
|
||||||
|
<array>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>storage.type.base.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\b(?:none|bool|real|text|dict|list|kind)\b</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>storage.type.extension.standard.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\b(?:[a-z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b</string>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>storage.type.extension.application.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>\b(?:[A-Z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b</string>
|
||||||
|
</dict>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<key>comment</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>comment.line.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>#.*</string>
|
||||||
|
</dict>
|
||||||
|
<key>illegal</key>
|
||||||
|
<dict>
|
||||||
|
<key>name</key>
|
||||||
|
<string>invalid.illegal.sehn</string>
|
||||||
|
<key>match</key>
|
||||||
|
<string>[^\s]</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
195
sehn.tmLanguage.yaml
Normal file
195
sehn.tmLanguage.yaml
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
# =====================================
|
||||||
|
# Meta
|
||||||
|
|
||||||
|
name: SEHN
|
||||||
|
uuid: 06947fd2-ab1f-4518-8f45-cc76b0294e5f
|
||||||
|
scopeName: source.sehn
|
||||||
|
fileTypes:
|
||||||
|
- sehn
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
# Folding
|
||||||
|
|
||||||
|
# Matches the start of a dict, list or textlist as
|
||||||
|
# long as the end does not follow on the same line, ignoring
|
||||||
|
# whitespace and one optional comma OR if the start character
|
||||||
|
# is at the end of the line.
|
||||||
|
foldingStartMarker: '^\s*[{\[\`](?!.*[}\]\`],?\s*$)|[{\[\`]\s*$'
|
||||||
|
|
||||||
|
# Matches the end of a dict, list or textlist as
|
||||||
|
# long as it is not preceeded by anything other
|
||||||
|
# than whitespace.
|
||||||
|
foldingStopMarker: '^\s*[}\]\`]'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
# Root patterns
|
||||||
|
|
||||||
|
patterns:
|
||||||
|
- include: '#value'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
# Common patterns
|
||||||
|
|
||||||
|
repository:
|
||||||
|
value:
|
||||||
|
patterns:
|
||||||
|
- include: '#bool'
|
||||||
|
- include: '#real'
|
||||||
|
- include: '#text'
|
||||||
|
- include: '#text-list'
|
||||||
|
- include: '#list'
|
||||||
|
- include: '#dict'
|
||||||
|
- include: '#tag'
|
||||||
|
- include: '#kind'
|
||||||
|
- include: '#comment'
|
||||||
|
- include: '#illegal'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
bool:
|
||||||
|
name: constant.language.boolean.sehn
|
||||||
|
match: '\b(?:true|false)\b'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
real:
|
||||||
|
name: constant.numeric.sehn
|
||||||
|
match: '\-?(?:(?:([0-9]+)(\.)([0-9]+))|(?:([1-9][0-9]*)(e)(-?)([1-9][0-9]+))|(?:([1-9][0-9]+)))'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
text:
|
||||||
|
name: string.quoted.double.sehn
|
||||||
|
begin: '"'
|
||||||
|
end: '"'
|
||||||
|
beginCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.string.begin.sehn
|
||||||
|
endCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.string.end.sehn
|
||||||
|
patterns:
|
||||||
|
- include: '#text-content'
|
||||||
|
text-content:
|
||||||
|
patterns:
|
||||||
|
- name: constant.character.escape.sehn
|
||||||
|
match: '\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4})'
|
||||||
|
- name: invalid.illegal.unrecognized-string-escape.sehn
|
||||||
|
match: '\\.'
|
||||||
|
text-list:
|
||||||
|
name: meta.structure.stringlist
|
||||||
|
begin: '\`'
|
||||||
|
end: '\`'
|
||||||
|
beginCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.stringlist.begin.sehn
|
||||||
|
endCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.stringlist.end.sehn
|
||||||
|
patterns:
|
||||||
|
- include: '#text'
|
||||||
|
- include: '#comment'
|
||||||
|
- include: '#illegal'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
dict:
|
||||||
|
name: meta.structure.dictionary.sehn
|
||||||
|
begin: '\{'
|
||||||
|
end: '\}'
|
||||||
|
beginCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.dictionary.begin.sehn
|
||||||
|
endCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.dictionary.end.sehn
|
||||||
|
patterns:
|
||||||
|
- include: '#dict-key'
|
||||||
|
- include: '#comment'
|
||||||
|
- include: '#dict-val'
|
||||||
|
- name: invalid.illegal.expected-dictionary-separator.sehn
|
||||||
|
match: '[^\s\}]'
|
||||||
|
dict-key:
|
||||||
|
name: string.sehn support.type.property-name.sehn
|
||||||
|
begin: '"'
|
||||||
|
end: '"'
|
||||||
|
beginCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.support.type.property-name.begin.sehn
|
||||||
|
endCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.support.type.property-name.end.sehn
|
||||||
|
patterns:
|
||||||
|
- include: '#text-content'
|
||||||
|
dict-val:
|
||||||
|
name: meta.structure.dictionary.value.sehn
|
||||||
|
begin: ':'
|
||||||
|
end: '(,)|(?=\})'
|
||||||
|
beginCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.separator.dictionary.key-value.sehn
|
||||||
|
endCaptures:
|
||||||
|
1:
|
||||||
|
name: punctuation.separator.dictionary.pair.sehn
|
||||||
|
patterns:
|
||||||
|
- include: '#value'
|
||||||
|
- name": invalid.illegal.expected-dictionary-separator.sehn
|
||||||
|
match": '[^\\s,]'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
list:
|
||||||
|
name: meta.structure.list.sehn
|
||||||
|
begin: '\['
|
||||||
|
end: '\]'
|
||||||
|
beginCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.list.begin.sehn
|
||||||
|
endCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.list.end.sehn
|
||||||
|
patterns:
|
||||||
|
- name: punctuation.separator.list.sehn
|
||||||
|
match: ','
|
||||||
|
- include: '#value'
|
||||||
|
- name: invalid.illegal.expected-list-separator.sehn
|
||||||
|
match: '[^\s\]]'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
tag:
|
||||||
|
name: meta.structure.tag
|
||||||
|
begin: '(?:(\b(?:[a-z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b)|(\b(?:[A-Z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b))(\()'
|
||||||
|
end: '(\))'
|
||||||
|
beginCaptures:
|
||||||
|
1:
|
||||||
|
name: storage.type.tag.standard.sehn
|
||||||
|
2:
|
||||||
|
name: storage.type.tag.application.sehn
|
||||||
|
3:
|
||||||
|
name: punctuation.definition.tag.begin.sehn
|
||||||
|
endCaptures:
|
||||||
|
0:
|
||||||
|
name: punctuation.definition.tag.end.sehn
|
||||||
|
patterns:
|
||||||
|
- include: '#value'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
kind:
|
||||||
|
patterns:
|
||||||
|
- name: storage.type.base.sehn
|
||||||
|
match: '\b(?:none|bool|real|text|dict|list|kind)\b'
|
||||||
|
- name: storage.type.extension.standard.sehn
|
||||||
|
match: '\b(?:[a-z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b'
|
||||||
|
- name: storage.type.extension.application.sehn
|
||||||
|
match: '\b(?:[A-Z](?:[a-zA-Z0-9]*\/?[a-zA-Z0-9]+)+)\b'
|
||||||
|
|
||||||
|
# =====================================
|
||||||
|
|
||||||
|
comment:
|
||||||
|
name: comment.line.sehn
|
||||||
|
match: '#.*'
|
||||||
|
illegal:
|
||||||
|
name: invalid.illegal.sehn
|
||||||
|
match: '[^\s]'
|
Loading…
Reference in New Issue
Block a user