{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
"name": "Hana",
"patterns": [
{ "include": "#keywords" },
{ "include": "#comments" },
{ "include": "#operators" },
{ "include": "#numerics" },
{ "include": "#booleans" },
{ "include": "#strings" },
{ "include": "#strings-single" },
{ "include": "#variables" }
],
"repository": {
"keywords": {
"patterns": [
{
"name": "keyword.control.hana",
"match": "\\b(if|else|while|for|then|to|step|function|record|continue|break|return|try|case|raise|begin|end)\\b"
},
{
"name": "keyword.other.control",
"match": "\\b(as)\\b"
},
{
"name": "keyword.other.modules",
"match": "\\buse\\b"
}]
},
"comments": {
"patterns": [
{
"name": "comment.line.hana",
"match": "//.*"
},
{
"name": "comment.block.hana",
"begin": "/\\*",
"end": "\\*/"
}
]
},
"variables": {
"patterns": [
{
"name": "variable.language.hana",
"match": "\\b(self|print|input)\\b"
},
{
"name": "variable.other.hana",
"match": "\\b[\\_$a-z][\\_$a-zA-Z0-9\\?\\!]*\\b"
},
{
"name": "variable.other.object.hana",
"match": "\\b[A-Z][\\_$a-zA-Z0-9\\?\\!]*\\b"
}
]
},
"operators": {
"patterns": [
{
"name": "keyword.operator.assignment.compound.hana",
"match": "\\*\\=|\\/\\=|\\+\\=|\\-\\="
},
{
"name": "keyword.operator.arithmetic.hana",
"match": "\\+|-|\\*|\\/|mod"
},
{
"name": "keyword.operator.comparison.hana",
"match": "==|\\!="
},
{
"name": "keyword.operator.relational.hana",
"match": "\\<\\=|\\>\\=|\\<|\\>"
},
{
"name": "keyword.operator.logical.hana",
"match": "\\b(and|or|not|of|in)\\b"
},
{
"name": "keyword.operator.assignment.hana",
"match": "\\="
},
{
"name": "keyword.operator.member.hana",
"match": "(\\.|::)"
}
]
},
"numerics": {
"patterns": [
{
"name": "constant.numeric.decimal.hana",
"match": "\\b[0-9]+(\\.[0-9]+)?\\b"
},
{
"name": "constant.numeric.hex.hana",
"match": "\\b0x[0-9a-fA-F]+\\b"
}
]
},
"booleans": {
"patterns": [{
"name": "constant.boolean.hana",
"match": "\\b(true|false)\\b"
}]
},
"strings": {
"name": "string.quoted.double.hana",
"begin": "\"",
"end": "\"",
"patterns": [
{
"name": "constant.character.escape.hana",
"match": "\\\\."
}
]
},
"strings-single": {
"name": "string.quoted.single.hana",
"begin": "'",
"end": "'",
"patterns": [
{
"name": "constant.character.escape.hana",
"match": "\\\\."
}
]
}
},
"scopeName": "source.hana.scope"
}