-- mod-version:1 local syntax = require "core.syntax" syntax.add { name = "Zongor's Transpiler Language", files = { "%.ztl$" }, comment = "//", block_comment = { '/*', '*/' }, patterns = { { pattern = { "/%*", "%*/" }, type = "comment" }, { pattern = "//.-\n", type = "comment" }, { pattern = "\\\\.-\n", type = "string" }, { pattern = { '"', '"', '\\' }, type = "string" }, { pattern = { "'", "'", '\\' }, type = "string" }, { pattern = "[iuv][%d_]+", type = "keyword2" }, { pattern = "[9][%w_]*", type = "keyword2" }, { pattern = "%d[%d_]*%.[%d_]*", type = "number" }, { pattern = "%d[%d_]*", type = "number" }, { pattern = "[%+%-=/%*%^%%<>!~|&%.%?]", type = "operator" }, { pattern = "[%a_][%w_]*()%s*%(", type = {"function", "normal"} }, { pattern = "[A-Z][%w_]*", type = "keyword2" }, { pattern = "[%a_][%w_]*", type = "symbol" }, { pattern = "@()[%a_][%w_]*", type = {"operator", "function"} }, { regex = [[(?:[^"\\]|\\.)*()\s*:]], type = { "number" } }, -- key }, symbols = { ["continue"] = "keyword", ["break"] = "keyword", ["switch"] = "keyword", ["for"] = "keyword", ["in"] = "keyword", ["while"] = "keyword", ["const"] = "keyword", ["test"] = "keyword", ["export"] = "keyword", ["if"] = "keyword", ["else"] = "keyword", ["return"] = "keyword", ["and"] = "keyword", ["or"] = "keyword", ["not"] = "keyword", ["interface"] = "keyword", ["struct"] = "keyword", ["enum"] = "keyword", ["union"] = "keyword", ["inline"] = "keyword", ["use"] = "keyword", -- types ["str"] = "keyword2", ["f16"] = "keyword2", ["f32"] = "keyword2", ["f64"] = "keyword2", ["f128"] = "keyword2", ["err"] = "keyword2", ["rgb"] = "keyword2", ["hsv"] = "keyword2", ["rgba"] = "keyword2", ["void"] = "keyword2", ["bool"] = "keyword2", ["true"] = "literal", ["false"] = "literal", ["null"] = "literal", ["undefined"] = "literal", }, }