Files
langkit/contrib/python/tokens.lkt
Pierre-Marie de Rodat ca0f8eb315 Transition Libpythonlang to Lkt/lkm
Also stop building it in `manage.py`` (it is no longer needed for common
Langkit operations). Rename and repurpose `contrib/python_grammar` to
generate+build Libpythonlang, in an attempt to ensure it does not bit
rot.
2025-02-06 09:31:49 +00:00

104 lines
2.2 KiB
Plaintext

@indentation_tracking
lexer python_lexer {
val string_dbq = p"\"(\\\\\"|[^\n\"])*\""
val string_sq = p"'(\\\\'|[^\n'])*'"
val mlstring_dbq = p"\"\"\"([^\"]|(\"[^\"])|(\"\"[^\"])|\n)*\"\"\""
val mlstring_sq = p"'''([^']|('[^'])|(''[^'])|\n)*'''"
@pre_rule
@ignored
_ <- p"\\\\\n[ \r\t]*"
String <-
p"(u|U)?(r|R)?({mlstring_sq}|{mlstring_dbq}|{string_sq}|{string_dbq})"
@ignored
_ <- p"[ \r\t]+"
@trivia()
Comment <- p"#(.?)+"
RshAssign <- ">>="
Is <- "is"
Equals <- "=="
Def <- "def"
Lte <- "<="
Raise <- "raise"
Mod <- "%"
Yield <- "yield"
XorAssign <- "^="
As <- "as"
Lambda <- "lambda"
Backtick <- "`"
Try <- "try"
Divide <- "/"
Invert <- "~"
Return <- "return"
Assert <- "assert"
Xor <- "^"
Break <- "break"
@text(end_ignore_layout=true)
Rbrack <- "]"
PowerAssign <- "**="
Import <- "import"
Exec <- "exec"
Comma <- ","
@text(start_ignore_layout=true)
LPar <- "("
Dot <- "."
Gte <- ">="
FloordivAssign <- "//="
Multiply <- "*"
DivAssign <- "/="
At <- "@"
Assign <- "="
Floordiv <- "//"
Notequal <- "!="
MultAssign <- "*="
ModAssign <- "%="
Gt <- ">"
Power <- "**"
Amp <- "&"
Not <- "not"
Colon <- ":"
Diamond <- "<>"
In <- "in"
@text(start_ignore_layout=true)
LCurl <- "{"
Class <- "class"
OrAssign <- "|="
Elif <- "elif"
And <- "and"
Semicolon <- ";"
AddAsign <- "+="
Print <- "print"
Lsh <- "<<"
Continue <- "continue"
While <- "while"
Except <- "except"
If <- "if"
Else <- "else"
Del <- "del"
MinusAssign <- "-="
Or <- "or"
Minus <- "-"
@text(start_ignore_layout=true)
Lbrack <- "["
AndAssign <- "&="
@text(end_ignore_layout=true)
RPar <- ")"
Global <- "global"
For <- "for"
From <- "from"
Rsh <- ">>"
Finally <- "finally"
Pass <- "pass"
LshAssign <- "<<="
BinOr <- "|"
@text(end_ignore_layout=true)
Rcurl <- "}"
With <- "with"
Plus <- "+"
Lt <- "<"
Number <- p"[0-9]+"
@symbol()
Identifier <- p"[a-zA-Z_][a-zA-Z0-9_]*"
}