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