Tue, 15 Sep 2020 19:09:05 +0200
Pygments: updated to 2.7.0.
7701
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
2 | """ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
3 | pygments.lexers.graph |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~~~ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
5 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
6 | Lexers for graph query languages. |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
7 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
8 | :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS. |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
10 | """ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
11 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
12 | import re |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
13 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
14 | from pygments.lexer import RegexLexer, include, bygroups, using, this |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
15 | from pygments.token import Keyword, Punctuation, Comment, Operator, Name,\ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
16 | String, Number, Whitespace |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
17 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
18 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
19 | __all__ = ['CypherLexer'] |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
20 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
21 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
22 | class CypherLexer(RegexLexer): |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
23 | """ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
24 | For `Cypher Query Language |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
25 | <https://neo4j.com/docs/developer-manual/3.3/cypher/>`_ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
26 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
27 | For the Cypher version in Neo4j 3.3 |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
28 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
29 | .. versionadded:: 2.0 |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
30 | """ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
31 | name = 'Cypher' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
32 | aliases = ['cypher'] |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
33 | filenames = ['*.cyp', '*.cypher'] |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
34 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
35 | flags = re.MULTILINE | re.IGNORECASE |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
36 | |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
37 | tokens = { |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
38 | 'root': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
39 | include('comment'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
40 | include('keywords'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
41 | include('clauses'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
42 | include('relations'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
43 | include('strings'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
44 | include('whitespace'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
45 | include('barewords'), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
46 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
47 | 'comment': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
48 | (r'^.*//.*\n', Comment.Single), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
49 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
50 | 'keywords': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
51 | (r'(create|order|match|limit|set|skip|start|return|with|where|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
52 | r'delete|foreach|not|by|true|false)\b', Keyword), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
53 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
54 | 'clauses': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
55 | # based on https://neo4j.com/docs/cypher-refcard/3.3/ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
56 | (r'(all|any|as|asc|ascending|assert|call|case|create|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
57 | r'create\s+index|create\s+unique|delete|desc|descending|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
58 | r'distinct|drop\s+constraint\s+on|drop\s+index\s+on|end|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
59 | r'ends\s+with|fieldterminator|foreach|in|is\s+node\s+key|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
60 | r'is\s+null|is\s+unique|limit|load\s+csv\s+from|match|merge|none|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
61 | r'not|null|on\s+match|on\s+create|optional\s+match|order\s+by|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
62 | r'remove|return|set|skip|single|start|starts\s+with|then|union|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
63 | r'union\s+all|unwind|using\s+periodic\s+commit|yield|where|when|' |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
64 | r'with)\b', Keyword), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
65 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
66 | 'relations': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
67 | (r'(-\[)(.*?)(\]->)', bygroups(Operator, using(this), Operator)), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
68 | (r'(<-\[)(.*?)(\]-)', bygroups(Operator, using(this), Operator)), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
69 | (r'(-\[)(.*?)(\]-)', bygroups(Operator, using(this), Operator)), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
70 | (r'-->|<--|\[|\]', Operator), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
71 | (r'<|>|<>|=|<=|=>|\(|\)|\||:|,|;', Punctuation), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
72 | (r'[.*{}]', Punctuation), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
73 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
74 | 'strings': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
75 | (r'"(?:\\[tbnrf\'"\\]|[^\\"])*"', String), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
76 | (r'`(?:``|[^`])+`', Name.Variable), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
77 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
78 | 'whitespace': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
79 | (r'\s+', Whitespace), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
80 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
81 | 'barewords': [ |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
82 | (r'[a-z]\w*', Name), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
83 | (r'\d+', Number), |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
84 | ], |
25f42e208e08
Pygments: updated to 2.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7547
diff
changeset
|
85 | } |