mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 12:25:22 +00:00
Some checks are pending
Publish to ghcr / build (linux/amd64, blacksmith-4vcpu-ubuntu-2404) (push) Waiting to run
Publish to ghcr / build (linux/arm64, blacksmith-8vcpu-ubuntu-2204-arm) (push) Waiting to run
Publish to ghcr / merge (push) Blocked by required conditions
Update Roadmap Released / update (push) Waiting to run
102 lines
No EOL
1.8 KiB
Text
102 lines
No EOL
1.8 KiB
Text
@external tokens negateToken from "./tokens" { negate }
|
|
|
|
@top Program { query }
|
|
|
|
@precedence {
|
|
negate,
|
|
and,
|
|
or @left
|
|
}
|
|
|
|
query {
|
|
OrExpr |
|
|
AndExpr |
|
|
expr
|
|
}
|
|
|
|
OrExpr { andExpr (or andExpr)+ }
|
|
|
|
AndExpr { expr expr+ }
|
|
|
|
andExpr { AndExpr | expr }
|
|
|
|
expr {
|
|
NegateExpr |
|
|
ParenExpr |
|
|
PrefixExpr |
|
|
QuotedTerm |
|
|
Term
|
|
}
|
|
|
|
NegateExpr { !negate negate (PrefixExpr | ParenExpr) }
|
|
|
|
ParenExpr { "(" query? ")" }
|
|
|
|
PrefixExpr {
|
|
ArchivedExpr |
|
|
RevisionExpr |
|
|
ContentExpr |
|
|
ContextExpr |
|
|
FileExpr |
|
|
ForkExpr |
|
|
VisibilityExpr |
|
|
RepoExpr |
|
|
LangExpr |
|
|
SymExpr |
|
|
RepoSetExpr
|
|
}
|
|
|
|
RevisionExpr { revisionKw value }
|
|
ContentExpr { contentKw value }
|
|
ContextExpr { contextKw value }
|
|
FileExpr { fileKw value }
|
|
RepoExpr { repoKw value }
|
|
LangExpr { langKw value }
|
|
SymExpr { symKw value }
|
|
RepoSetExpr { reposetKw value }
|
|
|
|
// Modifiers
|
|
ArchivedExpr { archivedKw archivedValue }
|
|
ForkExpr { forkKw forkValue }
|
|
VisibilityExpr { visibilityKw visibilityValue }
|
|
|
|
archivedValue { "yes" | "no" | "only" }
|
|
forkValue { "yes" | "no" | "only" }
|
|
visibilityValue { "public" | "private" | "any" }
|
|
|
|
QuotedTerm { quotedString }
|
|
Term { word }
|
|
|
|
value { quotedString | word }
|
|
|
|
@skip { space }
|
|
|
|
@tokens {
|
|
archivedKw { "archived:" }
|
|
revisionKw { "rev:" }
|
|
contentKw { "content:" | "c:" }
|
|
contextKw { "context:" }
|
|
fileKw { "file:" | "f:" }
|
|
forkKw { "fork:" }
|
|
visibilityKw { "visibility:" }
|
|
repoKw { "repo:" | "r:" }
|
|
langKw { "lang:" }
|
|
symKw { "sym:" }
|
|
reposetKw { "reposet:" }
|
|
|
|
or { "or" ![a-zA-Z0-9_] }
|
|
|
|
quotedString { '"' (!["\\\n] | "\\" _)* '"' }
|
|
|
|
word { (![ \t\n()]) (![ \t\n():] | ":" | "-")* }
|
|
|
|
space { $[ \t\n]+ }
|
|
|
|
@precedence {
|
|
quotedString,
|
|
archivedKw, revisionKw, contentKw, contextKw, fileKw,
|
|
forkKw, visibilityKw, repoKw, langKw,
|
|
symKw, reposetKw, or,
|
|
word
|
|
}
|
|
} |