什么是密码的Backus-Naur形式?

时间:2015-07-28 18:58:35

标签: neo4j cypher bnf

我想知道Cypher(Neo4j查询语言)是否有Backus-Naur表格。

如果是这样,我在哪里可以找到它?如果它没有,你猜一个吗?

1 个答案:

答案 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可以用你想要的任何语法生成语法。