package lexers import ( . "github.com/alecthomas/chroma" // nolint ) // Cython lexer. var Cython = Register(MustNewLexer( &Config{ Name: "Cython", Aliases: []string{"cython", "pyx", "pyrex"}, Filenames: []string{"*.pyx", "*.pxd", "*.pxi"}, MimeTypes: []string{"text/x-cython", "application/x-cython"}, }, Rules{ "root": { {`\n`, Text, nil}, {`^(\s*)("""(?:.|\n)*?""")`, ByGroups(Text, LiteralStringDoc), nil}, {`^(\s*)('''(?:.|\n)*?''')`, ByGroups(Text, LiteralStringDoc), nil}, {`[^\S\n]+`, Text, nil}, {`#.*$`, Comment, nil}, {`[]{}:(),;[]`, Punctuation, nil}, {`\\\n`, Text, nil}, {`\\`, Text, nil}, {`(in|is|and|or|not)\b`, OperatorWord, nil}, {`(<)([a-zA-Z0-9.?]+)(>)`, ByGroups(Punctuation, KeywordType, Punctuation), nil}, {`!=|==|<<|>>|[-~+/*%=<>&^|.?]`, Operator, nil}, {`(from)(\d+)(<=)(\s+)(<)(\d+)(:)`, ByGroups(Keyword, LiteralNumberInteger, Operator, Name, Operator, Name, Punctuation), nil}, Include("keywords"), {`(def|property)(\s+)`, ByGroups(Keyword, Text), Push("funcname")}, {`(cp?def)(\s+)`, ByGroups(Keyword, Text), Push("cdef")}, {`(cdef)(:)`, ByGroups(Keyword, Punctuation), nil}, {`(class|struct)(\s+)`, ByGroups(Keyword, Text), Push("classname")}, {`(from)(\s+)`, ByGroups(Keyword, Text), Push("fromimport")}, {`(c?import)(\s+)`, ByGroups(Keyword, Text), Push("import")}, Include("builtins"), Include("backtick"), {`(?:[rR]|[uU][rR]|[rR][uU])"""`, LiteralString, Push("tdqs")}, {`(?:[rR]|[uU][rR]|[rR][uU])'''`, LiteralString, Push("tsqs")}, {`(?:[rR]|[uU][rR]|[rR][uU])"`, LiteralString, Push("dqs")}, {`(?:[rR]|[uU][rR]|[rR][uU])'`, LiteralString, Push("sqs")}, {`[uU]?"""`, LiteralString, Combined("stringescape", "tdqs")}, {`[uU]?'''`, LiteralString, Combined("stringescape", "tsqs")}, {`[uU]?"`, LiteralString, Combined("stringescape", "dqs")}, {`[uU]?'`, LiteralString, Combined("stringescape", "sqs")}, Include("name"), Include("numbers"), }, "keywords": { {Words(``, `\b`, `assert`, `break`, `by`, `continue`, `ctypedef`, `del`, `elif`, `else`, `except`, `except?`, `exec`, `finally`, `for`, `fused`, `gil`, `global`, `if`, `include`, `lambda`, `nogil`, `pass`, `print`, `raise`, `return`, `try`, `while`, `yield`, `as`, `with`), Keyword, nil}, {`(DEF|IF|ELIF|ELSE)\b`, CommentPreproc, nil}, }, "builtins": { {Words(`(?