我想知道Cypher(Neo4j查询语言)是否有Backus-Naur表格。
如果是这样,我在哪里可以找到它?如果它没有,你猜一个吗?
答案 0 :(得分:2)
没有针对该语言发布的单独语法,但您可以获得所需内容from this。
在内部,neo4j使用名为Parboiled的包来解析密码。在cypher编译器软件包中,通常在/src/main/scala/org/neo4j/cypher/internal/compiler/v2_3/parser/
中,您将找到一个名为Clauses.scala
的文件,该文件基本上实现了Scala中的密码语法。
举一个非常简单的例子,这里是LIMIT
子句的定义:
private def Limit: Rule1[ast.Limit] = rule("LIMIT") {
group(keyword("LIMIT") ~~ (UnsignedIntegerLiteral | Parameter)) ~~>> (ast.Limit(_))
}
很简单,LIMIT
子句是关键字LIMIT
,后跟无符号整数文字或参数。
请注意,语法中较复杂的一个位是Patterns.scala
,您可以在其中看到图形模式的构成。其他资源包括在Clauses.scala
中的引用中。
我没有很多熟练的经验,考虑到语法的这个定义很有可能,parboiled可以用你想要的任何语法生成语法。