haru 0.27.3

A fast, dynamically-typed general purpose scripting language
Documentation
{
	"$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"
}