diff options
author | arcadia-devtools <[email protected]> | 2022-06-09 14:39:19 +0300 |
---|---|---|
committer | arcadia-devtools <[email protected]> | 2022-06-09 14:39:19 +0300 |
commit | c04b663c7bb4b750deeb8f48f620497ec13da8fa (patch) | |
tree | 151ebc8bfdd2ad918caf5e6e2d8013e14272ddf8 /contrib/python/Pygments/py3/pygments/lexers/q.py | |
parent | 0d55ca22c507d18c2f35718687e0b06d9915397b (diff) |
intermediate changes
ref:2d4f292087954c9344efdabb7b2a67f466263c65
Diffstat (limited to 'contrib/python/Pygments/py3/pygments/lexers/q.py')
-rw-r--r-- | contrib/python/Pygments/py3/pygments/lexers/q.py | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/contrib/python/Pygments/py3/pygments/lexers/q.py b/contrib/python/Pygments/py3/pygments/lexers/q.py new file mode 100644 index 00000000000..21a049fab4e --- /dev/null +++ b/contrib/python/Pygments/py3/pygments/lexers/q.py @@ -0,0 +1,235 @@ +""" + pygments.lexers.q + ~~~~~~~~~~~~~~~~~ + + Lexer for the Q programming language. + + :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. + :license: BSD, see LICENSE for details. +""" + +from pygments.lexer import RegexLexer, words, include, bygroups, inherit +from pygments.token import ( + Comment, + Keyword, + Name, + Number, + Operator, + Punctuation, + String, + Text, + Whitespace, + Literal, + Generic, +) + +__all__ = ["KLexer", "QLexer"] + + +class KLexer(RegexLexer): + """ + For `K <https://code.kx.com/>`_ source code. + + .. versionadded:: 2.12 + """ + + name = "K" + aliases = ["k"] + filenames = ["*.k"] + + tokens = { + "whitespace": [ + # hashbang script + (r"^#!.*", Comment.Hashbang), + # Comments + (r"^/\s*\n", Comment.Multiline, "comments"), + (r"(?<!\S)/.*", Comment.Single), + # Whitespace + (r"\s+", Whitespace), + # Strings + (r"\"", String.Double, "strings"), + ], + "root": [ + include("whitespace"), + include("keywords"), + include("declarations"), + ], + "keywords": [ + ( + words( + ("abs", "acos", "asin", "atan", "avg", "bin", + "binr", "by", "cor", "cos", "cov", "dev", + "delete", "div", "do", "enlist", "exec", "exit", + "exp", "from", "getenv", "hopen", "if", "in", + "insert", "last", "like", "log", "max", "min", + "prd", "select", "setenv", "sin", "sqrt", "ss", + "sum", "tan", "update", "var", "wavg", "while", + "within", "wsum", "xexp"), + suffix=r"\b", + ), + Operator.Word, + ), + ], + "declarations": [ + # Timing + (r"^\\ts?", Comment.Preproc), + ( + r"^(\\\w\s+[^/\n]*?)(/.*)", + bygroups(Comment.Preproc, Comment.Single), + ), + # Generic System Commands + (r"^\\\w.*", Comment.Preproc), + # Prompt + (r"^[a-zA-Z]\)", Generic.Prompt), + # Function Names + ( + r"([.]?[a-zA-Z][\w.]*)(\s*)([-.~=!@#$%^&*_+|,<>?/\\:']?:)(\s*)(\{)", + bygroups(Name.Function, Whitespace, Operator, Whitespace, Punctuation), + "functions", + ), + # Variable Names + ( + r"([.]?[a-zA-Z][\w.]*)(\s*)([-.~=!@#$%^&*_+|,<>?/\\:']?:)", + bygroups(Name.Variable, Whitespace, Operator), + ), + # Functions + (r"\{", Punctuation, "functions"), + # Parentheses + (r"\(", Punctuation, "parentheses"), + # Brackets + (r"\[", Punctuation, "brackets"), + # Errors + (r"'`([a-zA-Z][\w.]*)?", Name.Exception), + # File Symbols + (r"`:([a-zA-Z/][\w./]*)?", String.Symbol), + # Symbols + (r"`([a-zA-Z][\w.]*)?", String.Symbol), + # Numbers + include("numbers"), + # Variable Names + (r"[a-zA-Z][\w.]*", Name), + # Operators + (r"[-=+*#$%@!~^&:.,<>'\\|/?_]", Operator), + # Punctuation + (r";", Punctuation), + ], + "functions": [ + include("root"), + (r"\}", Punctuation, "#pop"), + ], + "parentheses": [ + include("root"), + (r"\)", Punctuation, "#pop"), + ], + "brackets": [ + include("root"), + (r"\]", Punctuation, "#pop"), + ], + "numbers": [ + # Binary Values + (r"[01]+b", Number.Bin), + # Nulls/Infinities + (r"0[nNwW][cefghijmndzuvtp]?", Number), + # Timestamps + ( + ( + r"(?:[0-9]{4}[.][0-9]{2}[.][0-9]{2}|[0-9]+)" + "D(?:[0-9](?:[0-9](?::[0-9]{2}" + "(?::[0-9]{2}(?:[.][0-9]*)?)?)?)?)?" + ), + Literal.Date, + ), + # Datetimes + ( + ( + r"[0-9]{4}[.][0-9]{2}" + "(?:m|[.][0-9]{2}(?:T(?:[0-9]{2}:[0-9]{2}" + "(?::[0-9]{2}(?:[.][0-9]*)?)?)?)?)" + ), + Literal.Date, + ), + # Times + ( + (r"[0-9]{2}:[0-9]{2}(?::[0-9]{2}(?:[.][0-9]{1,3})?)?"), + Literal.Date, + ), + # GUIDs + ( + r"[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", + Number.Hex, + ), + # Byte Vectors + (r"0x[0-9a-fA-F]+", Number.Hex), + # Floats + ( + r"([0-9]*[.]?[0-9]+|[0-9]+[.]?[0-9]*)[eE][+-]?[0-9]+[ef]?", + Number.Float, + ), + (r"([0-9]*[.][0-9]+|[0-9]+[.][0-9]*)[ef]?", Number.Float), + (r"[0-9]+[ef]", Number.Float), + # Characters + (r"[0-9]+c", Number), + # Integers + (r"[0-9]+[ihtuv]", Number.Integer), + # Long Integers + (r"[0-9]+[jnp]?", Number.Integer.Long), + ], + "comments": [ + (r"[^\\]+", Comment.Multiline), + (r"^\\", Comment.Multiline, "#pop"), + (r"\\", Comment.Multiline), + ], + "strings": [ + (r'[^"\\]+', String.Double), + (r"\\.", String.Escape), + (r'"', String.Double, "#pop"), + ], + } + + +class QLexer(KLexer): + """ + For `Q <https://code.kx.com/>`_ source code. + + .. versionadded:: 2.12 + """ + + name = "Q" + aliases = ["q"] + filenames = ["*.q"] + + tokens = { + "root": [ + ( + words( + ("aj", "aj0", "ajf", "ajf0", "all", "and", "any", + "asc", "asof", "attr", "avgs", "ceiling", "cols", + "count", "cross", "csv", "cut", "deltas", "desc", + "differ", "distinct", "dsave", "each", "ej", + "ema", "eval", "except", "fby", "fills", "first", + "fkeys", "flip", "floor", "get", "group", "gtime", + "hclose", "hcount", "hdel", "hsym", "iasc", + "idesc", "ij", "ijf", "inter", "inv", "key", + "keys", "lj", "ljf", "load", "lower", "lsq", + "ltime", "ltrim", "mavg", "maxs", "mcount", "md5", + "mdev", "med", "meta", "mins", "mmax", "mmin", + "mmu", "mod", "msum", "neg", "next", "not", + "null", "or", "over", "parse", "peach", "pj", + "prds", "prior", "prev", "rand", "rank", "ratios", + "raze", "read0", "read1", "reciprocal", "reval", + "reverse", "rload", "rotate", "rsave", "rtrim", + "save", "scan", "scov", "sdev", "set", "show", + "signum", "ssr", "string", "sublist", "sums", + "sv", "svar", "system", "tables", "til", "trim", + "txf", "type", "uj", "ujf", "ungroup", "union", + "upper", "upsert", "value", "view", "views", "vs", + "where", "wj", "wj1", "ww", "xasc", "xbar", + "xcol", "xcols", "xdesc", "xgroup", "xkey", + "xlog", "xprev", "xrank"), + suffix=r"\b", + ), + Name.Builtin, + ), + inherit, + ], + } |