{ "scopeName": "source.reid", "patterns": [ { "include": "#expression" } ], "repository": { "expression": { "patterns": [ { "include": "#comment" }, { "include": "#fn-signature" }, { "include": "#namespace" }, { "include": "#common-type" }, { "include": "#struct-definition" }, { "include": "#binop" }, { "include": "#cast" }, { "include": "#function-call" }, { "include": "#parenthesis" }, { "include": "#array" }, { "include": "#keywords" }, { "include": "#number-literal" }, { "include": "#string-literal" }, { "include": "#identifier" }, { "include": "#punctuation" } ] }, "punctuation": { "patterns": [ { "match": "::", "name": "keyword.operator.namespace.reid" }, { "match": ":", "name": "keyword.operator.colon.reid" }, { "match": ";", "name": "punctuation.semi.reid" }, { "match": ".", "name": "punctuation.dot.reid" }, { "match": ",", "name": "punctuation.comma.reid" }, { "match": "\\{|\\}", "name": "punctuation.brackets.curly.reid" }, { "match": "\\(|\\)", "name": "punctuation.parenthesis.reid" } ] }, "comment": { "match": "\\/\\/(.|\\/)*", "name": "comment.line.double-slash.reid" }, "struct-definition": { "match": "(struct)\\s*(\\w+)", "captures": { "1": { "name": "keyword.struct.reid" }, "2": { "name": "entity.name.type" } } }, "struct-expression": { "begin": "\\b([A-Z]\\w*)\\s*\\{", "end": "\\}", "captures": { "1": { "name": "entity.name.type.struct.reid" } }, "patterns": [ { "include": "#expression" } ] }, "number-literal": { "patterns": [ { "match": "\\b0x[0-9a-fA-F]+(\\.[0-9a-fA-F]+)?\\b", "name": "constant.hexadecimal" }, { "match": "\\b0o[0-7]+(\\.[0-7]+)?\\b", "name": "constant.octal" }, { "match": "\\b0b[01]+(\\.[01]+)?\\b", "name": "constant.binary" }, { "match": "\\b[0-9]+(\\.[0-9]+)?\\b", "name": "constant.numeric" } ] }, "string-literal": { "begin": "\"", "end": "\"", "name": "string.quoted.double", "patterns": [ { "match": "\\\\\\w", "name": "constant.character.escape" } ] }, "namespace": { "match": "(\\w+)(\\:\\:)", "captures": { "1": { "name": "entity.name.namespace.reid" }, "2": { "name": "keyword.operator.namespace.reid" } } }, "cast": { "match": "(as)\\s+(\\w+)", "captures": { "1": { "name": "keyword.cast.reid" }, "2": { "name": "entity.name.type.reid" } } }, "function-call": { "begin": "(\\w+)?(\\()", "end": "(\\))", "beginCaptures": { "1": { "name": "entity.name.function.reid" }, "2": { "name": "punctuation.parenthesis.reid" } }, "endCaptures": { "1": { "name": "punctuation.parenthesis.reid" } }, "patterns": [ { "include": "#expression" } ] }, "parenthesis": { "begin": "\\(", "end": "\\)", "beginCaptures": { "0": { "name": "keyword.operator.parenthesis.reid" } }, "endCaptures": { "0": { "name": "keyword.operator.parenthesis.reid" } }, "patterns": [ { "include": "#expression" } ] }, "identifier": { "patterns": [ { "match": "\\b(?:\\w+)\\b", "name": "variable.language.reid" } ] }, "keywords": { "patterns": [ { "match": "\\b(?:let|mut|pub|extern)\\b", "name": "storage.type.reid" }, { "match": "\\bimport\\b", "name": "keyword.import.reid" }, { "match": "\\bbinop\\b", "name": "keyword.binop.reid" }, { "match": "\\bimpl\\b", "name": "keyword.impl.reid" }, { "match": "\\b(?:if|return|for|in)\\b", "name": "keyword.control" }, { "match": "\\bself\\b", "name": "variable.language.self.reid" }, { "match": "\\bfn\\b", "name": "keyword.fn.reid" } ] }, "binop": { "match": "\\<\\=|\\>\\=|\\=\\=|\\<|\\>|\\*|\\+|\\-|\\^|\\&\\&|\\&", "name": "keyword.operator.math.reid" }, "array": { "begin": "\\[", "end": "\\]", "beginCaptures": { "0": { "name": "entity.name.type.array.reid" } }, "endCaptures": { "0": { "name": "entity.name.type.array.reid" } }, "patterns": [ { "include": "#expression" } ] }, "common-type": { "match": "\\b(?:u8|u16|u32|u64|u128|i8|i16|i32|i64|i128|f16|f16b|f32|f64|f80|f128|f128ppc|bool|char|([A-Z]\\w*))\\b", "name": "entity.name.type.common.reid" } } }