mirror of
https://github.com/AdaCore/langkit.git
synced 2026-02-12 12:28:12 -08:00
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.
104 lines
2.2 KiB
Plaintext
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_]*"
|
|
}
|