150 lines
3.8 KiB
YAML
150 lines
3.8 KiB
YAML
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
|
|
|
|
|