"" "
pygments.lexers.graph
~~~~~~~~~~~~~~~~~~~~~
Lexers
for graph query languages.
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE
for details.
"" "
import re
from pygments.lexer
import RegexLexer, include, bygroups, using, this, words
from pygments.token
import Keyword, Punctuation, Comment, Operator, Name,\
String, Number, Whitespace
__all__ = [
'CypherLexer' ]
class CypherLexer(RegexLexer):
"" "
For Cypher Query Language
For the Cypher version
in Neo4j 3.3
"" "
name =
'Cypher'
url =
'https://neo4j.com/docs/developer-manual/3.3/cypher/ '
aliases = [
'cypher' ]
filenames = [
'*.cyp' ,
'*.cypher' ]
version_added =
'2.0'
flags = re.MULTILINE | re.IGNORECASE
tokens = {
'root' : [
include(
'clauses' ),
include(
'keywords' ),
include(
'relations' ),
include(
'strings' ),
include(
'whitespace' ),
include(
'barewords' ),
include(
'comment' ),
],
'keywords' : [
(r
'(create|order|match|limit|set|skip|start|return|with|where|'
r
'delete|foreach|not|by|true|false)\b' , Keyword),
],
'clauses' : [
# based on https://neo4j.com/docs/cypher-refcard/3.3/
(r
'(create)(\s+)(index|unique)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(drop)(\s+)(contraint|index)(\s+)(on)\b' ,
bygroups(Keyword, Whitespace, Keyword, Whitespace, Keyword)),
(r
'(ends)(\s+)(with)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(is)(\s+)(node)(\s+)(key)\b' ,
bygroups(Keyword, Whitespace, Keyword, Whitespace, Keyword)),
(r
'(is)(\s+)(null|unique)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(load)(\s+)(csv)(\s+)(from)\b' ,
bygroups(Keyword, Whitespace, Keyword, Whitespace, Keyword)),
(r
'(on)(\s+)(match|create)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(optional)(\s+)(match)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(order)(\s+)(by)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(starts)(\s+)(with)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(union)(\s+)(all)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(using)(\s+)(periodic)(\s+)(commit)\b' ,
bygroups(Keyword, Whitespace, Keyword, Whitespace, Keyword)),
(r
'(using)(\s+)(index)\b' ,
bygroups(Keyword, Whitespace, Keyword)),
(r
'(using)(\s+)(range|text|point)(\s+)(index)\b' ,
bygroups(Keyword, Whitespace, Name, Whitespace, Keyword)),
(words((
'all' ,
'any' ,
'as' ,
'asc' ,
'ascending' ,
'assert' ,
'call' ,
'case' ,
'create' ,
'delete' ,
'desc' ,
'descending' ,
'distinct' ,
'end' ,
'fieldterminator' ,
'foreach' ,
'in' ,
'limit' ,
'match' ,
'merge' ,
'none' ,
'not' ,
'null' ,
'remove' ,
'return' ,
'set' ,
'skip' ,
'single' ,
'start' ,
'then' ,
'union' ,
'unwind' ,
'yield' ,
'where' ,
'when' ,
'with' ,
'collect' ), suffix=r
'\b' ), Keyword),
],
'relations' : [
(r
'(-\[)(.*?)(\]->)' , bygroups(Operator, using(this), Operator)),
(r
'(<-\[)(.*?)(\]-)' , bygroups(Operator, using(this), Operator)),
(r
'(-\[)(.*?)(\]-)' , bygroups(Operator, using(this), Operator)),
(r
'-->|<--|\[|\]' , Operator),
(r
'<|>|<>|=|<=|=>|\(|\)|\||:|,|;' , Punctuation),
(r
'[.*{}]' , Punctuation),
],
'strings' : [
(r
'([\' "])(?:\\[tbnrf\'" \\]|[^\\])*?\1
', String),
(r
'`(?:``|[^`])+`' , Name.Variable),
],
'whitespace' : [
(r
'\s+' , Whitespace),
],
'barewords' : [
(r
'[a-z]\w*' , Name),
(r
'\d+' , Number),
],
'comment' : [
(r
'//.*$' , Comment.Single),
],
}
Messung V0.5 C=91 H=97 G=93
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland