232 lines
5.3 KiB
YAML
232 lines
5.3 KiB
YAML
scopeName: source.reid
|
|
patterns:
|
|
- include: "#import"
|
|
- include: "#extern"
|
|
- include: "#expression"
|
|
repository:
|
|
# function-definition:
|
|
# begin: "(fn)\\s*(\\w+)\\(((\\w+)\\s*\\:\\s*(\\w+),?)*\\)\\s*->\\s*(\\w+)\\s*\\{"
|
|
# end: "\\}"
|
|
# beginCaptures:
|
|
# 1:
|
|
# name: "keyword.other"
|
|
# 2:
|
|
# name: "entity.name.function"
|
|
# 4:
|
|
# name: "entity.name.parameter"
|
|
# 5:
|
|
# name: "entity.name.type"
|
|
# 6:
|
|
# name: "entity.name.type"
|
|
# patterns:
|
|
# - include: "#type"
|
|
# - include: "#expression"
|
|
import:
|
|
begin: "(import)\\s*"
|
|
end: ";"
|
|
beginCaptures:
|
|
1:
|
|
name: keyword
|
|
endCaptures:
|
|
0:
|
|
name: punctuation.semi.reid
|
|
patterns:
|
|
- include: "#identifier"
|
|
- include: "#punctiation"
|
|
punctuation:
|
|
patterns:
|
|
- match: "::"
|
|
name: keyword.operator.namespace.reid
|
|
- match: ";"
|
|
name: punctuation.semi.reid
|
|
- match: "."
|
|
name: punctuation.dot.reid
|
|
- match: ","
|
|
name: punctuation.comma.reid
|
|
expression:
|
|
patterns:
|
|
- include: "#comment"
|
|
- include: "#fn-signature"
|
|
- include: "#binop-impl"
|
|
- include: "#type-impl"
|
|
- include: "#struct-definition"
|
|
- include: "#block"
|
|
- include: "#binop"
|
|
- include: "#namespace"
|
|
- include: "#cast"
|
|
- include: "#function-call"
|
|
- include: "#parenthesis"
|
|
- include: "#number-literal"
|
|
- include: "#string-literal"
|
|
- include: "#common-type"
|
|
- include: "#array"
|
|
- include: "#keywords"
|
|
- include: "#struct-expression"
|
|
- include: "#identifier"
|
|
- include: "#punctuation"
|
|
comment:
|
|
match: "\\/\\/(.|\\/)*"
|
|
name: comment.line.double-slash.reid
|
|
extern:
|
|
begin: "extern"
|
|
end: "\\;"
|
|
beginCaptures:
|
|
0:
|
|
name: keyword.fn.reid
|
|
patterns:
|
|
- include: "#expression"
|
|
fn-signature:
|
|
begin: "(fn)\\s*(\\w+)\\("
|
|
beginCaptures:
|
|
1:
|
|
name: keyword.fn.reid
|
|
2:
|
|
name: entity.name.function.reid
|
|
end: "\\)"
|
|
patterns:
|
|
- include: "#annotated-identifier"
|
|
- include: "#keywords"
|
|
- include: "#binop"
|
|
endCaptures:
|
|
2:
|
|
name: entity.name.type.reid
|
|
type-impl:
|
|
begin: >
|
|
(impl)\s*
|
|
(\w+)\s*
|
|
\{
|
|
end: "\\}"
|
|
captures:
|
|
1:
|
|
name: keyword.impl.reid
|
|
2:
|
|
name: entity.name.type
|
|
patterns:
|
|
- include: "#expression"
|
|
binop-impl:
|
|
begin: "(impl)\\s+(binop)\\s+\\(((.*)\\s*:\\s*(.*))\\)(.*)\\(((.*)\\s*:\\s*(.*))\\)\\s*->\\s*(\\w+)\\s*\\{"
|
|
end: "\\}"
|
|
beginCaptures:
|
|
1:
|
|
name: keyword.impl.reid
|
|
2:
|
|
name: keyword.impl.reid
|
|
4:
|
|
name: variable.parameter.binop.reid
|
|
5:
|
|
name: entity.name.type.parameter.binop.reid
|
|
6:
|
|
name: keyword.operator.math.reid
|
|
8:
|
|
name: variable.parameter.binop.reid
|
|
9:
|
|
name: entity.name.type.parameter.binop.reid
|
|
10:
|
|
name: entity.name.type.return.binop.reid
|
|
patterns:
|
|
- include: "#expression"
|
|
struct-definition:
|
|
begin: "(struct)\\s*(\\w+)\\s*\\{"
|
|
end: "\\}"
|
|
captures:
|
|
1:
|
|
name: keyword.struct.reid
|
|
2:
|
|
name: entity.name.type
|
|
patterns:
|
|
- include: "#annotated-identifier"
|
|
struct-expression:
|
|
begin: "([A-Z]\\w*)\\s*\\{"
|
|
end: "\\}"
|
|
captures:
|
|
1:
|
|
name: entity.name.type.struct.reid
|
|
patterns:
|
|
- include: "#expression"
|
|
number-literal:
|
|
match: "[0-9]+(\\.[0-9]+)?"
|
|
name: "constant.numeric"
|
|
string-literal:
|
|
begin: '"'
|
|
end: '"'
|
|
name: string.quoted.double
|
|
patterns:
|
|
- match: "\\."
|
|
name: constant.character.escape
|
|
block:
|
|
begin: "\\{"
|
|
end: "\\}"
|
|
patterns:
|
|
- include: "#expression"
|
|
namespace:
|
|
match: "(\\w+)(\\:\\:)"
|
|
captures:
|
|
1:
|
|
name: entity.name.function.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
|
|
patterns:
|
|
- include: "#expression"
|
|
parenthesis:
|
|
begin: "\\("
|
|
end: "\\)"
|
|
beginCaptures:
|
|
0:
|
|
name: keyword.operator.parenthesis.reid
|
|
endCaptures:
|
|
0:
|
|
name: keyword.operator.parenthesis.reid
|
|
patterns:
|
|
- include: "#expression"
|
|
annotated-identifier:
|
|
begin: "(\\w+)\\:"
|
|
end: ","
|
|
beginCaptures:
|
|
1:
|
|
name: variable.language.reid
|
|
patterns:
|
|
- include: "#expression"
|
|
identifier:
|
|
match: "\\w+"
|
|
name: variable.language.reid
|
|
keywords:
|
|
patterns:
|
|
- match: "let|mut|pub"
|
|
name: "storage.type.reid"
|
|
- match: "if|return"
|
|
name: "keyword.control"
|
|
- match: "self"
|
|
name: "variable.language.self.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: "u8|u16|u32|u64|u128|i8|i16|i32|i64|i128|bool"
|
|
name: entity.name.type.common.reid
|
|
|
|
|