2015-07-28 4 views

ответ

2

Для этого языка не существует отдельной грамматики, но вы можете получить то, что вам нужно from this.

Внутренне, neo4j использует пакет под названием Parboiled, чтобы выполнить синтаксический анализ cypher. В программном пакете cypher compiler, как правило, в /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 может генерировать грамматику в любом синтаксисе, который вам может понравиться.

Смежные вопросы