py2neo.cypher.lexer
– Cypher Lexer¶
This module contains a Cypher language lexer based on the Pygments lexer framework. This can be used to parse statements and expressions for the Cypher variant available in Neo4j 3.4.
To parse a Cypher statement, create a CypherLexer
or select by the name py2neo.cypher,
then invoke the get_tokens()
method:
>>> from pygments.lexers import get_lexer_by_name
>>> lexer = get_lexer_by_name("py2neo.cypher")
>>> list(lexer.get_tokens("MATCH (a:Person)-[:KNOWS]->(b) RETURN a"))
[(Token.Keyword, 'MATCH'),
(Token.Text.Whitespace, ' '),
(Token.Punctuation, '('),
(Token.Name.Variable, 'a'),
(Token.Punctuation, ':'),
(Token.Name.Label, 'Person'),
(Token.Punctuation, ')-['),
(Token.Punctuation, ':'),
(Token.Name.Label, 'KNOWS'),
(Token.Punctuation, ']->('),
(Token.Name.Variable, 'b'),
(Token.Punctuation, ')'),
(Token.Text.Whitespace, ' '),
(Token.Keyword, 'RETURN'),
(Token.Text.Whitespace, ' '),
(Token.Name.Variable, 'a'),
(Token.Text.Whitespace, '\n')]
To split multiple semicolon-separated statements within a single string, use instead the get_statements()
method:
>>> list(lexer.get_statements("CREATE (:Person {name:'Alice'}); MATCH (a:Person {name:'Alice'}) RETURN id(a)"))
["CREATE (:Person {name:'Alice'})",
"MATCH (a:Person {name:'Alice'}) RETURN id(a)"]
-
class
py2neo.cypher.lexer.
CypherLexer
(*args, **kwds)[source]¶ Pygments lexer for the Cypher Query Language as available in Neo4j 4.2.