Список зарезервированных слов на шифровальном языке?

Есть ли список зарезервированных слов для Neo4j Cypher? Я хотел бы избежать любых ловушек, обнаруженных другими, зарезервированные слова кусали меня в прошлом с другими проектами.


person OpenCoderX    schedule 14.06.2013    source источник


Ответы (3)


В документации нет исчерпывающего списка зарезервированных слов. Для предстоящей версии 2.0 ключевые слова определены в одном файле с возможными сокращениями (например, по возрастанию/убыванию):

https://github.com/neo4j/neo4j/blob/2.0/community/cypher/src/main/scala/org/neo4j/cypher/internal/parser/v2_0/Strings.scala

Версия 1.9 немного хуже организована, большинство из них находятся в https://github.com/neo4j/neo4j/blob/2.0/community/cypher/src/main/scala/org/neo4j/cypher/internal./parser/v1_9/Base.scala, "создать уникальный" находится в https://github.com/neo4j/neo4j/blob/2.0/community/cypher/src/main/scala/org/neo4j/cypher/internal/parser/v1_9/CreateUnique.scala

person Thomas Fenzl    schedule 15.06.2013
comment
Хорошая точка зрения. Ваш список 2.0 более полный, чем мой. unique на самом деле не зарезервирован, хотя create есть. - person Eve Freeman; 15.06.2013
comment
Кстати, синтаксический анализатор, вероятно, скоро изменится, поэтому у него могут быть другие требования к ключевым словам. Проверьте ветку экспериментального парсера. - person Eve Freeman; 15.06.2013
comment
Ссылка №1 мертва. - person ; 08.02.2017

Для Neo4j есть справочная карта, которую я люблю использовать: https://neo4j.com/docs/cypher-refcard/current/

person Albert s    schedule 02.08.2016

Единственные действительно зарезервированные слова (по состоянию на 2.0 M03) (и, извините, если это неполное, это не в моей голове):

START
MATCH
WHERE
WITH
RETURN
FOREACH
CREATE
SET
UNION
DELETE
REMOVE   
CASE
WHEN
THEN
ASC
DESC

Существуют также функции/функции агрегации, но синтаксический анализатор достаточно умен, чтобы разрешать такие вещи, как:

RETURN count(*) as count

Я бы не беспокоился об этом - это даст вам разумную ошибку, если вы все равно столкнетесь с одним из этих случаев. Вот так:

Query:
START match=node(*) 
RETURN match
Error: reserved keyword
"START match=node(*) "
person Eve Freeman    schedule 15.06.2013
comment
А как насчет LIMIT? - person ; 27.01.2017
comment
@programmer5000 этот список в наши дни полностью устарел. Они переписали синтаксический анализатор для версии 2.1 или где-то в этом роде, и он стал намного умнее и гибче в отношении контекста. match (match) return match as return limit 1 - person Eve Freeman; 07.02.2017