feat: add kos parser and queries (#8389)

This commit is contained in:
Chris Dragan 2026-01-04 10:08:07 +00:00 committed by GitHub
parent 300b906a95
commit 31fc7e10cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 365 additions and 0 deletions

View file

@ -0,0 +1,149 @@
#!/usr/bin/env kos
# ^ keyword.directive
public var item = 1;
# ^ keyword
# ^ keyword
# ^ variable
# ^ operator
# ^ number
# ^ punctuation.delimiter
# hash comment
# <- @comment @spell
// slash comment
# <- @comment @spell
/* block comment */
# <- @comment @spell
fun name(arg1,
# ^ keyword.function
# ^ function
# ^ punctuation.bracket
# ^ variable
# ^ punctuation.delimiter
arg2 = "default",
# ^ variable
# ^ operator
# ^ string
# ^ punctuation.delimiter
arg3...)
# ^ variable
# ^ operator
# ^ punctuation.bracket
{
# <- punctuation.bracket
arg1 += 1
# ^ variable
# ^ operator
# ^ number
arg1 -= 2
# ^ variable
# ^ operator
# ^ number
arg1 *= 3
# ^ variable
# ^ operator
# ^ number
arg1 /= 4
# ^ variable
# ^ operator
# ^ number
arg1 %= 5
# ^ variable
# ^ operator
# ^ number
arg1 |= 6
# ^ variable
# ^ operator
# ^ number
arg1 &= 7
# ^ variable
# ^ operator
# ^ number
arg1 ^= 8
# ^ variable
# ^ operator
# ^ number
arg1 <<= 9
# ^ variable
# ^ operator
# ^ number
arg1 >>= 10
# ^ variable
# ^ operator
# ^ number
arg1 >>>= 11
# ^ variable
# ^ operator
# ^ number
arg1.prop[arg1](arg1)[void] = true
# ^ variable
# ^ punctuation.delimiter
# ^ property
# ^ punctuation.bracket
# ^ variable
# ^ punctuation.bracket
# ^ punctuation.bracket
# ^ variable
# ^ punctuation.bracket
# ^ punctuation.bracket
# ^ constant.builtin
# ^ operator
# ^ boolean
arg1 = 1 * (arg1 + 2) / arg1 - 3 % arg1
# ^ variable
# ^ operator
# ^ number
# ^ operator
# ^ punctuation.bracket
# ^ variable
# ^ operator
# ^ number
# ^ punctuation.bracket
# ^ operator
# ^ variable
# ^ operator
# ^ number
# ^ operator
# ^ variable
for const elem in arg1 {
# ^ keyword.repeat
# ^ keyword
# ^ variable
# ^ keyword.repeat
# ^ variable
# ^ punctuation.bracket
if elem {
# ^ keyword.conditional
# ^ variable
# ^ punctuation.bracket
continue
# ^ keyword.repeat
}
# ^ punctuation.bracket
else {
# ^ keyword.conditional
# ^ punctuation.bracket
break
# ^ keyword.repeat
}
# ^ punctuation.bracket
}
# <- punctuation.bracket
}
# <- punctuation.bracket
name(42)
# <- function.call
# ^ punctuation.bracket
# ^ number
# ^ punctuation.bracket
name.name()
# <- variable
# ^ punctuation.delimiter
# ^ function.method.call
# ^ punctuation.bracket
# ^ punctuation.bracket