{
	"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
	"name": "Slige",
	"patterns": [
		{ "include": "#keywords" },
		{ "include": "#strings" },
		{ "include": "#numbers" },
		{ "include": "#operators" },
		{ "include": "#punctuation" },
		{ "include": "#functions" },
		{ "include": "#idents" }
	],
	"repository": {
		"keywords": {
			"patterns": [
				{
					"name": "keyword.control.slige",
					"match": "\\b(break|return|let|fn|loop|if|else|struct|import|or|and|not)\\b"
				},
				{
					"name": "constant.language.slige",
					"match": "\\b(null|false|true)\\b"
				},
				{
					"name": "storage.type.slige",
					"match": "\\b(int|string|bool)\\b"
				}
			]
		},
		"strings": {
			"name": "string.quoted.double.slige",
			"begin": "\"",
			"end": "\"",
			"patterns": [
				{
					"name": "constant.character.escape.slige",
					"match": "\\\\."
				}
			]
		},
		"numbers": {
			"patterns": [
				{
					"name": "constant.numeric.slige",
					"match": "\\b0\\b"
				},
				{
					"name": "constant.numeric.slige",
					"match": "\\b[1-9][0-9]*(\\.[0-9]+)?\\b"
				},
				{
					"name": "constant.numeric.slige",
					"match": "\\b0x[0-9a-fA-F]+?\\b"
				},
				{
					"name": "constant.numeric.slige",
					"match": "\\b0b[01]+?\\b"
				}
			]
		},
		"operators": {
            "patterns": [
                {
                    "match": "\\+|\\-|\\*|\\/|=|(==)|(!=)|<|>|(<=)|(>=)|\\.|:|(\\->)",
                    "name": "keyword.operator.slige"
                }
            ]
        },
		"punctuation": {
			"patterns": [
				{
					"match": ";",
					"name": "punctuation.terminator.statement.slige"
				},
				{
					"match": ",",
					"name": "punctuation.separator.delimiter.slige"
				}
			]
		},
		"functions": {
            "patterns": [
                {
                    "match": "(?>\\b[a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=(?>\\:\\:<.*?>)?\\()",
                    "name": "entity.name.function.slige"
                }
            ]
        },
		"idents": {
            "patterns": [
                {
                    "match": "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b",
                    "name": "variable.other.slige"
                }
            ]
        }
	},
	"scopeName": "source.slige"
}