282 lines
5.8 KiB
JSON
282 lines
5.8 KiB
JSON
{
|
|
"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"
|
|
}
|
|
}
|
|
}
|