90 lines
2.2 KiB
YAML
90 lines
2.2 KiB
YAML
scopeName: source.squiggle
|
|
patterns:
|
|
- include: "#statement"
|
|
- include: "#expression"
|
|
- include: "#comment-block"
|
|
- include: "#comment-line"
|
|
repository:
|
|
statement:
|
|
patterns:
|
|
- include: "#let"
|
|
- include: "#defun"
|
|
expression:
|
|
patterns:
|
|
- include: "#integer"
|
|
- include: "#float"
|
|
- include: "#string"
|
|
- include: "#block"
|
|
- include: "#function-call"
|
|
let:
|
|
match: ^\s*(\w+)\s*=
|
|
captures:
|
|
"1":
|
|
name: variable.other.squiggle
|
|
defun:
|
|
begin: ^\s*(\w+)\s*(\()
|
|
end: (\))\s*=
|
|
beginCaptures:
|
|
"1":
|
|
name: entity.name.function.squiggle
|
|
"2":
|
|
name: punctuation.definition.arguments.begin.squiggle
|
|
endCaptures:
|
|
"1":
|
|
name: punctuation.definition.arguments.end.squiggle
|
|
patterns:
|
|
- include: "#array-parameters"
|
|
array-parameters:
|
|
begin: \b([\$_a-z]+[\$_a-zA-Z0-9]*)
|
|
end: \s*(?:(,)|(?=\)))
|
|
beginCaptures:
|
|
"1":
|
|
name: variable.parameter.function.squiggle
|
|
function-call:
|
|
begin: (\w+)\s*(\()
|
|
end: (\))
|
|
beginCaptures:
|
|
"1":
|
|
name: entity.name.function.squiggle
|
|
"2":
|
|
name: punctuation.definition.arguments.begin.squiggle
|
|
endCaptures:
|
|
"1":
|
|
name: punctuation.definition.arguments.end.squiggle
|
|
patterns:
|
|
- include: "$self"
|
|
comment-block:
|
|
begin: /\*
|
|
end: \*/
|
|
name: comment.block.squiggle
|
|
comment-line:
|
|
patterns:
|
|
- include: "#comment-line-double-slash"
|
|
- include: "#comment-line-number-sign"
|
|
comment-line-double-slash:
|
|
match: //.*
|
|
name: comment.line.double-slash.squiggle
|
|
comment-line-number-sign:
|
|
match: "#.*"
|
|
name: comment.line.number-sign.squiggle
|
|
block:
|
|
begin: "{"
|
|
end: "}"
|
|
beginCaptures:
|
|
"0":
|
|
name: punctuation.definition.block.squiggle
|
|
endCaptures:
|
|
"0":
|
|
name: punctuation.definition.block.squiggle
|
|
patterns:
|
|
- include: "$self"
|
|
integer:
|
|
match: \b\d+([_a-zA-Z]+[_a-zA-Z0-9]*)?
|
|
name: constant.numeric.integer.squiggle
|
|
float:
|
|
match: \b(\d+\.\d*|\.?\d+)([eE]-?\d+)?([_a-zA-Z]+[_a-zA-Z0-9]*)?
|
|
name: constant.numeric.float.squiggle
|
|
string:
|
|
match: \".*?\"
|
|
name: string.quoted.double.squiggle
|