From 74e71b8012ecf8b7879ec3d55b644fb734887eff Mon Sep 17 00:00:00 2001 From: Muldec <34677746+Muldec@users.noreply.github.com> Date: Mon, 20 Aug 2018 14:21:13 +0200 Subject: [PATCH] Add NODE KEY constraint support Support of the commands CREATE CONSTRAINT...IS NODE KEY and DROP CONSTRAINT...IS NODE KEY is added to the plugin As unit tests contains the 'key' word, they are invalid. The 'key' word is now replaced by 'ref'. close #85 --- .../graphdb/language/cypher/CypherParser.java | 72 ++ .../language/cypher/psi/CypherCommand.java | 6 + .../psi/CypherCreateNodeKeyConstraint.java | 16 + .../psi/CypherDropNodeKeyConstraint.java | 16 + .../cypher/psi/CypherNodeKeySyntax.java | 37 + .../cypher/psi/CypherReservedWord.java | 3 + .../language/cypher/psi/CypherTypes.java | 13 + .../language/cypher/psi/CypherVisitor.java | 12 + .../cypher/psi/impl/CypherCommandImpl.java | 12 + .../CypherCreateNodeKeyConstraintImpl.java | 41 + .../impl/CypherDropNodeKeyConstraintImpl.java | 41 + .../psi/impl/CypherNodeKeySyntaxImpl.java | 83 ++ .../psi/impl/CypherReservedWordImpl.java | 6 + .../graphdb/language/cypher/lexer/Cypher.bnf | 9 +- .../language/cypher/lexer/_CypherLexer.flex | 2 + .../language/cypher/lexer/_CypherLexer.java | 966 +++++++++--------- .../cypher/parsing/CommandParsingTest.java | 8 + .../command/ConstraintNodeKeyCreate.cyp | 1 + .../command/ConstraintNodeKeyCreate.txt | 53 + .../parsing/command/ConstraintNodeKeyDrop.cyp | 1 + .../parsing/command/ConstraintNodeKeyDrop.txt | 53 + .../parsing/expressions/Expressions.cyp | 4 +- .../parsing/expressions/Expressions.txt | 6 +- .../resources/parsing/patterns/Patterns.cyp | 8 +- .../resources/parsing/patterns/Patterns.txt | 12 +- .../statement-options/StatementOptions.cyp | 10 +- .../statement-options/StatementOptions.txt | 16 +- 27 files changed, 998 insertions(+), 509 deletions(-) create mode 100644 language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCreateNodeKeyConstraint.java create mode 100644 language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherDropNodeKeyConstraint.java create mode 100644 language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherNodeKeySyntax.java create mode 100644 language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCreateNodeKeyConstraintImpl.java create mode 100644 language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherDropNodeKeyConstraintImpl.java create mode 100644 language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherNodeKeySyntaxImpl.java create mode 100644 testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.cyp create mode 100644 testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.txt create mode 100644 testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.cyp create mode 100644 testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.txt diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/CypherParser.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/CypherParser.java index b93176c5..572083f0 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/CypherParser.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/CypherParser.java @@ -331,6 +331,8 @@ private static boolean CaseExpression_2_0(PsiBuilder b, int l) { // | DropNodePropertyExistenceConstraint // | CreateRelationshipPropertyExistenceConstraint // | DropRelationshipPropertyExistenceConstraint + // | CreateNodeKeyConstraint + // | DropNodeKeyConstraint public static boolean Command(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "Command")) return false; if (!nextTokenIs(b, "", K_CREATE, K_DROP)) return false; @@ -344,6 +346,8 @@ public static boolean Command(PsiBuilder b, int l) { if (!r) r = DropNodePropertyExistenceConstraint(b, l + 1); if (!r) r = CreateRelationshipPropertyExistenceConstraint(b, l + 1); if (!r) r = DropRelationshipPropertyExistenceConstraint(b, l + 1); + if (!r) r = CreateNodeKeyConstraint(b, l + 1); + if (!r) r = DropNodeKeyConstraint(b, l + 1); exit_section_(b, l, m, r, false, null); return r; } @@ -407,6 +411,19 @@ public static boolean CreateIndex(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // K_CREATE NodeKeySyntax + public static boolean CreateNodeKeyConstraint(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "CreateNodeKeyConstraint")) return false; + if (!nextTokenIs(b, K_CREATE)) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, K_CREATE); + r = r && NodeKeySyntax(b, l + 1); + exit_section_(b, m, CREATE_NODE_KEY_CONSTRAINT, r); + return r; + } + /* ********************************************************** */ // K_CREATE NodePropertyExistenceConstraintSyntax public static boolean CreateNodePropertyExistenceConstraint(PsiBuilder b, int l) { @@ -559,6 +576,19 @@ public static boolean DropIndex(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // K_DROP NodeKeySyntax + public static boolean DropNodeKeyConstraint(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "DropNodeKeyConstraint")) return false; + if (!nextTokenIs(b, K_DROP)) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, K_DROP); + r = r && NodeKeySyntax(b, l + 1); + exit_section_(b, m, DROP_NODE_KEY_CONSTRAINT, r); + return r; + } + /* ********************************************************** */ // K_DROP NodePropertyExistenceConstraintSyntax public static boolean DropNodePropertyExistenceConstraint(PsiBuilder b, int l) { @@ -2236,6 +2266,46 @@ private static boolean NewParameter_1(PsiBuilder b, int l) { return r; } + /* ********************************************************** */ + // K_CONSTRAINT K_ON "(" Variable NodeLabel ")" K_ASSERT "(" PropertyExpression ("," PropertyExpression)* ")" K_IS K_NODE K_KEY + public static boolean NodeKeySyntax(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "NodeKeySyntax")) return false; + if (!nextTokenIs(b, K_CONSTRAINT)) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeTokens(b, 0, K_CONSTRAINT, K_ON, PARENTHESE_OPEN); + r = r && Variable(b, l + 1); + r = r && NodeLabel(b, l + 1); + r = r && consumeTokens(b, 0, PARENTHESE_CLOSE, K_ASSERT, PARENTHESE_OPEN); + r = r && PropertyExpression(b, l + 1); + r = r && NodeKeySyntax_9(b, l + 1); + r = r && consumeTokens(b, 0, PARENTHESE_CLOSE, K_IS, K_NODE, K_KEY); + exit_section_(b, m, NODE_KEY_SYNTAX, r); + return r; + } + + // ("," PropertyExpression)* + private static boolean NodeKeySyntax_9(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "NodeKeySyntax_9")) return false; + while (true) { + int c = current_position_(b); + if (!NodeKeySyntax_9_0(b, l + 1)) break; + if (!empty_element_parsed_guard_(b, "NodeKeySyntax_9", c)) break; + } + return true; + } + + // "," PropertyExpression + private static boolean NodeKeySyntax_9_0(PsiBuilder b, int l) { + if (!recursion_guard_(b, l, "NodeKeySyntax_9_0")) return false; + boolean r; + Marker m = enter_section_(b); + r = consumeToken(b, OP_COMMA); + r = r && PropertyExpression(b, l + 1); + exit_section_(b, m, null, r); + return r; + } + /* ********************************************************** */ // ":" LabelName public static boolean NodeLabel(PsiBuilder b, int l) { @@ -3609,6 +3679,7 @@ private static boolean RemoveItem_0(PsiBuilder b, int l) { // | K_ALLSHORTESTPATHS // | K_ALL // | K_ADD + // | K_KEY public static boolean ReservedWord(PsiBuilder b, int l) { if (!recursion_guard_(b, l, "ReservedWord")) return false; boolean r; @@ -3698,6 +3769,7 @@ public static boolean ReservedWord(PsiBuilder b, int l) { if (!r) r = consumeToken(b, K_ALLSHORTESTPATHS); if (!r) r = consumeToken(b, K_ALL); if (!r) r = consumeToken(b, K_ADD); + if (!r) r = consumeToken(b, K_KEY); exit_section_(b, l, m, r, false, null); return r; } diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCommand.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCommand.java index eff18566..97345bec 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCommand.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCommand.java @@ -10,6 +10,9 @@ public interface CypherCommand extends PsiElement { @Nullable CypherCreateIndex getCreateIndex(); + @Nullable + CypherCreateNodeKeyConstraint getCreateNodeKeyConstraint(); + @Nullable CypherCreateNodePropertyExistenceConstraint getCreateNodePropertyExistenceConstraint(); @@ -22,6 +25,9 @@ public interface CypherCommand extends PsiElement { @Nullable CypherDropIndex getDropIndex(); + @Nullable + CypherDropNodeKeyConstraint getDropNodeKeyConstraint(); + @Nullable CypherDropNodePropertyExistenceConstraint getDropNodePropertyExistenceConstraint(); diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCreateNodeKeyConstraint.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCreateNodeKeyConstraint.java new file mode 100644 index 00000000..d95c604b --- /dev/null +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherCreateNodeKeyConstraint.java @@ -0,0 +1,16 @@ +// This is a generated file. Not intended for manual editing. +package com.neueda.jetbrains.plugin.graphdb.language.cypher.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface CypherCreateNodeKeyConstraint extends PsiElement { + + @NotNull + CypherNodeKeySyntax getNodeKeySyntax(); + + @NotNull + PsiElement getKCreate(); + +} diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherDropNodeKeyConstraint.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherDropNodeKeyConstraint.java new file mode 100644 index 00000000..53a5791d --- /dev/null +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherDropNodeKeyConstraint.java @@ -0,0 +1,16 @@ +// This is a generated file. Not intended for manual editing. +package com.neueda.jetbrains.plugin.graphdb.language.cypher.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface CypherDropNodeKeyConstraint extends PsiElement { + + @NotNull + CypherNodeKeySyntax getNodeKeySyntax(); + + @NotNull + PsiElement getKDrop(); + +} diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherNodeKeySyntax.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherNodeKeySyntax.java new file mode 100644 index 00000000..aa700b82 --- /dev/null +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherNodeKeySyntax.java @@ -0,0 +1,37 @@ +// This is a generated file. Not intended for manual editing. +package com.neueda.jetbrains.plugin.graphdb.language.cypher.psi; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.psi.PsiElement; + +public interface CypherNodeKeySyntax extends PsiElement { + + @NotNull + CypherNodeLabel getNodeLabel(); + + @NotNull + List getPropertyExpressionList(); + + @NotNull + CypherVariable getVariable(); + + @NotNull + PsiElement getKAssert(); + + @NotNull + PsiElement getKConstraint(); + + @NotNull + PsiElement getKIs(); + + @NotNull + PsiElement getKKey(); + + @NotNull + PsiElement getKNode(); + + @NotNull + PsiElement getKOn(); + +} diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherReservedWord.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherReservedWord.java index 03949485..de231859 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherReservedWord.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherReservedWord.java @@ -139,6 +139,9 @@ public interface CypherReservedWord extends PsiElement { @Nullable PsiElement getKJoin(); + @Nullable + PsiElement getKKey(); + @Nullable PsiElement getKLimit(); diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherTypes.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherTypes.java index cb986975..3bb2037c 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherTypes.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherTypes.java @@ -26,6 +26,7 @@ public interface CypherTypes { IElementType COUNT_STAR = new CypherElementType("COUNT_STAR"); IElementType CREATE = new CypherElementType("CREATE"); IElementType CREATE_INDEX = new CypherElementType("CREATE_INDEX"); + IElementType CREATE_NODE_KEY_CONSTRAINT = new CypherElementType("CREATE_NODE_KEY_CONSTRAINT"); IElementType CREATE_NODE_PROPERTY_EXISTENCE_CONSTRAINT = new CypherElementType("CREATE_NODE_PROPERTY_EXISTENCE_CONSTRAINT"); IElementType CREATE_RELATIONSHIP_PROPERTY_EXISTENCE_CONSTRAINT = new CypherElementType("CREATE_RELATIONSHIP_PROPERTY_EXISTENCE_CONSTRAINT"); IElementType CREATE_UNIQUE_CONSTRAINT = new CypherElementType("CREATE_UNIQUE_CONSTRAINT"); @@ -34,6 +35,7 @@ public interface CypherTypes { IElementType DELETE = new CypherElementType("DELETE"); IElementType DOUBLE_LITERAL = new CypherElementType("DOUBLE_LITERAL"); IElementType DROP_INDEX = new CypherElementType("DROP_INDEX"); + IElementType DROP_NODE_KEY_CONSTRAINT = new CypherElementType("DROP_NODE_KEY_CONSTRAINT"); IElementType DROP_NODE_PROPERTY_EXISTENCE_CONSTRAINT = new CypherElementType("DROP_NODE_PROPERTY_EXISTENCE_CONSTRAINT"); IElementType DROP_RELATIONSHIP_PROPERTY_EXISTENCE_CONSTRAINT = new CypherElementType("DROP_RELATIONSHIP_PROPERTY_EXISTENCE_CONSTRAINT"); IElementType DROP_UNIQUE_CONSTRAINT = new CypherElementType("DROP_UNIQUE_CONSTRAINT"); @@ -76,6 +78,7 @@ public interface CypherTypes { IElementType MULTI_PART_QUERY = new CypherElementType("MULTI_PART_QUERY"); IElementType NAMESPACE = new CypherElementType("NAMESPACE"); IElementType NEW_PARAMETER = new CypherElementType("NEW_PARAMETER"); + IElementType NODE_KEY_SYNTAX = new CypherElementType("NODE_KEY_SYNTAX"); IElementType NODE_LABEL = new CypherElementType("NODE_LABEL"); IElementType NODE_LABELS = new CypherElementType("NODE_LABELS"); IElementType NODE_LOOKUP = new CypherElementType("NODE_LOOKUP"); @@ -212,6 +215,7 @@ public interface CypherTypes { IElementType K_INDEX = new CypherTokenType("K_INDEX"); IElementType K_IS = new CypherTokenType("K_IS"); IElementType K_JOIN = new CypherTokenType("K_JOIN"); + IElementType K_KEY = new CypherTokenType("K_KEY"); IElementType K_LIMIT = new CypherTokenType("K_LIMIT"); IElementType K_LOAD = new CypherTokenType("K_LOAD"); IElementType K_MANDATORY = new CypherTokenType("K_MANDATORY"); @@ -341,6 +345,9 @@ else if (type == CREATE) { else if (type == CREATE_INDEX) { return new CypherCreateIndexImpl(node); } + else if (type == CREATE_NODE_KEY_CONSTRAINT) { + return new CypherCreateNodeKeyConstraintImpl(node); + } else if (type == CREATE_NODE_PROPERTY_EXISTENCE_CONSTRAINT) { return new CypherCreateNodePropertyExistenceConstraintImpl(node); } @@ -365,6 +372,9 @@ else if (type == DOUBLE_LITERAL) { else if (type == DROP_INDEX) { return new CypherDropIndexImpl(node); } + else if (type == DROP_NODE_KEY_CONSTRAINT) { + return new CypherDropNodeKeyConstraintImpl(node); + } else if (type == DROP_NODE_PROPERTY_EXISTENCE_CONSTRAINT) { return new CypherDropNodePropertyExistenceConstraintImpl(node); } @@ -491,6 +501,9 @@ else if (type == NAMESPACE) { else if (type == NEW_PARAMETER) { return new CypherNewParameterImpl(node); } + else if (type == NODE_KEY_SYNTAX) { + return new CypherNodeKeySyntaxImpl(node); + } else if (type == NODE_LABEL) { return new CypherNodeLabelImpl(node); } diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherVisitor.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherVisitor.java index a7ea563c..b9da4374 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherVisitor.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/CypherVisitor.java @@ -94,6 +94,10 @@ public void visitCreateIndex(@NotNull CypherCreateIndex o) { visitPsiElement(o); } + public void visitCreateNodeKeyConstraint(@NotNull CypherCreateNodeKeyConstraint o) { + visitPsiElement(o); + } + public void visitCreateNodePropertyExistenceConstraint(@NotNull CypherCreateNodePropertyExistenceConstraint o) { visitPsiElement(o); } @@ -126,6 +130,10 @@ public void visitDropIndex(@NotNull CypherDropIndex o) { visitPsiElement(o); } + public void visitDropNodeKeyConstraint(@NotNull CypherDropNodeKeyConstraint o) { + visitPsiElement(o); + } + public void visitDropNodePropertyExistenceConstraint(@NotNull CypherDropNodePropertyExistenceConstraint o) { visitPsiElement(o); } @@ -294,6 +302,10 @@ public void visitNewParameter(@NotNull CypherNewParameter o) { visitPsiElement(o); } + public void visitNodeKeySyntax(@NotNull CypherNodeKeySyntax o) { + visitPsiElement(o); + } + public void visitNodeLabel(@NotNull CypherNodeLabel o) { visitPsiElement(o); } diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCommandImpl.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCommandImpl.java index 0f76ec6d..029e5555 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCommandImpl.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCommandImpl.java @@ -32,6 +32,12 @@ public CypherCreateIndex getCreateIndex() { return findChildByClass(CypherCreateIndex.class); } + @Override + @Nullable + public CypherCreateNodeKeyConstraint getCreateNodeKeyConstraint() { + return findChildByClass(CypherCreateNodeKeyConstraint.class); + } + @Override @Nullable public CypherCreateNodePropertyExistenceConstraint getCreateNodePropertyExistenceConstraint() { @@ -56,6 +62,12 @@ public CypherDropIndex getDropIndex() { return findChildByClass(CypherDropIndex.class); } + @Override + @Nullable + public CypherDropNodeKeyConstraint getDropNodeKeyConstraint() { + return findChildByClass(CypherDropNodeKeyConstraint.class); + } + @Override @Nullable public CypherDropNodePropertyExistenceConstraint getDropNodePropertyExistenceConstraint() { diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCreateNodeKeyConstraintImpl.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCreateNodeKeyConstraintImpl.java new file mode 100644 index 00000000..6fc79f91 --- /dev/null +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherCreateNodeKeyConstraintImpl.java @@ -0,0 +1,41 @@ +// This is a generated file. Not intended for manual editing. +package com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.CypherTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.*; + +public class CypherCreateNodeKeyConstraintImpl extends ASTWrapperPsiElement implements CypherCreateNodeKeyConstraint { + + public CypherCreateNodeKeyConstraintImpl(ASTNode node) { + super(node); + } + + public void accept(@NotNull CypherVisitor visitor) { + visitor.visitCreateNodeKeyConstraint(this); + } + + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof CypherVisitor) accept((CypherVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public CypherNodeKeySyntax getNodeKeySyntax() { + return findNotNullChildByClass(CypherNodeKeySyntax.class); + } + + @Override + @NotNull + public PsiElement getKCreate() { + return findNotNullChildByType(K_CREATE); + } + +} diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherDropNodeKeyConstraintImpl.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherDropNodeKeyConstraintImpl.java new file mode 100644 index 00000000..624e24c5 --- /dev/null +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherDropNodeKeyConstraintImpl.java @@ -0,0 +1,41 @@ +// This is a generated file. Not intended for manual editing. +package com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.CypherTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.*; + +public class CypherDropNodeKeyConstraintImpl extends ASTWrapperPsiElement implements CypherDropNodeKeyConstraint { + + public CypherDropNodeKeyConstraintImpl(ASTNode node) { + super(node); + } + + public void accept(@NotNull CypherVisitor visitor) { + visitor.visitDropNodeKeyConstraint(this); + } + + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof CypherVisitor) accept((CypherVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public CypherNodeKeySyntax getNodeKeySyntax() { + return findNotNullChildByClass(CypherNodeKeySyntax.class); + } + + @Override + @NotNull + public PsiElement getKDrop() { + return findNotNullChildByType(K_DROP); + } + +} diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherNodeKeySyntaxImpl.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherNodeKeySyntaxImpl.java new file mode 100644 index 00000000..0c3d0fcd --- /dev/null +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherNodeKeySyntaxImpl.java @@ -0,0 +1,83 @@ +// This is a generated file. Not intended for manual editing. +package com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.impl; + +import java.util.List; +import org.jetbrains.annotations.*; +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import static com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.CypherTypes.*; +import com.intellij.extapi.psi.ASTWrapperPsiElement; +import com.neueda.jetbrains.plugin.graphdb.language.cypher.psi.*; + +public class CypherNodeKeySyntaxImpl extends ASTWrapperPsiElement implements CypherNodeKeySyntax { + + public CypherNodeKeySyntaxImpl(ASTNode node) { + super(node); + } + + public void accept(@NotNull CypherVisitor visitor) { + visitor.visitNodeKeySyntax(this); + } + + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof CypherVisitor) accept((CypherVisitor)visitor); + else super.accept(visitor); + } + + @Override + @NotNull + public CypherNodeLabel getNodeLabel() { + return findNotNullChildByClass(CypherNodeLabel.class); + } + + @Override + @NotNull + public List getPropertyExpressionList() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, CypherPropertyExpression.class); + } + + @Override + @NotNull + public CypherVariable getVariable() { + return findNotNullChildByClass(CypherVariable.class); + } + + @Override + @NotNull + public PsiElement getKAssert() { + return findNotNullChildByType(K_ASSERT); + } + + @Override + @NotNull + public PsiElement getKConstraint() { + return findNotNullChildByType(K_CONSTRAINT); + } + + @Override + @NotNull + public PsiElement getKIs() { + return findNotNullChildByType(K_IS); + } + + @Override + @NotNull + public PsiElement getKKey() { + return findNotNullChildByType(K_KEY); + } + + @Override + @NotNull + public PsiElement getKNode() { + return findNotNullChildByType(K_NODE); + } + + @Override + @NotNull + public PsiElement getKOn() { + return findNotNullChildByType(K_ON); + } + +} diff --git a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherReservedWordImpl.java b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherReservedWordImpl.java index da5877ba..6509497e 100644 --- a/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherReservedWordImpl.java +++ b/language/cypher/src/main/gen/com/neueda/jetbrains/plugin/graphdb/language/cypher/psi/impl/CypherReservedWordImpl.java @@ -290,6 +290,12 @@ public PsiElement getKJoin() { return findChildByType(K_JOIN); } + @Override + @Nullable + public PsiElement getKKey() { + return findChildByType(K_KEY); + } + @Override @Nullable public PsiElement getKLimit() { diff --git a/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/Cypher.bnf b/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/Cypher.bnf index 32d71b73..f422ec36 100644 --- a/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/Cypher.bnf +++ b/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/Cypher.bnf @@ -100,6 +100,7 @@ K_SCALAR="regexp:[Ss][Cc][Aa][Ll][Aa][Rr]" K_OF="regexp:[Oo][Ff]" K_ADD="regexp:[Aa][Dd][Dd]" + K_KEY="regexp:(K|k)(E|e)(Y|y)" // literals l_identifier="regexp:[a-zA-Z_][a-zA-Z_$0-9]*" @@ -197,6 +198,8 @@ Command ::= CreateIndex | DropNodePropertyExistenceConstraint | CreateRelationshipPropertyExistenceConstraint | DropRelationshipPropertyExistenceConstraint + | CreateNodeKeyConstraint + | DropNodeKeyConstraint CreateIndex ::= K_CREATE IndexSyntax DropIndex ::= K_DROP IndexSyntax @@ -210,13 +213,16 @@ CreateNodePropertyExistenceConstraint ::= K_CREATE NodePropertyExistenceConstrai DropNodePropertyExistenceConstraint ::= K_DROP NodePropertyExistenceConstraintSyntax NodePropertyExistenceConstraintSyntax ::= K_CONSTRAINT K_ON "(" Variable NodeLabel ")" K_ASSERT K_EXISTS "(" PropertyExpression ")" +CreateNodeKeyConstraint ::= K_CREATE NodeKeySyntax +DropNodeKeyConstraint ::= K_DROP NodeKeySyntax +NodeKeySyntax ::= K_CONSTRAINT K_ON "(" Variable NodeLabel ")" K_ASSERT "(" PropertyExpression ("," PropertyExpression)* ")" K_IS K_NODE K_KEY + CreateRelationshipPropertyExistenceConstraint ::= K_CREATE RelationshipPropertyExistenceConstraintSyntax DropRelationshipPropertyExistenceConstraint ::= K_DROP RelationshipPropertyExistenceConstraintSyntax RelationshipPropertyExistenceConstraintSyntax ::= K_CONSTRAINT K_ON RelationshipPatternSyntax K_ASSERT K_EXISTS "(" PropertyExpression ")" RelationshipPatternSyntax ::= ("(" ")" "-" "[" Variable RelType "]" "-" "(" ")") | ("(" ")" "-" "[" Variable RelType "]" "-" ">" "(" ")") | ("(" ")" "<" "-" "[" Variable RelType "]" "-" "(" ")") - /************************* * Query */ @@ -662,6 +668,7 @@ ReservedWord ::= K_MATCH | K_ALLSHORTESTPATHS | K_ALL | K_ADD + | K_KEY EscapedSymbolicNameString ::= l_identifier_text UnescapedSymbolicNameString ::= l_identifier diff --git a/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.flex b/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.flex index c994b9ff..7832437e 100644 --- a/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.flex +++ b/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.flex @@ -112,6 +112,7 @@ K_MANDATORY=[Mm][Aa][Nn][Dd][Aa][Tt][Oo][Rr][Yy] K_SCALAR=[Ss][Cc][Aa][Ll][Aa][Rr] K_OF=[Oo][Ff] K_ADD=[Aa][Dd][Dd] +K_KEY=(K|k)(E|e)(Y|y) L_IDENTIFIER=[a-zA-Z_][a-zA-Z_$0-9]* L_IDENTIFIER_TEXT=\`[^`]+\` L_DECIMAL=(0|[1-9][0-9]*)\.[0-9]+ @@ -244,6 +245,7 @@ BLOCK_COMMENT = "/*" ( ([^"*"]|[\r\n])* ("*"+ [^"*""/"] )? )* ("*" | "*"+"/")? {K_SCALAR} { return K_SCALAR; } {K_OF} { return K_OF; } {K_ADD} { return K_ADD; } + {K_KEY} { return K_KEY; } {L_IDENTIFIER} { return L_IDENTIFIER; } {L_IDENTIFIER_TEXT} { return L_IDENTIFIER_TEXT; } {L_DECIMAL} { return L_DECIMAL; } diff --git a/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.java b/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.java index ad13aed9..3e6b9168 100644 --- a/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.java +++ b/language/cypher/src/main/java/com/neueda/jetbrains/plugin/graphdb/language/cypher/lexer/_CypherLexer.java @@ -72,33 +72,33 @@ public static int ZZ_CMAP(int ch) { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\1\0\1\1\1\2\26\3\1\4\1\5\2\6\1\7"+ + "\1\0\1\1\1\2\27\3\1\4\1\5\2\6\1\7"+ "\2\1\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+ "\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26"+ "\1\27\1\30\1\31\1\1\1\32\1\33\4\3\1\34"+ "\24\3\1\35\1\36\1\37\6\3\1\40\1\41\1\42"+ - "\16\3\1\43\1\3\2\0\1\44\1\0\1\45\3\0"+ + "\16\3\1\43\2\3\2\0\1\44\1\0\1\45\3\0"+ "\1\46\1\47\1\50\1\51\1\52\1\53\1\54\1\55"+ "\3\3\1\56\1\57\1\60\1\61\1\3\1\62\5\3"+ "\1\63\10\3\1\64\1\3\1\65\10\3\1\66\13\3"+ - "\1\67\14\3\1\70\1\71\5\3\1\72\1\73\1\47"+ - "\6\3\1\74\1\75\1\76\1\77\14\3\1\100\1\101"+ - "\7\3\1\102\1\103\1\104\1\105\1\3\1\106\4\3"+ - "\1\107\3\3\1\110\3\3\1\111\1\3\1\112\1\113"+ - "\1\3\1\114\5\3\1\115\2\3\1\47\1\0\1\116"+ - "\1\3\1\117\5\3\1\120\14\3\1\121\2\3\1\122"+ - "\4\3\1\123\1\124\3\3\1\125\1\3\1\126\1\127"+ - "\1\130\5\3\1\131\1\132\2\3\1\133\1\3\1\134"+ - "\1\135\2\3\1\136\1\3\1\137\1\140\1\141\3\3"+ - "\1\142\1\3\1\143\1\144\1\145\1\3\1\146\1\3"+ - "\1\147\1\150\1\3\1\151\2\3\1\152\10\3\1\153"+ - "\1\3\1\154\1\155\1\156\5\3\1\157\1\160\4\3"+ - "\1\161\3\3\1\162\1\3\1\163\1\3\1\164\1\165"+ - "\1\166\7\3\1\167\1\3\1\170\7\3\1\171\1\172"+ - "\6\3\1\173\1\174"; + "\1\67\14\3\1\70\1\71\5\3\1\72\1\73\1\74"+ + "\1\47\6\3\1\75\1\76\1\77\1\100\14\3\1\101"+ + "\1\102\7\3\1\103\1\104\1\105\1\106\1\3\1\107"+ + "\4\3\1\110\3\3\1\111\3\3\1\112\1\3\1\113"+ + "\1\114\1\3\1\115\5\3\1\116\2\3\1\47\1\0"+ + "\1\117\1\3\1\120\5\3\1\121\14\3\1\122\2\3"+ + "\1\123\4\3\1\124\1\125\3\3\1\126\1\3\1\127"+ + "\1\130\1\131\5\3\1\132\1\133\2\3\1\134\1\3"+ + "\1\135\1\136\2\3\1\137\1\3\1\140\1\141\1\142"+ + "\3\3\1\143\1\3\1\144\1\145\1\146\1\3\1\147"+ + "\1\3\1\150\1\151\1\3\1\152\2\3\1\153\10\3"+ + "\1\154\1\3\1\155\1\156\1\157\5\3\1\160\1\161"+ + "\4\3\1\162\3\3\1\163\1\3\1\164\1\3\1\165"+ + "\1\166\1\167\7\3\1\170\1\3\1\171\7\3\1\172"+ + "\1\173\6\3\1\174\1\175"; private static int [] zzUnpackAction() { - int [] result = new int[395]; + int [] result = new int[398]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -126,56 +126,56 @@ private static int zzUnpackAction(String packed, int offset, int [] result) { "\0\0\0\74\0\170\0\264\0\360\0\u012c\0\u0168\0\u01a4"+ "\0\u01e0\0\u021c\0\u0258\0\u0294\0\u02d0\0\u030c\0\u0348\0\u0384"+ "\0\u03c0\0\u03fc\0\u0438\0\u0474\0\u04b0\0\u04ec\0\u0528\0\u0564"+ - "\0\u05a0\0\74\0\u05dc\0\u0618\0\u0654\0\u0690\0\u06cc\0\u0708"+ - "\0\u0744\0\74\0\74\0\74\0\74\0\74\0\74\0\74"+ - "\0\74\0\74\0\u0780\0\u07bc\0\u07f8\0\u0834\0\74\0\74"+ - "\0\74\0\74\0\u0870\0\74\0\74\0\u08ac\0\u08e8\0\u0924"+ + "\0\u05a0\0\u05dc\0\74\0\u0618\0\u0654\0\u0690\0\u06cc\0\u0708"+ + "\0\u0744\0\u0780\0\74\0\74\0\74\0\74\0\74\0\74"+ + "\0\74\0\74\0\74\0\u07bc\0\u07f8\0\u0834\0\u0870\0\74"+ + "\0\74\0\74\0\74\0\u08ac\0\74\0\74\0\u08e8\0\u0924"+ "\0\u0960\0\u099c\0\u09d8\0\u0a14\0\u0a50\0\u0a8c\0\u0ac8\0\u0b04"+ "\0\u0b40\0\u0b7c\0\u0bb8\0\u0bf4\0\u0c30\0\u0c6c\0\u0ca8\0\u0ce4"+ - "\0\u0d20\0\u0d5c\0\u0d98\0\u0dd4\0\u0e10\0\u0e4c\0\u03fc\0\u0e88"+ - "\0\u03fc\0\u0ec4\0\u0f00\0\u0f3c\0\u0f78\0\u0fb4\0\u0ff0\0\u102c"+ - "\0\u03fc\0\u03fc\0\u1068\0\u10a4\0\u10e0\0\u111c\0\u1158\0\u1194"+ + "\0\u0d20\0\u0d5c\0\u0d98\0\u0dd4\0\u0e10\0\u0e4c\0\u0e88\0\u03fc"+ + "\0\u0ec4\0\u03fc\0\u0f00\0\u0f3c\0\u0f78\0\u0fb4\0\u0ff0\0\u102c"+ + "\0\u1068\0\u03fc\0\u03fc\0\u10a4\0\u10e0\0\u111c\0\u1158\0\u1194"+ "\0\u11d0\0\u120c\0\u1248\0\u1284\0\u12c0\0\u12fc\0\u1338\0\u1374"+ - "\0\u03fc\0\u13b0\0\u13ec\0\u1428\0\74\0\u06cc\0\74\0\u1464"+ - "\0\u0708\0\u14a0\0\u14dc\0\u1518\0\74\0\74\0\74\0\74"+ - "\0\74\0\74\0\u1554\0\u1590\0\u15cc\0\u03fc\0\u03fc\0\u03fc"+ - "\0\u1608\0\u1644\0\u1680\0\u16bc\0\u16f8\0\u1734\0\u1770\0\u17ac"+ - "\0\u03fc\0\u17e8\0\u1824\0\u1860\0\u189c\0\u18d8\0\u1914\0\u1950"+ + "\0\u13b0\0\u03fc\0\u13ec\0\u1428\0\u1464\0\u14a0\0\74\0\u0708"+ + "\0\74\0\u14dc\0\u0744\0\u1518\0\u1554\0\u1590\0\74\0\74"+ + "\0\74\0\74\0\74\0\74\0\u15cc\0\u1608\0\u1644\0\u03fc"+ + "\0\u03fc\0\u03fc\0\u1680\0\u16bc\0\u16f8\0\u1734\0\u1770\0\u17ac"+ + "\0\u17e8\0\u1824\0\u03fc\0\u1860\0\u189c\0\u18d8\0\u1914\0\u1950"+ "\0\u198c\0\u19c8\0\u1a04\0\u1a40\0\u1a7c\0\u1ab8\0\u1af4\0\u1b30"+ - "\0\u1b6c\0\u1ba8\0\u1be4\0\u1c20\0\u03fc\0\u1c5c\0\u1c98\0\u1cd4"+ + "\0\u1b6c\0\u1ba8\0\u1be4\0\u1c20\0\u1c5c\0\u1c98\0\u03fc\0\u1cd4"+ "\0\u1d10\0\u1d4c\0\u1d88\0\u1dc4\0\u1e00\0\u1e3c\0\u1e78\0\u1eb4"+ - "\0\u03fc\0\u1ef0\0\u1f2c\0\u1f68\0\u1fa4\0\u1fe0\0\u201c\0\u2058"+ - "\0\u2094\0\u20d0\0\u210c\0\u2148\0\u2184\0\u21c0\0\u03fc\0\u21fc"+ - "\0\u2238\0\u2274\0\u22b0\0\u22ec\0\74\0\u1428\0\u2328\0\u2364"+ - "\0\u23a0\0\u23dc\0\u2418\0\u2454\0\u2490\0\u03fc\0\u03fc\0\u03fc"+ - "\0\u03fc\0\u24cc\0\u2508\0\u2544\0\u2580\0\u25bc\0\u25f8\0\u2634"+ - "\0\u2670\0\u26ac\0\u26e8\0\u2724\0\u2760\0\u03fc\0\u03fc\0\u279c"+ - "\0\u27d8\0\u2814\0\u2850\0\u288c\0\u28c8\0\u2904\0\u03fc\0\u03fc"+ - "\0\u03fc\0\u03fc\0\u2940\0\u297c\0\u29b8\0\u29f4\0\u2a30\0\u2a6c"+ - "\0\u03fc\0\u2aa8\0\u2ae4\0\u2b20\0\u03fc\0\u2b5c\0\u2b98\0\u2bd4"+ - "\0\u03fc\0\u2c10\0\u03fc\0\u03fc\0\u2c4c\0\u03fc\0\u2c88\0\u2cc4"+ - "\0\u2d00\0\u2d3c\0\u2d78\0\u03fc\0\u2db4\0\u2df0\0\74\0\u2328"+ - "\0\u03fc\0\u2e2c\0\u03fc\0\u2e68\0\u2ea4\0\u2ee0\0\u2f1c\0\u2f58"+ - "\0\u03fc\0\u2f94\0\u2fd0\0\u300c\0\u3048\0\u3084\0\u30c0\0\u30fc"+ - "\0\u3138\0\u3174\0\u31b0\0\u31ec\0\u3228\0\u03fc\0\u3264\0\u32a0"+ - "\0\u03fc\0\u32dc\0\u3318\0\u3354\0\u3390\0\u03fc\0\u33cc\0\u3408"+ - "\0\u3444\0\u3480\0\u03fc\0\u34bc\0\u03fc\0\u03fc\0\u03fc\0\u34f8"+ - "\0\u3534\0\u3570\0\u35ac\0\u35e8\0\u03fc\0\u03fc\0\u3624\0\u3660"+ - "\0\u03fc\0\u369c\0\u03fc\0\u03fc\0\u36d8\0\u3714\0\u03fc\0\u3750"+ - "\0\u03fc\0\u03fc\0\u03fc\0\u378c\0\u37c8\0\u3804\0\u03fc\0\u3840"+ - "\0\u03fc\0\u03fc\0\u03fc\0\u387c\0\u03fc\0\u38b8\0\u03fc\0\u03fc"+ - "\0\u38f4\0\u03fc\0\u3930\0\u396c\0\u03fc\0\u39a8\0\u39e4\0\u3a20"+ - "\0\u3a5c\0\u3a98\0\u3ad4\0\u3b10\0\u3b4c\0\u03fc\0\u3b88\0\u03fc"+ - "\0\u03fc\0\u03fc\0\u3bc4\0\u3c00\0\u3c3c\0\u3c78\0\u3cb4\0\u03fc"+ - "\0\u03fc\0\u3cf0\0\u3d2c\0\u3d68\0\u3da4\0\u03fc\0\u3de0\0\u3e1c"+ - "\0\u3e58\0\u03fc\0\u3e94\0\u03fc\0\u3ed0\0\u03fc\0\u03fc\0\u03fc"+ - "\0\u3f0c\0\u3f48\0\u3f84\0\u3fc0\0\u3ffc\0\u4038\0\u4074\0\u03fc"+ - "\0\u40b0\0\u03fc\0\u40ec\0\u4128\0\u4164\0\u41a0\0\u41dc\0\u4218"+ - "\0\u4254\0\u03fc\0\u03fc\0\u4290\0\u42cc\0\u4308\0\u4344\0\u4380"+ - "\0\u43bc\0\u03fc\0\u03fc"; + "\0\u1ef0\0\u1f2c\0\u03fc\0\u1f68\0\u1fa4\0\u1fe0\0\u201c\0\u2058"+ + "\0\u2094\0\u20d0\0\u210c\0\u2148\0\u2184\0\u21c0\0\u21fc\0\u2238"+ + "\0\u03fc\0\u2274\0\u22b0\0\u22ec\0\u2328\0\u2364\0\u03fc\0\74"+ + "\0\u14a0\0\u23a0\0\u23dc\0\u2418\0\u2454\0\u2490\0\u24cc\0\u2508"+ + "\0\u03fc\0\u03fc\0\u03fc\0\u03fc\0\u2544\0\u2580\0\u25bc\0\u25f8"+ + "\0\u2634\0\u2670\0\u26ac\0\u26e8\0\u2724\0\u2760\0\u279c\0\u27d8"+ + "\0\u03fc\0\u03fc\0\u2814\0\u2850\0\u288c\0\u28c8\0\u2904\0\u2940"+ + "\0\u297c\0\u03fc\0\u03fc\0\u03fc\0\u03fc\0\u29b8\0\u29f4\0\u2a30"+ + "\0\u2a6c\0\u2aa8\0\u2ae4\0\u03fc\0\u2b20\0\u2b5c\0\u2b98\0\u03fc"+ + "\0\u2bd4\0\u2c10\0\u2c4c\0\u03fc\0\u2c88\0\u03fc\0\u03fc\0\u2cc4"+ + "\0\u03fc\0\u2d00\0\u2d3c\0\u2d78\0\u2db4\0\u2df0\0\u03fc\0\u2e2c"+ + "\0\u2e68\0\74\0\u23a0\0\u03fc\0\u2ea4\0\u03fc\0\u2ee0\0\u2f1c"+ + "\0\u2f58\0\u2f94\0\u2fd0\0\u03fc\0\u300c\0\u3048\0\u3084\0\u30c0"+ + "\0\u30fc\0\u3138\0\u3174\0\u31b0\0\u31ec\0\u3228\0\u3264\0\u32a0"+ + "\0\u03fc\0\u32dc\0\u3318\0\u03fc\0\u3354\0\u3390\0\u33cc\0\u3408"+ + "\0\u03fc\0\u3444\0\u3480\0\u34bc\0\u34f8\0\u03fc\0\u3534\0\u03fc"+ + "\0\u03fc\0\u03fc\0\u3570\0\u35ac\0\u35e8\0\u3624\0\u3660\0\u03fc"+ + "\0\u03fc\0\u369c\0\u36d8\0\u03fc\0\u3714\0\u03fc\0\u03fc\0\u3750"+ + "\0\u378c\0\u03fc\0\u37c8\0\u03fc\0\u03fc\0\u03fc\0\u3804\0\u3840"+ + "\0\u387c\0\u03fc\0\u38b8\0\u03fc\0\u03fc\0\u03fc\0\u38f4\0\u03fc"+ + "\0\u3930\0\u03fc\0\u03fc\0\u396c\0\u03fc\0\u39a8\0\u39e4\0\u03fc"+ + "\0\u3a20\0\u3a5c\0\u3a98\0\u3ad4\0\u3b10\0\u3b4c\0\u3b88\0\u3bc4"+ + "\0\u03fc\0\u3c00\0\u03fc\0\u03fc\0\u03fc\0\u3c3c\0\u3c78\0\u3cb4"+ + "\0\u3cf0\0\u3d2c\0\u03fc\0\u03fc\0\u3d68\0\u3da4\0\u3de0\0\u3e1c"+ + "\0\u03fc\0\u3e58\0\u3e94\0\u3ed0\0\u03fc\0\u3f0c\0\u03fc\0\u3f48"+ + "\0\u03fc\0\u03fc\0\u03fc\0\u3f84\0\u3fc0\0\u3ffc\0\u4038\0\u4074"+ + "\0\u40b0\0\u40ec\0\u03fc\0\u4128\0\u03fc\0\u4164\0\u41a0\0\u41dc"+ + "\0\u4218\0\u4254\0\u4290\0\u42cc\0\u03fc\0\u03fc\0\u4308\0\u4344"+ + "\0\u4380\0\u43bc\0\u43f8\0\u4434\0\u03fc\0\u03fc"; private static int [] zzUnpackRowMap() { - int [] result = new int[395]; + int [] result = new int[398]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -201,234 +201,235 @@ private static int zzUnpackRowMap(String packed, int offset, int [] result) { "\1\2\3\3\1\4\1\5\1\6\1\7\1\10\1\11"+ "\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21"+ "\1\22\1\23\1\24\1\22\1\25\1\26\1\22\1\27"+ - "\1\30\1\31\2\22\1\32\1\33\1\34\1\35\1\36"+ - "\1\37\1\2\1\40\1\41\1\42\1\43\1\44\1\45"+ + "\1\30\1\31\1\32\1\22\1\33\1\34\1\35\1\36"+ + "\1\37\1\40\1\2\1\41\1\42\1\43\1\44\1\45"+ "\1\46\1\47\1\50\1\51\1\52\1\53\1\54\1\55"+ "\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65"+ - "\1\2\75\0\3\3\74\0\1\22\1\66\4\22\1\67"+ - "\24\22\1\0\2\22\36\0\10\22\1\70\1\71\1\22"+ - "\1\72\1\22\1\73\15\22\1\0\2\22\36\0\4\22"+ - "\1\74\1\75\25\22\1\0\2\22\36\0\1\22\1\76"+ - "\3\22\1\77\5\22\1\100\1\101\12\22\1\102\3\22"+ - "\1\0\2\22\36\0\6\22\1\103\24\22\1\0\2\22"+ - "\36\0\6\22\1\104\24\22\1\0\2\22\36\0\10\22"+ - "\1\105\4\22\1\106\4\22\1\107\10\22\1\0\2\22"+ - "\36\0\10\22\1\110\2\22\1\111\17\22\1\0\2\22"+ - "\36\0\7\22\1\112\4\22\1\113\16\22\1\0\2\22"+ - "\36\0\5\22\1\114\1\115\3\22\1\116\1\22\1\117"+ - "\16\22\1\0\2\22\36\0\10\22\1\120\2\22\1\121"+ - "\17\22\1\0\2\22\36\0\2\22\1\122\1\123\1\124"+ - "\1\22\1\125\3\22\1\126\15\22\1\127\2\22\1\0"+ - "\2\22\36\0\5\22\1\130\2\22\1\131\7\22\1\132"+ - "\2\22\1\133\7\22\1\0\2\22\36\0\12\22\1\134"+ - "\1\22\1\135\16\22\1\0\2\22\36\0\33\22\1\0"+ - "\2\22\36\0\4\22\1\136\5\22\1\137\20\22\1\0"+ - "\2\22\36\0\1\22\1\140\3\22\1\141\4\22\1\142"+ - "\1\22\1\143\16\22\1\0\2\22\36\0\14\22\1\144"+ - "\16\22\1\0\2\22\36\0\5\22\1\145\1\146\24\22"+ - "\1\0\2\22\36\0\14\22\1\147\16\22\1\0\2\22"+ - "\36\0\6\22\1\150\20\22\1\151\3\22\1\0\2\22"+ - "\36\0\12\22\1\152\20\22\1\0\2\22\32\0\37\153"+ - "\1\0\34\153\42\0\1\154\71\0\2\35\1\154\73\0"+ - "\1\155\31\0\43\156\1\157\1\160\27\156\44\161\1\162"+ - "\1\157\26\161\46\0\1\163\1\164\117\0\1\165\60\0"+ - "\1\166\1\0\1\167\71\0\1\170\73\0\1\171\73\0"+ - "\1\172\17\0\2\22\1\173\5\22\1\174\22\22\1\0"+ - "\2\22\36\0\5\22\1\175\25\22\1\0\2\22\36\0"+ - "\11\22\1\176\15\22\1\177\3\22\1\0\2\22\36\0"+ - "\11\22\1\200\21\22\1\0\2\22\36\0\3\22\1\201"+ - "\7\22\1\202\17\22\1\0\2\22\36\0\15\22\1\203"+ - "\15\22\1\0\2\22\36\0\6\22\1\204\24\22\1\0"+ - "\2\22\36\0\7\22\1\205\23\22\1\0\2\22\36\0"+ - "\13\22\1\206\1\22\1\207\15\22\1\0\2\22\36\0"+ - "\6\22\1\210\24\22\1\0\2\22\36\0\16\22\1\211"+ - "\14\22\1\0\2\22\36\0\1\212\6\22\1\213\1\214"+ - "\22\22\1\0\2\22\36\0\23\22\1\215\7\22\1\0"+ - "\2\22\36\0\1\22\1\216\31\22\1\0\2\22\36\0"+ - "\1\217\1\22\1\220\6\22\1\221\3\22\1\222\3\22"+ - "\1\223\11\22\1\0\2\22\36\0\11\22\1\224\21\22"+ - "\1\0\2\22\36\0\13\22\1\225\17\22\1\0\2\22"+ - "\36\0\2\22\1\226\7\22\1\227\10\22\1\230\7\22"+ - "\1\0\2\22\36\0\12\22\1\231\4\22\1\232\13\22"+ - "\1\0\2\22\36\0\12\22\1\233\20\22\1\0\2\22"+ - "\36\0\15\22\1\234\15\22\1\0\2\22\36\0\2\22"+ - "\1\235\5\22\1\236\1\237\21\22\1\0\2\22\36\0"+ - "\14\22\1\240\16\22\1\0\2\22\36\0\2\22\1\241"+ - "\10\22\1\242\1\22\1\243\15\22\1\0\2\22\36\0"+ - "\13\22\1\244\17\22\1\0\2\22\36\0\11\22\1\245"+ - "\21\22\1\0\2\22\36\0\1\22\1\246\31\22\1\0"+ - "\2\22\36\0\1\22\1\247\31\22\1\0\2\22\36\0"+ - "\14\22\1\250\16\22\1\0\2\22\36\0\2\22\1\251"+ - "\30\22\1\0\2\22\36\0\10\22\1\252\22\22\1\0"+ - "\2\22\36\0\12\22\1\253\20\22\1\0\2\22\36\0"+ - "\11\22\1\254\21\22\1\0\2\22\36\0\2\22\1\255"+ - "\30\22\1\0\2\22\36\0\1\256\32\22\1\0\2\22"+ - "\36\0\1\22\1\257\31\22\1\0\2\22\36\0\6\22"+ - "\1\260\24\22\1\0\2\22\36\0\2\22\1\261\30\22"+ - "\1\0\2\22\36\0\15\22\1\262\15\22\1\0\2\22"+ - "\36\0\14\22\1\263\16\22\1\0\2\22\36\0\6\22"+ - "\1\264\6\22\1\265\15\22\1\0\2\22\36\0\5\22"+ - "\1\266\25\22\1\0\2\22\36\0\5\22\1\267\25\22"+ - "\1\0\2\22\36\0\14\22\1\270\16\22\1\0\2\22"+ - "\36\0\5\22\1\271\25\22\1\0\2\22\36\0\12\22"+ - "\1\272\20\22\1\0\2\22\36\0\24\22\1\273\6\22"+ - "\1\0\2\22\36\0\6\22\1\274\24\22\1\0\2\22"+ - "\32\0\37\153\1\275\34\153\40\0\2\276\32\0\1\156"+ - "\2\0\71\156\1\161\2\0\71\161\2\163\1\0\71\163"+ - "\47\164\1\277\24\164\4\0\3\22\1\300\27\22\1\0"+ - "\2\22\36\0\11\22\1\301\21\22\1\0\2\22\36\0"+ - "\24\22\1\302\6\22\1\0\2\22\36\0\6\22\1\303"+ - "\24\22\1\0\2\22\36\0\6\22\1\304\24\22\1\0"+ - "\2\22\36\0\13\22\1\305\17\22\1\0\2\22\36\0"+ - "\10\22\1\306\22\22\1\0\2\22\36\0\6\22\1\307"+ - "\24\22\1\0\2\22\36\0\6\22\1\310\24\22\1\0"+ - "\2\22\36\0\15\22\1\311\15\22\1\0\2\22\36\0"+ - "\1\22\1\312\31\22\1\0\2\22\36\0\1\313\32\22"+ - "\1\0\2\22\36\0\10\22\1\314\22\22\1\0\2\22"+ - "\36\0\2\22\1\315\10\22\1\316\17\22\1\0\2\22"+ - "\36\0\4\22\1\317\26\22\1\0\2\22\36\0\11\22"+ - "\1\320\21\22\1\0\2\22\36\0\14\22\1\321\16\22"+ - "\1\0\2\22\36\0\7\22\1\322\23\22\1\0\2\22"+ - "\36\0\7\22\1\323\23\22\1\0\2\22\36\0\1\22"+ - "\1\324\31\22\1\0\2\22\36\0\7\22\1\325\23\22"+ - "\1\0\2\22\36\0\13\22\1\326\17\22\1\0\2\22"+ - "\36\0\6\22\1\327\24\22\1\0\2\22\36\0\5\22"+ - "\1\330\25\22\1\0\2\22\36\0\13\22\1\331\17\22"+ - "\1\0\2\22\36\0\15\22\1\332\15\22\1\0\2\22"+ - "\36\0\14\22\1\333\4\22\1\334\11\22\1\0\2\22"+ - "\36\0\12\22\1\335\20\22\1\0\2\22\36\0\10\22"+ - "\1\336\22\22\1\0\2\22\36\0\15\22\1\337\15\22"+ - "\1\0\2\22\36\0\6\22\1\340\24\22\1\0\2\22"+ - "\36\0\6\22\1\341\24\22\1\0\2\22\36\0\23\22"+ - "\1\342\7\22\1\0\2\22\36\0\1\22\1\343\31\22"+ - "\1\0\2\22\36\0\3\22\1\344\27\22\1\0\2\22"+ - "\36\0\6\22\1\345\24\22\1\0\2\22\36\0\2\22"+ - "\1\346\30\22\1\0\2\22\36\0\6\22\1\347\24\22"+ - "\1\0\2\22\36\0\5\22\1\350\25\22\1\0\2\22"+ - "\36\0\10\22\1\351\4\22\1\352\15\22\1\0\2\22"+ - "\36\0\5\22\1\353\25\22\1\0\2\22\36\0\24\22"+ - "\1\354\6\22\1\0\2\22\36\0\23\22\1\355\7\22"+ - "\1\0\2\22\36\0\6\22\1\356\24\22\1\0\2\22"+ - "\36\0\12\22\1\357\20\22\1\0\2\22\36\0\12\22"+ - "\1\360\20\22\1\0\2\22\36\0\11\22\1\361\21\22"+ - "\1\0\2\22\36\0\5\22\1\362\2\22\1\363\22\22"+ - "\1\0\2\22\36\0\4\22\1\364\26\22\1\0\2\22"+ - "\36\0\13\22\1\365\17\22\1\0\2\22\36\0\1\366"+ - "\32\22\1\0\2\22\36\0\15\22\1\367\15\22\1\0"+ - "\2\22\36\0\2\22\1\370\30\22\1\0\2\22\36\0"+ - "\6\22\1\371\24\22\1\0\2\22\36\0\20\22\1\372"+ - "\12\22\1\0\2\22\36\0\12\22\1\373\20\22\1\0"+ - "\2\22\36\0\10\22\1\374\22\22\1\0\2\22\36\0"+ - "\12\22\1\375\20\22\1\0\2\22\36\0\15\22\1\376"+ - "\15\22\1\0\2\22\32\0\46\164\1\377\1\u0100\24\164"+ - "\4\0\4\22\1\u0101\26\22\1\0\2\22\36\0\1\22"+ - "\1\u0102\31\22\1\0\2\22\36\0\6\22\1\u0103\24\22"+ - "\1\0\2\22\36\0\10\22\1\u0104\22\22\1\0\2\22"+ - "\36\0\5\22\1\u0105\25\22\1\0\2\22\36\0\4\22"+ - "\1\u0106\26\22\1\0\2\22\36\0\2\22\1\u0107\30\22"+ - "\1\0\2\22\36\0\12\22\1\u0108\20\22\1\0\2\22"+ - "\36\0\2\22\1\u0109\30\22\1\0\2\22\36\0\1\22"+ - "\1\u010a\31\22\1\0\2\22\36\0\2\22\1\u010b\30\22"+ - "\1\0\2\22\36\0\6\22\1\u010c\24\22\1\0\2\22"+ - "\36\0\6\22\1\u010d\24\22\1\0\2\22\36\0\16\22"+ - "\1\u010e\14\22\1\0\2\22\36\0\5\22\1\u010f\25\22"+ - "\1\0\2\22\36\0\3\22\1\u0110\27\22\1\0\2\22"+ - "\36\0\2\22\1\u0111\30\22\1\0\2\22\36\0\12\22"+ - "\1\u0112\20\22\1\0\2\22\36\0\1\22\1\u0113\31\22"+ - "\1\0\2\22\36\0\2\22\1\u0114\30\22\1\0\2\22"+ - "\36\0\1\22\1\u0115\31\22\1\0\2\22\36\0\10\22"+ - "\1\u0116\22\22\1\0\2\22\36\0\7\22\1\u0117\23\22"+ - "\1\0\2\22\36\0\10\22\1\u0118\22\22\1\0\2\22"+ - "\36\0\24\22\1\u0119\6\22\1\0\2\22\36\0\3\22"+ - "\1\u011a\27\22\1\0\2\22\36\0\6\22\1\u011b\24\22"+ - "\1\0\2\22\36\0\2\22\1\u011c\30\22\1\0\2\22"+ - "\36\0\12\22\1\u011d\20\22\1\0\2\22\36\0\22\22"+ - "\1\u011e\10\22\1\0\2\22\36\0\2\22\1\u011f\30\22"+ - "\1\0\2\22\36\0\1\22\1\u0120\31\22\1\0\2\22"+ - "\36\0\2\22\1\u0121\30\22\1\0\2\22\36\0\15\22"+ - "\1\u0122\15\22\1\0\2\22\36\0\5\22\1\u0123\25\22"+ - "\1\0\2\22\36\0\14\22\1\u0124\16\22\1\0\2\22"+ - "\36\0\2\22\1\u0125\30\22\1\0\2\22\36\0\6\22"+ - "\1\u0126\24\22\1\0\2\22\36\0\6\22\1\u0127\24\22"+ - "\1\0\2\22\36\0\11\22\1\u0128\21\22\1\0\2\22"+ - "\36\0\6\22\1\u0129\24\22\1\0\2\22\36\0\1\22"+ - "\1\u012a\31\22\1\0\2\22\36\0\12\22\1\u012b\20\22"+ - "\1\0\2\22\36\0\14\22\1\u012c\16\22\1\0\2\22"+ - "\36\0\10\22\1\u012d\22\22\1\0\2\22\36\0\11\22"+ - "\1\u012e\21\22\1\0\2\22\36\0\2\22\1\u012f\30\22"+ - "\1\0\2\22\36\0\11\22\1\u0130\21\22\1\0\2\22"+ - "\36\0\2\22\1\u0131\30\22\1\0\2\22\36\0\14\22"+ - "\1\u0132\16\22\1\0\2\22\36\0\6\22\1\u0133\24\22"+ - "\1\0\2\22\36\0\2\22\1\u0134\30\22\1\0\2\22"+ - "\36\0\12\22\1\u0135\20\22\1\0\2\22\36\0\5\22"+ - "\1\u0136\25\22\1\0\2\22\36\0\5\22\1\u0137\25\22"+ - "\1\0\2\22\36\0\5\22\1\u0138\25\22\1\0\2\22"+ - "\36\0\6\22\1\u0139\24\22\1\0\2\22\36\0\10\22"+ - "\1\u013a\22\22\1\0\2\22\36\0\6\22\1\u013b\24\22"+ - "\1\0\2\22\36\0\12\22\1\u013c\20\22\1\0\2\22"+ - "\36\0\5\22\1\u013d\25\22\1\0\2\22\36\0\3\22"+ - "\1\u013e\27\22\1\0\2\22\36\0\13\22\1\u013f\17\22"+ - "\1\0\2\22\36\0\12\22\1\u0140\20\22\1\0\2\22"+ - "\36\0\6\22\1\u0141\24\22\1\0\2\22\36\0\11\22"+ - "\1\u0142\21\22\1\0\2\22\36\0\4\22\1\u0143\26\22"+ - "\1\0\2\22\36\0\10\22\1\u0144\22\22\1\0\2\22"+ - "\36\0\6\22\1\u0145\24\22\1\0\2\22\36\0\10\22"+ - "\1\u0146\22\22\1\0\2\22\36\0\13\22\1\u0147\17\22"+ - "\1\0\2\22\36\0\5\22\1\u0148\25\22\1\0\2\22"+ - "\36\0\6\22\1\u0149\24\22\1\0\2\22\36\0\6\22"+ - "\1\u014a\24\22\1\0\2\22\36\0\10\22\1\u014b\22\22"+ - "\1\0\2\22\36\0\2\22\1\u014c\30\22\1\0\2\22"+ - "\36\0\5\22\1\u014d\25\22\1\0\2\22\36\0\3\22"+ - "\1\u014e\27\22\1\0\2\22\36\0\15\22\1\u014f\15\22"+ - "\1\0\2\22\36\0\11\22\1\u0150\21\22\1\0\2\22"+ - "\36\0\14\22\1\u0151\16\22\1\0\2\22\36\0\12\22"+ - "\1\u0152\20\22\1\0\2\22\36\0\5\22\1\u0153\25\22"+ - "\1\0\2\22\36\0\10\22\1\u0154\22\22\1\0\2\22"+ - "\36\0\1\22\1\u0155\31\22\1\0\2\22\36\0\13\22"+ - "\1\u0156\17\22\1\0\2\22\36\0\14\22\1\u0157\16\22"+ - "\1\0\2\22\36\0\6\22\1\u0158\24\22\1\0\2\22"+ - "\36\0\2\22\1\u0159\30\22\1\0\2\22\36\0\10\22"+ - "\1\u015a\22\22\1\0\2\22\36\0\11\22\1\u015b\21\22"+ - "\1\0\2\22\36\0\3\22\1\u015c\27\22\1\0\2\22"+ - "\36\0\13\22\1\u015d\17\22\1\0\2\22\36\0\1\22"+ - "\1\u015e\31\22\1\0\2\22\36\0\6\22\1\u015f\24\22"+ - "\1\0\2\22\36\0\4\22\1\u0160\26\22\1\0\2\22"+ - "\36\0\6\22\1\u0161\24\22\1\0\2\22\36\0\12\22"+ - "\1\u0162\20\22\1\0\2\22\36\0\5\22\1\u0163\25\22"+ - "\1\0\2\22\36\0\10\22\1\u0164\22\22\1\0\2\22"+ - "\36\0\2\22\1\u0165\30\22\1\0\2\22\36\0\13\22"+ - "\1\u0166\17\22\1\0\2\22\36\0\12\22\1\u0167\20\22"+ - "\1\0\2\22\36\0\10\22\1\u0168\22\22\1\0\2\22"+ - "\36\0\12\22\1\u0169\20\22\1\0\2\22\36\0\2\22"+ - "\1\u016a\30\22\1\0\2\22\36\0\2\22\1\u016b\30\22"+ - "\1\0\2\22\36\0\15\22\1\u016c\15\22\1\0\2\22"+ - "\36\0\5\22\1\u016d\25\22\1\0\2\22\36\0\3\22"+ - "\1\u016e\27\22\1\0\2\22\36\0\27\22\1\u016f\3\22"+ - "\1\0\2\22\36\0\24\22\1\u0170\6\22\1\0\2\22"+ - "\36\0\6\22\1\u0171\24\22\1\0\2\22\36\0\10\22"+ - "\1\u0172\22\22\1\0\2\22\36\0\13\22\1\u0173\17\22"+ - "\1\0\2\22\36\0\10\22\1\u0174\22\22\1\0\2\22"+ - "\36\0\23\22\1\u0175\7\22\1\0\2\22\36\0\1\u0176"+ - "\32\22\1\0\2\22\36\0\13\22\1\u0177\17\22\1\0"+ - "\2\22\36\0\2\22\1\u0178\30\22\1\0\2\22\36\0"+ - "\4\22\1\u0179\26\22\1\0\2\22\36\0\24\22\1\u017a"+ - "\6\22\1\0\2\22\36\0\1\22\1\u017b\31\22\1\0"+ - "\2\22\36\0\12\22\1\u017c\20\22\1\0\2\22\36\0"+ - "\2\22\1\u017d\30\22\1\0\2\22\36\0\12\22\1\u017e"+ - "\20\22\1\0\2\22\36\0\2\22\1\u017f\30\22\1\0"+ - "\2\22\36\0\10\22\1\u0180\22\22\1\0\2\22\36\0"+ - "\23\22\1\u0181\7\22\1\0\2\22\36\0\23\22\1\u0182"+ - "\7\22\1\0\2\22\36\0\4\22\1\u0183\26\22\1\0"+ - "\2\22\36\0\1\22\1\u0184\31\22\1\0\2\22\36\0"+ - "\1\22\1\u0185\31\22\1\0\2\22\36\0\2\22\1\u0186"+ - "\30\22\1\0\2\22\36\0\2\22\1\u0187\30\22\1\0"+ - "\2\22\36\0\14\22\1\u0188\16\22\1\0\2\22\36\0"+ - "\4\22\1\u0189\26\22\1\0\2\22\36\0\5\22\1\u018a"+ - "\25\22\1\0\2\22\36\0\13\22\1\u018b\17\22\1\0"+ - "\2\22\32\0"; + "\1\66\1\2\75\0\3\3\74\0\1\22\1\67\4\22"+ + "\1\70\24\22\1\0\2\22\36\0\10\22\1\71\1\72"+ + "\1\22\1\73\1\22\1\74\15\22\1\0\2\22\36\0"+ + "\4\22\1\75\1\76\25\22\1\0\2\22\36\0\1\22"+ + "\1\77\3\22\1\100\5\22\1\101\1\102\12\22\1\103"+ + "\3\22\1\0\2\22\36\0\6\22\1\104\24\22\1\0"+ + "\2\22\36\0\6\22\1\105\24\22\1\0\2\22\36\0"+ + "\10\22\1\106\4\22\1\107\4\22\1\110\10\22\1\0"+ + "\2\22\36\0\10\22\1\111\2\22\1\112\17\22\1\0"+ + "\2\22\36\0\7\22\1\113\4\22\1\114\16\22\1\0"+ + "\2\22\36\0\5\22\1\115\1\116\3\22\1\117\1\22"+ + "\1\120\16\22\1\0\2\22\36\0\10\22\1\121\2\22"+ + "\1\122\17\22\1\0\2\22\36\0\2\22\1\123\1\124"+ + "\1\125\1\22\1\126\3\22\1\127\15\22\1\130\2\22"+ + "\1\0\2\22\36\0\5\22\1\131\2\22\1\132\7\22"+ + "\1\133\2\22\1\134\7\22\1\0\2\22\36\0\12\22"+ + "\1\135\1\22\1\136\16\22\1\0\2\22\36\0\33\22"+ + "\1\0\2\22\36\0\4\22\1\137\5\22\1\140\20\22"+ + "\1\0\2\22\36\0\1\22\1\141\3\22\1\142\4\22"+ + "\1\143\1\22\1\144\16\22\1\0\2\22\36\0\14\22"+ + "\1\145\16\22\1\0\2\22\36\0\5\22\1\146\1\147"+ + "\24\22\1\0\2\22\36\0\14\22\1\150\16\22\1\0"+ + "\2\22\36\0\6\22\1\151\20\22\1\152\3\22\1\0"+ + "\2\22\36\0\12\22\1\153\20\22\1\0\2\22\36\0"+ + "\6\22\1\154\24\22\1\0\2\22\32\0\37\155\1\0"+ + "\34\155\42\0\1\156\71\0\2\36\1\156\73\0\1\157"+ + "\31\0\43\160\1\161\1\162\27\160\44\163\1\164\1\161"+ + "\26\163\46\0\1\165\1\166\117\0\1\167\60\0\1\170"+ + "\1\0\1\171\71\0\1\172\73\0\1\173\73\0\1\174"+ + "\17\0\2\22\1\175\5\22\1\176\22\22\1\0\2\22"+ + "\36\0\5\22\1\177\25\22\1\0\2\22\36\0\11\22"+ + "\1\200\15\22\1\201\3\22\1\0\2\22\36\0\11\22"+ + "\1\202\21\22\1\0\2\22\36\0\3\22\1\203\7\22"+ + "\1\204\17\22\1\0\2\22\36\0\15\22\1\205\15\22"+ + "\1\0\2\22\36\0\6\22\1\206\24\22\1\0\2\22"+ + "\36\0\7\22\1\207\23\22\1\0\2\22\36\0\13\22"+ + "\1\210\1\22\1\211\15\22\1\0\2\22\36\0\6\22"+ + "\1\212\24\22\1\0\2\22\36\0\16\22\1\213\14\22"+ + "\1\0\2\22\36\0\1\214\6\22\1\215\1\216\22\22"+ + "\1\0\2\22\36\0\23\22\1\217\7\22\1\0\2\22"+ + "\36\0\1\22\1\220\31\22\1\0\2\22\36\0\1\221"+ + "\1\22\1\222\6\22\1\223\3\22\1\224\3\22\1\225"+ + "\11\22\1\0\2\22\36\0\11\22\1\226\21\22\1\0"+ + "\2\22\36\0\13\22\1\227\17\22\1\0\2\22\36\0"+ + "\2\22\1\230\7\22\1\231\10\22\1\232\7\22\1\0"+ + "\2\22\36\0\12\22\1\233\4\22\1\234\13\22\1\0"+ + "\2\22\36\0\12\22\1\235\20\22\1\0\2\22\36\0"+ + "\15\22\1\236\15\22\1\0\2\22\36\0\2\22\1\237"+ + "\5\22\1\240\1\241\21\22\1\0\2\22\36\0\14\22"+ + "\1\242\16\22\1\0\2\22\36\0\2\22\1\243\10\22"+ + "\1\244\1\22\1\245\15\22\1\0\2\22\36\0\13\22"+ + "\1\246\17\22\1\0\2\22\36\0\11\22\1\247\21\22"+ + "\1\0\2\22\36\0\1\22\1\250\31\22\1\0\2\22"+ + "\36\0\1\22\1\251\31\22\1\0\2\22\36\0\14\22"+ + "\1\252\16\22\1\0\2\22\36\0\2\22\1\253\30\22"+ + "\1\0\2\22\36\0\10\22\1\254\22\22\1\0\2\22"+ + "\36\0\12\22\1\255\20\22\1\0\2\22\36\0\11\22"+ + "\1\256\21\22\1\0\2\22\36\0\2\22\1\257\30\22"+ + "\1\0\2\22\36\0\1\260\32\22\1\0\2\22\36\0"+ + "\1\22\1\261\31\22\1\0\2\22\36\0\6\22\1\262"+ + "\24\22\1\0\2\22\36\0\2\22\1\263\30\22\1\0"+ + "\2\22\36\0\15\22\1\264\15\22\1\0\2\22\36\0"+ + "\14\22\1\265\16\22\1\0\2\22\36\0\6\22\1\266"+ + "\6\22\1\267\15\22\1\0\2\22\36\0\5\22\1\270"+ + "\25\22\1\0\2\22\36\0\5\22\1\271\25\22\1\0"+ + "\2\22\36\0\14\22\1\272\16\22\1\0\2\22\36\0"+ + "\5\22\1\273\25\22\1\0\2\22\36\0\12\22\1\274"+ + "\20\22\1\0\2\22\36\0\24\22\1\275\6\22\1\0"+ + "\2\22\36\0\6\22\1\276\24\22\1\0\2\22\36\0"+ + "\27\22\1\277\3\22\1\0\2\22\32\0\37\155\1\300"+ + "\34\155\40\0\2\301\32\0\1\160\2\0\71\160\1\163"+ + "\2\0\71\163\2\165\1\0\71\165\47\166\1\302\24\166"+ + "\4\0\3\22\1\303\27\22\1\0\2\22\36\0\11\22"+ + "\1\304\21\22\1\0\2\22\36\0\24\22\1\305\6\22"+ + "\1\0\2\22\36\0\6\22\1\306\24\22\1\0\2\22"+ + "\36\0\6\22\1\307\24\22\1\0\2\22\36\0\13\22"+ + "\1\310\17\22\1\0\2\22\36\0\10\22\1\311\22\22"+ + "\1\0\2\22\36\0\6\22\1\312\24\22\1\0\2\22"+ + "\36\0\6\22\1\313\24\22\1\0\2\22\36\0\15\22"+ + "\1\314\15\22\1\0\2\22\36\0\1\22\1\315\31\22"+ + "\1\0\2\22\36\0\1\316\32\22\1\0\2\22\36\0"+ + "\10\22\1\317\22\22\1\0\2\22\36\0\2\22\1\320"+ + "\10\22\1\321\17\22\1\0\2\22\36\0\4\22\1\322"+ + "\26\22\1\0\2\22\36\0\11\22\1\323\21\22\1\0"+ + "\2\22\36\0\14\22\1\324\16\22\1\0\2\22\36\0"+ + "\7\22\1\325\23\22\1\0\2\22\36\0\7\22\1\326"+ + "\23\22\1\0\2\22\36\0\1\22\1\327\31\22\1\0"+ + "\2\22\36\0\7\22\1\330\23\22\1\0\2\22\36\0"+ + "\13\22\1\331\17\22\1\0\2\22\36\0\6\22\1\332"+ + "\24\22\1\0\2\22\36\0\5\22\1\333\25\22\1\0"+ + "\2\22\36\0\13\22\1\334\17\22\1\0\2\22\36\0"+ + "\15\22\1\335\15\22\1\0\2\22\36\0\14\22\1\336"+ + "\4\22\1\337\11\22\1\0\2\22\36\0\12\22\1\340"+ + "\20\22\1\0\2\22\36\0\10\22\1\341\22\22\1\0"+ + "\2\22\36\0\15\22\1\342\15\22\1\0\2\22\36\0"+ + "\6\22\1\343\24\22\1\0\2\22\36\0\6\22\1\344"+ + "\24\22\1\0\2\22\36\0\23\22\1\345\7\22\1\0"+ + "\2\22\36\0\1\22\1\346\31\22\1\0\2\22\36\0"+ + "\3\22\1\347\27\22\1\0\2\22\36\0\6\22\1\350"+ + "\24\22\1\0\2\22\36\0\2\22\1\351\30\22\1\0"+ + "\2\22\36\0\6\22\1\352\24\22\1\0\2\22\36\0"+ + "\5\22\1\353\25\22\1\0\2\22\36\0\10\22\1\354"+ + "\4\22\1\355\15\22\1\0\2\22\36\0\5\22\1\356"+ + "\25\22\1\0\2\22\36\0\24\22\1\357\6\22\1\0"+ + "\2\22\36\0\23\22\1\360\7\22\1\0\2\22\36\0"+ + "\6\22\1\361\24\22\1\0\2\22\36\0\12\22\1\362"+ + "\20\22\1\0\2\22\36\0\12\22\1\363\20\22\1\0"+ + "\2\22\36\0\11\22\1\364\21\22\1\0\2\22\36\0"+ + "\5\22\1\365\2\22\1\366\22\22\1\0\2\22\36\0"+ + "\4\22\1\367\26\22\1\0\2\22\36\0\13\22\1\370"+ + "\17\22\1\0\2\22\36\0\1\371\32\22\1\0\2\22"+ + "\36\0\15\22\1\372\15\22\1\0\2\22\36\0\2\22"+ + "\1\373\30\22\1\0\2\22\36\0\6\22\1\374\24\22"+ + "\1\0\2\22\36\0\20\22\1\375\12\22\1\0\2\22"+ + "\36\0\12\22\1\376\20\22\1\0\2\22\36\0\10\22"+ + "\1\377\22\22\1\0\2\22\36\0\12\22\1\u0100\20\22"+ + "\1\0\2\22\36\0\15\22\1\u0101\15\22\1\0\2\22"+ + "\32\0\46\166\1\u0102\1\u0103\24\166\4\0\4\22\1\u0104"+ + "\26\22\1\0\2\22\36\0\1\22\1\u0105\31\22\1\0"+ + "\2\22\36\0\6\22\1\u0106\24\22\1\0\2\22\36\0"+ + "\10\22\1\u0107\22\22\1\0\2\22\36\0\5\22\1\u0108"+ + "\25\22\1\0\2\22\36\0\4\22\1\u0109\26\22\1\0"+ + "\2\22\36\0\2\22\1\u010a\30\22\1\0\2\22\36\0"+ + "\12\22\1\u010b\20\22\1\0\2\22\36\0\2\22\1\u010c"+ + "\30\22\1\0\2\22\36\0\1\22\1\u010d\31\22\1\0"+ + "\2\22\36\0\2\22\1\u010e\30\22\1\0\2\22\36\0"+ + "\6\22\1\u010f\24\22\1\0\2\22\36\0\6\22\1\u0110"+ + "\24\22\1\0\2\22\36\0\16\22\1\u0111\14\22\1\0"+ + "\2\22\36\0\5\22\1\u0112\25\22\1\0\2\22\36\0"+ + "\3\22\1\u0113\27\22\1\0\2\22\36\0\2\22\1\u0114"+ + "\30\22\1\0\2\22\36\0\12\22\1\u0115\20\22\1\0"+ + "\2\22\36\0\1\22\1\u0116\31\22\1\0\2\22\36\0"+ + "\2\22\1\u0117\30\22\1\0\2\22\36\0\1\22\1\u0118"+ + "\31\22\1\0\2\22\36\0\10\22\1\u0119\22\22\1\0"+ + "\2\22\36\0\7\22\1\u011a\23\22\1\0\2\22\36\0"+ + "\10\22\1\u011b\22\22\1\0\2\22\36\0\24\22\1\u011c"+ + "\6\22\1\0\2\22\36\0\3\22\1\u011d\27\22\1\0"+ + "\2\22\36\0\6\22\1\u011e\24\22\1\0\2\22\36\0"+ + "\2\22\1\u011f\30\22\1\0\2\22\36\0\12\22\1\u0120"+ + "\20\22\1\0\2\22\36\0\22\22\1\u0121\10\22\1\0"+ + "\2\22\36\0\2\22\1\u0122\30\22\1\0\2\22\36\0"+ + "\1\22\1\u0123\31\22\1\0\2\22\36\0\2\22\1\u0124"+ + "\30\22\1\0\2\22\36\0\15\22\1\u0125\15\22\1\0"+ + "\2\22\36\0\5\22\1\u0126\25\22\1\0\2\22\36\0"+ + "\14\22\1\u0127\16\22\1\0\2\22\36\0\2\22\1\u0128"+ + "\30\22\1\0\2\22\36\0\6\22\1\u0129\24\22\1\0"+ + "\2\22\36\0\6\22\1\u012a\24\22\1\0\2\22\36\0"+ + "\11\22\1\u012b\21\22\1\0\2\22\36\0\6\22\1\u012c"+ + "\24\22\1\0\2\22\36\0\1\22\1\u012d\31\22\1\0"+ + "\2\22\36\0\12\22\1\u012e\20\22\1\0\2\22\36\0"+ + "\14\22\1\u012f\16\22\1\0\2\22\36\0\10\22\1\u0130"+ + "\22\22\1\0\2\22\36\0\11\22\1\u0131\21\22\1\0"+ + "\2\22\36\0\2\22\1\u0132\30\22\1\0\2\22\36\0"+ + "\11\22\1\u0133\21\22\1\0\2\22\36\0\2\22\1\u0134"+ + "\30\22\1\0\2\22\36\0\14\22\1\u0135\16\22\1\0"+ + "\2\22\36\0\6\22\1\u0136\24\22\1\0\2\22\36\0"+ + "\2\22\1\u0137\30\22\1\0\2\22\36\0\12\22\1\u0138"+ + "\20\22\1\0\2\22\36\0\5\22\1\u0139\25\22\1\0"+ + "\2\22\36\0\5\22\1\u013a\25\22\1\0\2\22\36\0"+ + "\5\22\1\u013b\25\22\1\0\2\22\36\0\6\22\1\u013c"+ + "\24\22\1\0\2\22\36\0\10\22\1\u013d\22\22\1\0"+ + "\2\22\36\0\6\22\1\u013e\24\22\1\0\2\22\36\0"+ + "\12\22\1\u013f\20\22\1\0\2\22\36\0\5\22\1\u0140"+ + "\25\22\1\0\2\22\36\0\3\22\1\u0141\27\22\1\0"+ + "\2\22\36\0\13\22\1\u0142\17\22\1\0\2\22\36\0"+ + "\12\22\1\u0143\20\22\1\0\2\22\36\0\6\22\1\u0144"+ + "\24\22\1\0\2\22\36\0\11\22\1\u0145\21\22\1\0"+ + "\2\22\36\0\4\22\1\u0146\26\22\1\0\2\22\36\0"+ + "\10\22\1\u0147\22\22\1\0\2\22\36\0\6\22\1\u0148"+ + "\24\22\1\0\2\22\36\0\10\22\1\u0149\22\22\1\0"+ + "\2\22\36\0\13\22\1\u014a\17\22\1\0\2\22\36\0"+ + "\5\22\1\u014b\25\22\1\0\2\22\36\0\6\22\1\u014c"+ + "\24\22\1\0\2\22\36\0\6\22\1\u014d\24\22\1\0"+ + "\2\22\36\0\10\22\1\u014e\22\22\1\0\2\22\36\0"+ + "\2\22\1\u014f\30\22\1\0\2\22\36\0\5\22\1\u0150"+ + "\25\22\1\0\2\22\36\0\3\22\1\u0151\27\22\1\0"+ + "\2\22\36\0\15\22\1\u0152\15\22\1\0\2\22\36\0"+ + "\11\22\1\u0153\21\22\1\0\2\22\36\0\14\22\1\u0154"+ + "\16\22\1\0\2\22\36\0\12\22\1\u0155\20\22\1\0"+ + "\2\22\36\0\5\22\1\u0156\25\22\1\0\2\22\36\0"+ + "\10\22\1\u0157\22\22\1\0\2\22\36\0\1\22\1\u0158"+ + "\31\22\1\0\2\22\36\0\13\22\1\u0159\17\22\1\0"+ + "\2\22\36\0\14\22\1\u015a\16\22\1\0\2\22\36\0"+ + "\6\22\1\u015b\24\22\1\0\2\22\36\0\2\22\1\u015c"+ + "\30\22\1\0\2\22\36\0\10\22\1\u015d\22\22\1\0"+ + "\2\22\36\0\11\22\1\u015e\21\22\1\0\2\22\36\0"+ + "\3\22\1\u015f\27\22\1\0\2\22\36\0\13\22\1\u0160"+ + "\17\22\1\0\2\22\36\0\1\22\1\u0161\31\22\1\0"+ + "\2\22\36\0\6\22\1\u0162\24\22\1\0\2\22\36\0"+ + "\4\22\1\u0163\26\22\1\0\2\22\36\0\6\22\1\u0164"+ + "\24\22\1\0\2\22\36\0\12\22\1\u0165\20\22\1\0"+ + "\2\22\36\0\5\22\1\u0166\25\22\1\0\2\22\36\0"+ + "\10\22\1\u0167\22\22\1\0\2\22\36\0\2\22\1\u0168"+ + "\30\22\1\0\2\22\36\0\13\22\1\u0169\17\22\1\0"+ + "\2\22\36\0\12\22\1\u016a\20\22\1\0\2\22\36\0"+ + "\10\22\1\u016b\22\22\1\0\2\22\36\0\12\22\1\u016c"+ + "\20\22\1\0\2\22\36\0\2\22\1\u016d\30\22\1\0"+ + "\2\22\36\0\2\22\1\u016e\30\22\1\0\2\22\36\0"+ + "\15\22\1\u016f\15\22\1\0\2\22\36\0\5\22\1\u0170"+ + "\25\22\1\0\2\22\36\0\3\22\1\u0171\27\22\1\0"+ + "\2\22\36\0\27\22\1\u0172\3\22\1\0\2\22\36\0"+ + "\24\22\1\u0173\6\22\1\0\2\22\36\0\6\22\1\u0174"+ + "\24\22\1\0\2\22\36\0\10\22\1\u0175\22\22\1\0"+ + "\2\22\36\0\13\22\1\u0176\17\22\1\0\2\22\36\0"+ + "\10\22\1\u0177\22\22\1\0\2\22\36\0\23\22\1\u0178"+ + "\7\22\1\0\2\22\36\0\1\u0179\32\22\1\0\2\22"+ + "\36\0\13\22\1\u017a\17\22\1\0\2\22\36\0\2\22"+ + "\1\u017b\30\22\1\0\2\22\36\0\4\22\1\u017c\26\22"+ + "\1\0\2\22\36\0\24\22\1\u017d\6\22\1\0\2\22"+ + "\36\0\1\22\1\u017e\31\22\1\0\2\22\36\0\12\22"+ + "\1\u017f\20\22\1\0\2\22\36\0\2\22\1\u0180\30\22"+ + "\1\0\2\22\36\0\12\22\1\u0181\20\22\1\0\2\22"+ + "\36\0\2\22\1\u0182\30\22\1\0\2\22\36\0\10\22"+ + "\1\u0183\22\22\1\0\2\22\36\0\23\22\1\u0184\7\22"+ + "\1\0\2\22\36\0\23\22\1\u0185\7\22\1\0\2\22"+ + "\36\0\4\22\1\u0186\26\22\1\0\2\22\36\0\1\22"+ + "\1\u0187\31\22\1\0\2\22\36\0\1\22\1\u0188\31\22"+ + "\1\0\2\22\36\0\2\22\1\u0189\30\22\1\0\2\22"+ + "\36\0\2\22\1\u018a\30\22\1\0\2\22\36\0\14\22"+ + "\1\u018b\16\22\1\0\2\22\36\0\4\22\1\u018c\26\22"+ + "\1\0\2\22\36\0\5\22\1\u018d\25\22\1\0\2\22"+ + "\36\0\13\22\1\u018e\17\22\1\0\2\22\32\0"; private static int [] zzUnpackTrans() { - int [] result = new int[17400]; + int [] result = new int[17520]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -466,12 +467,12 @@ private static int zzUnpackTrans(String packed, int offset, int [] result) { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\1\0\1\11\27\1\1\11\7\1\11\11\4\1\4\11"+ - "\1\1\2\11\65\1\2\0\1\11\1\0\1\11\3\0"+ - "\2\1\6\11\102\1\1\11\101\1\1\11\1\0\213\1"; + "\1\0\1\11\30\1\1\11\7\1\11\11\4\1\4\11"+ + "\1\1\2\11\66\1\2\0\1\11\1\0\1\11\3\0"+ + "\2\1\6\11\103\1\1\11\101\1\1\11\1\0\213\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[395]; + int [] result = new int[398]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -644,7 +645,7 @@ public final int yylength() { /** - * Reports an error that occured while scanning. + * Reports an error that occurred while scanning. * * In a wellformed scanner (no or only correct usage of * yypushback(int) and a match-all fallback rule) this method @@ -780,622 +781,627 @@ else if (zzAtEOF) { { return BAD_CHARACTER; } // fall through - case 125: break; + case 126: break; case 2: { return WHITE_SPACE; } // fall through - case 126: break; + case 127: break; case 3: { return L_IDENTIFIER; } // fall through - case 127: break; + case 128: break; case 4: { return DOLLAR; } // fall through - case 128: break; + case 129: break; case 5: { return OP_BACTICK; } // fall through - case 129: break; + case 130: break; case 6: { return L_INTEGER; } // fall through - case 130: break; + case 131: break; case 7: { return OP_DOT; } // fall through - case 131: break; + case 132: break; case 8: { return OP_DIVIDE; } // fall through - case 132: break; + case 133: break; case 9: { return OP_MUL; } // fall through - case 133: break; + case 134: break; case 10: { return SEMICOLON; } // fall through - case 134: break; + case 135: break; case 11: { return PARENTHESE_OPEN; } // fall through - case 135: break; + case 136: break; case 12: { return PARENTHESE_CLOSE; } // fall through - case 136: break; + case 137: break; case 13: { return BRACKET_CURLYOPEN; } // fall through - case 137: break; + case 138: break; case 14: { return BRACKET_CURLYCLOSE; } // fall through - case 138: break; + case 139: break; case 15: { return BRACKET_SQUAREOPEN; } // fall through - case 139: break; + case 140: break; case 16: { return BRACKET_SQUARECLOSE; } // fall through - case 140: break; + case 141: break; case 17: { return OP_COLON; } // fall through - case 141: break; + case 142: break; case 18: { return OP_EQUAL; } // fall through - case 142: break; + case 143: break; case 19: { return OP_LESSTHEN; } // fall through - case 143: break; + case 144: break; case 20: { return OP_GREATHERTHEN; } // fall through - case 144: break; + case 145: break; case 21: { return OP_PLUS; } // fall through - case 145: break; + case 146: break; case 22: { return OP_MINUS; } // fall through - case 146: break; + case 147: break; case 23: { return OP_COMMA; } // fall through - case 147: break; + case 148: break; case 24: { return OP_QUESTIONSIGN; } // fall through - case 148: break; + case 149: break; case 25: { return OP_PIPE; } // fall through - case 149: break; + case 150: break; case 26: { return OP_MODULO; } // fall through - case 150: break; + case 151: break; case 27: { return OP_POW; } // fall through - case 151: break; + case 152: break; case 28: { return K_AS; } // fall through - case 152: break; + case 153: break; case 29: { return K_DO; } // fall through - case 153: break; + case 154: break; case 30: { return K_IN; } // fall through - case 154: break; + case 155: break; case 31: { return K_IS; } // fall through - case 155: break; + case 156: break; case 32: { return K_OR; } // fall through - case 156: break; + case 157: break; case 33: { return K_ON; } // fall through - case 157: break; + case 158: break; case 34: { return K_OF; } // fall through - case 158: break; + case 159: break; case 35: { return K_BY; } // fall through - case 159: break; + case 160: break; case 36: { return OP_RANGE; } // fall through - case 160: break; + case 161: break; case 37: { return L_STRING; } // fall through - case 161: break; + case 162: break; case 38: { return LINE_COMMENT; } // fall through - case 162: break; + case 163: break; case 39: { return BLOCK_COMMENT; } // fall through - case 163: break; + case 164: break; case 40: { return OP_REGEXMATCH; } // fall through - case 164: break; + case 165: break; case 41: { return OP_LESSTHANEQUALS; } // fall through - case 165: break; + case 166: break; case 42: { return OP_INVALIDNOTEQUALS; } // fall through - case 166: break; + case 167: break; case 43: { return OP_GREATERTHANEQUALS; } // fall through - case 167: break; + case 168: break; case 44: { return OP_PLUSEQUALS; } // fall through - case 168: break; + case 169: break; case 45: { return OP_NOTEQUALS; } // fall through - case 169: break; + case 170: break; case 46: { return K_AND; } // fall through - case 170: break; + case 171: break; case 47: { return K_ANY; } // fall through - case 171: break; + case 172: break; case 48: { return K_ADD; } // fall through - case 172: break; + case 173: break; case 49: { return K_ASC; } // fall through - case 173: break; + case 174: break; case 50: { return K_ALL; } // fall through - case 174: break; + case 175: break; case 51: { return K_CSV; } // fall through - case 175: break; + case 176: break; case 52: { return K_REL; } // fall through - case 176: break; + case 177: break; case 53: { return K_END; } // fall through - case 177: break; + case 178: break; case 54: { return K_NOT; } // fall through - case 178: break; + case 179: break; case 55: { return K_SET; } // fall through - case 179: break; + case 180: break; case 56: { return K_FOR; } // fall through - case 180: break; + case 181: break; case 57: { return K_XOR; } // fall through - case 181: break; + case 182: break; case 58: - { return L_IDENTIFIER_TEXT; + { return K_KEY; } // fall through - case 182: break; + case 183: break; case 59: - { return L_DECIMAL; + { return L_IDENTIFIER_TEXT; } // fall through - case 183: break; + case 184: break; case 60: - { return K_THEN; + { return L_DECIMAL; } // fall through - case 184: break; + case 185: break; case 61: - { return K_TRUE; + { return K_THEN; } // fall through - case 185: break; + case 186: break; case 62: - { return K_CASE; + { return K_TRUE; } // fall through - case 186: break; + case 187: break; case 63: - { return K_CALL; + { return K_CASE; } // fall through - case 187: break; + case 188: break; case 64: - { return K_ENDS; + { return K_CALL; } // fall through - case 188: break; + case 189: break; case 65: - { return K_ELSE; + { return K_ENDS; } // fall through - case 189: break; + case 190: break; case 66: - { return K_NULL; + { return K_ELSE; } // fall through - case 190: break; + case 191: break; case 67: - { return K_NONE; + { return K_NULL; } // fall through - case 191: break; + case 192: break; case 68: - { return K_NODE; + { return K_NONE; } // fall through - case 192: break; + case 193: break; case 69: - { return K_DROP; + { return K_NODE; } // fall through - case 193: break; + case 194: break; case 70: - { return K_DESC; + { return K_DROP; } // fall through - case 194: break; + case 195: break; case 71: - { return K_SCAN; + { return K_DESC; } // fall through - case 195: break; + case 196: break; case 72: - { return K_SKIP; + { return K_SCAN; } // fall through - case 196: break; + case 197: break; case 73: - { return K_LOAD; + { return K_SKIP; } // fall through - case 197: break; + case 198: break; case 74: - { return K_WHEN; + { return K_LOAD; } // fall through - case 198: break; + case 199: break; case 75: - { return K_WITH; + { return K_WHEN; } // fall through - case 199: break; + case 200: break; case 76: - { return K_FROM; + { return K_WITH; } // fall through - case 200: break; + case 201: break; case 77: - { return K_JOIN; + { return K_FROM; } // fall through - case 201: break; + case 202: break; case 78: - { return K_MATCH; + { return K_JOIN; } // fall through - case 202: break; + case 203: break; case 79: - { return K_MERGE; + { return K_MATCH; } // fall through - case 203: break; + case 204: break; case 80: - { return K_COUNT; + { return K_MERGE; } // fall through - case 204: break; + case 205: break; case 81: - { return K_UNION; + { return K_COUNT; } // fall through - case 205: break; + case 206: break; case 82: - { return K_USING; + { return K_UNION; } // fall through - case 206: break; + case 207: break; case 83: - { return K_INDEX; + { return K_USING; } // fall through - case 207: break; + case 208: break; case 84: - { return K_START; + { return K_INDEX; } // fall through - case 208: break; + case 209: break; case 85: - { return K_ORDER; + { return K_START; } // fall through - case 209: break; + case 210: break; case 86: - { return K_LIMIT; + { return K_ORDER; } // fall through - case 210: break; + case 211: break; case 87: - { return K_WHERE; + { return K_LIMIT; } // fall through - case 211: break; + case 212: break; case 88: - { return K_FALSE; + { return K_WHERE; } // fall through - case 212: break; + case 213: break; case 89: - { return K_BEGIN; + { return K_FALSE; } // fall through - case 213: break; + case 214: break; case 90: - { return K_YIELD; + { return K_BEGIN; } // fall through - case 214: break; + case 215: break; case 91: - { return K_ASSERT; + { return K_YIELD; } // fall through - case 215: break; + case 216: break; case 92: - { return K_CREATE; + { return K_ASSERT; } // fall through - case 216: break; + case 217: break; case 93: - { return K_COMMIT; + { return K_CREATE; } // fall through - case 217: break; + case 218: break; case 94: - { return K_CYPHER; + { return K_COMMIT; } // fall through - case 218: break; + case 219: break; case 95: - { return K_REMOVE; + { return K_CYPHER; } // fall through - case 219: break; + case 220: break; case 96: - { return K_RETURN; + { return K_REMOVE; } // fall through - case 220: break; + case 221: break; case 97: - { return K_REDUCE; + { return K_RETURN; } // fall through - case 221: break; + case 222: break; case 98: - { return K_EXISTS; + { return K_REDUCE; } // fall through - case 222: break; + case 223: break; case 99: - { return K_UNIQUE; + { return K_EXISTS; } // fall through - case 223: break; + case 224: break; case 100: - { return K_UNWIND; + { return K_UNIQUE; } // fall through - case 224: break; + case 225: break; case 101: - { return K_DETACH; + { return K_UNWIND; } // fall through - case 225: break; + case 226: break; case 102: - { return K_DELETE; + { return K_DETACH; } // fall through - case 226: break; + case 227: break; case 103: - { return K_STARTS; + { return K_DELETE; } // fall through - case 227: break; + case 228: break; case 104: - { return K_SCALAR; + { return K_STARTS; } // fall through - case 228: break; + case 229: break; case 105: - { return K_SINGLE; + { return K_SCALAR; } // fall through - case 229: break; + case 230: break; case 106: - { return K_FILTER; + { return K_SINGLE; } // fall through - case 230: break; + case 231: break; case 107: - { return K_HEADERS; + { return K_FILTER; } // fall through - case 231: break; + case 232: break; case 108: - { return K_REQUIRE; + { return K_HEADERS; } // fall through - case 232: break; + case 233: break; case 109: - { return K_EXTRACT; + { return K_REQUIRE; } // fall through - case 233: break; + case 234: break; case 110: - { return K_EXPLAIN; + { return K_EXTRACT; } // fall through - case 234: break; + case 235: break; case 111: - { return K_FOREACH; + { return K_EXPLAIN; } // fall through - case 235: break; + case 236: break; case 112: - { return K_PROFILE; + { return K_FOREACH; } // fall through - case 236: break; + case 237: break; case 113: - { return K_CONTAINS; + { return K_PROFILE; } // fall through - case 237: break; + case 238: break; case 114: - { return K_DISTINCT; + { return K_CONTAINS; } // fall through - case 238: break; + case 239: break; case 115: - { return K_OPTIONAL; + { return K_DISTINCT; } // fall through - case 239: break; + case 240: break; case 116: - { return K_PERIODIC; + { return K_OPTIONAL; } // fall through - case 240: break; + case 241: break; case 117: - { return K_MANDATORY; + { return K_PERIODIC; } // fall through - case 241: break; + case 242: break; case 118: - { return K_ASCENDING; + { return K_MANDATORY; } // fall through - case 242: break; + case 243: break; case 119: - { return K_CONSTRAINT; + { return K_ASCENDING; } // fall through - case 243: break; + case 244: break; case 120: - { return K_DESCENDING; + { return K_CONSTRAINT; } // fall through - case 244: break; + case 245: break; case 121: - { return K_RELATIONSHIP; + { return K_DESCENDING; } // fall through - case 245: break; + case 246: break; case 122: - { return K_SHORTESTPATH; + { return K_RELATIONSHIP; } // fall through - case 246: break; + case 247: break; case 123: - { return K_FIELDTERMINATOR; + { return K_SHORTESTPATH; } // fall through - case 247: break; + case 248: break; case 124: + { return K_FIELDTERMINATOR; + } + // fall through + case 249: break; + case 125: { return K_ALLSHORTESTPATHS; } // fall through - case 248: break; + case 250: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/testing/integration-neo4j/src/test/java/com/neueda/jetbrains/plugin/graphdb/test/integration/neo4j/tests/cypher/parsing/CommandParsingTest.java b/testing/integration-neo4j/src/test/java/com/neueda/jetbrains/plugin/graphdb/test/integration/neo4j/tests/cypher/parsing/CommandParsingTest.java index 1941a966..316e6909 100644 --- a/testing/integration-neo4j/src/test/java/com/neueda/jetbrains/plugin/graphdb/test/integration/neo4j/tests/cypher/parsing/CommandParsingTest.java +++ b/testing/integration-neo4j/src/test/java/com/neueda/jetbrains/plugin/graphdb/test/integration/neo4j/tests/cypher/parsing/CommandParsingTest.java @@ -8,6 +8,14 @@ public CommandParsingTest() { super("command"); } + public void testConstraintNodeKeyCreate() { + doTest(true); + } + + public void testConstraintNodeKeyDrop() { + doTest(true); + } + public void testConstraintPropertyExistsNodeCreate() { doTest(true); } diff --git a/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.cyp b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.cyp new file mode 100644 index 00000000..661b8d1a --- /dev/null +++ b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.cyp @@ -0,0 +1 @@ +CREATE CONSTRAINT ON (var:Label) ASSERT (var.property1, var.property2) IS NODE KEY; diff --git a/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.txt b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.txt new file mode 100644 index 00000000..d18d644e --- /dev/null +++ b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyCreate.txt @@ -0,0 +1,53 @@ +Cypher file: FILE(0,83) + CypherStatementItemImpl(STATEMENT_ITEM)(0,83) + CypherStatementImpl(STATEMENT)(0,82) + CypherQueryOptionsImpl(QUERY_OPTIONS)(0,0) + + CypherCommandImpl(COMMAND)(0,82) + CypherCreateNodeKeyConstraintImpl(CREATE_NODE_KEY_CONSTRAINT)(0,82) + PsiElement(CREATE)('CREATE')(0,6) + CypherNodeKeySyntaxImpl(NODE_KEY_SYNTAX)(7,82) + PsiElement(CONSTRAINT)('CONSTRAINT')(7,17) + PsiElement(ON)('ON')(18,20) + PsiElement(()('(')(21,22) + CypherVariableImpl(VARIABLE)(22,25) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(22,25) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(22,25) + PsiElement(identifier)('var')(22,25) + CypherNodeLabelImpl(NODE_LABEL)(25,31) + PsiElement(:)(':')(25,26) + CypherLabelNameImpl(LABEL_NAME)(26,31) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(26,31) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(26,31) + PsiElement(identifier)('Label')(26,31) + PsiElement())(')')(31,32) + PsiElement(ASSERT)('ASSERT')(33,39) + PsiElement(()('(')(40,41) + CypherPropertyExpressionImpl(PROPERTY_EXPRESSION)(41,54) + CypherVariableImpl(VARIABLE)(41,44) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(41,44) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(41,44) + PsiElement(identifier)('var')(41,44) + CypherPropertyLookupImpl(PROPERTY_LOOKUP)(44,54) + PsiElement(.)('.')(44,45) + CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(45,54) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(45,54) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(45,54) + PsiElement(identifier)('property1')(45,54) + PsiElement(,)(',')(54,55) + CypherPropertyExpressionImpl(PROPERTY_EXPRESSION)(56,69) + CypherVariableImpl(VARIABLE)(56,59) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(56,59) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(56,59) + PsiElement(identifier)('var')(56,59) + CypherPropertyLookupImpl(PROPERTY_LOOKUP)(59,69) + PsiElement(.)('.')(59,60) + CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(60,69) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(60,69) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(60,69) + PsiElement(identifier)('property2')(60,69) + PsiElement())(')')(69,70) + PsiElement(IS)('IS')(71,73) + PsiElement(NODE)('NODE')(74,78) + PsiElement(KEY)('KEY')(79,82) + PsiElement(;)(';')(82,83) \ No newline at end of file diff --git a/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.cyp b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.cyp new file mode 100644 index 00000000..95d3905f --- /dev/null +++ b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.cyp @@ -0,0 +1 @@ +DROP CONSTRAINT ON (var:Label) ASSERT (p.property, p.property) IS NODE KEY; diff --git a/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.txt b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.txt new file mode 100644 index 00000000..3d13bdfa --- /dev/null +++ b/testing/integration-neo4j/src/test/resources/parsing/command/ConstraintNodeKeyDrop.txt @@ -0,0 +1,53 @@ +Cypher file: FILE(0,75) + CypherStatementItemImpl(STATEMENT_ITEM)(0,75) + CypherStatementImpl(STATEMENT)(0,74) + CypherQueryOptionsImpl(QUERY_OPTIONS)(0,0) + + CypherCommandImpl(COMMAND)(0,74) + CypherDropNodeKeyConstraintImpl(DROP_NODE_KEY_CONSTRAINT)(0,74) + PsiElement(DROP)('DROP')(0,4) + CypherNodeKeySyntaxImpl(NODE_KEY_SYNTAX)(5,74) + PsiElement(CONSTRAINT)('CONSTRAINT')(5,15) + PsiElement(ON)('ON')(16,18) + PsiElement(()('(')(19,20) + CypherVariableImpl(VARIABLE)(20,23) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(20,23) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(20,23) + PsiElement(identifier)('var')(20,23) + CypherNodeLabelImpl(NODE_LABEL)(23,29) + PsiElement(:)(':')(23,24) + CypherLabelNameImpl(LABEL_NAME)(24,29) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(24,29) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(24,29) + PsiElement(identifier)('Label')(24,29) + PsiElement())(')')(29,30) + PsiElement(ASSERT)('ASSERT')(31,37) + PsiElement(()('(')(38,39) + CypherPropertyExpressionImpl(PROPERTY_EXPRESSION)(39,49) + CypherVariableImpl(VARIABLE)(39,40) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(39,40) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(39,40) + PsiElement(identifier)('p')(39,40) + CypherPropertyLookupImpl(PROPERTY_LOOKUP)(40,49) + PsiElement(.)('.')(40,41) + CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(41,49) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(41,49) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(41,49) + PsiElement(identifier)('property')(41,49) + PsiElement(,)(',')(49,50) + CypherPropertyExpressionImpl(PROPERTY_EXPRESSION)(51,61) + CypherVariableImpl(VARIABLE)(51,52) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(51,52) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(51,52) + PsiElement(identifier)('p')(51,52) + CypherPropertyLookupImpl(PROPERTY_LOOKUP)(52,61) + PsiElement(.)('.')(52,53) + CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(53,61) + CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(53,61) + CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(53,61) + PsiElement(identifier)('property')(53,61) + PsiElement())(')')(61,62) + PsiElement(IS)('IS')(63,65) + PsiElement(NODE)('NODE')(66,70) + PsiElement(KEY)('KEY')(71,74) + PsiElement(;)(';')(74,75) \ No newline at end of file diff --git a/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.cyp b/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.cyp index d4add66a..71994b88 100644 --- a/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.cyp +++ b/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.cyp @@ -40,8 +40,8 @@ AND CASE var WHEN expr THEN expr END AND CASE WHEN expr THEN expr END AND CASE WHEN expr THEN expr END AND var.prop.prop.prop -AND {key: "val"} -AND {key: "val", key: "val"} +AND {ref: "val"} +AND {ref: "val", ref: "val"} AND [var IN expr] AND [var in expr | expr ] AND [] diff --git a/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.txt b/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.txt index 226b59d6..e8a293c2 100644 --- a/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.txt +++ b/testing/integration-neo4j/src/test/resources/parsing/expressions/Expressions.txt @@ -437,7 +437,7 @@ Cypher file: FILE(0,1027) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(626,629) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(626,629) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(626,629) - PsiElement(identifier)('key')(626,629) + PsiElement(identifier)('ref')(626,629) PsiElement(:)(':')(629,630) CypherExpressionImpl(EXPRESSION)(631,636) CypherStringLiteralImpl(STRING_LITERAL)(631,636) @@ -449,7 +449,7 @@ Cypher file: FILE(0,1027) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(643,646) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(643,646) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(643,646) - PsiElement(identifier)('key')(643,646) + PsiElement(identifier)('ref')(643,646) PsiElement(:)(':')(646,647) CypherExpressionImpl(EXPRESSION)(648,653) CypherStringLiteralImpl(STRING_LITERAL)(648,653) @@ -458,7 +458,7 @@ Cypher file: FILE(0,1027) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(655,658) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(655,658) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(655,658) - PsiElement(identifier)('key')(655,658) + PsiElement(identifier)('ref')(655,658) PsiElement(:)(':')(658,659) CypherExpressionImpl(EXPRESSION)(660,665) CypherStringLiteralImpl(STRING_LITERAL)(660,665) diff --git a/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.cyp b/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.cyp index 45c531cb..9dd58af9 100644 --- a/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.cyp +++ b/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.cyp @@ -7,8 +7,8 @@ MATCH SHORTESTPATH((n)); MATCH ALLSHORTESTPATHS((n)); MATCH (n:Label) MATCH (n {param}) -MATCH (n {key: "value"}) -MATCH (n {key: "value", key: "value"}) +MATCH (n {ref: "value"}) +MATCH (n {ref: "value", ref: "value"}) MATCH (n)--(n); MATCH (n)<--(n); MATCH (n)-->(n); @@ -27,6 +27,6 @@ MATCH (n)-[var:Type*2..]-(n); MATCH (n)-[var:Type*..2]-(n); MATCH (n)-[var:Type*2..2]-(n); MATCH (n)-[var {param}]-(n); -MATCH (n)-[var {key: "value"}]-(n); -MATCH (n)-[var {key: "value", key: "value"}]-(n); +MATCH (n)-[var {ref: "value"}]-(n); +MATCH (n)-[var {ref: "value", ref: "value"}]-(n); MATCH (n) - [:Type] -> (m) diff --git a/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.txt b/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.txt index 28ce824c..92b83005 100644 --- a/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.txt +++ b/testing/integration-neo4j/src/test/resources/parsing/patterns/Patterns.txt @@ -278,7 +278,7 @@ Cypher file: FILE(0,778) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(165,168) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(165,168) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(165,168) - PsiElement(identifier)('key')(165,168) + PsiElement(identifier)('ref')(165,168) PsiElement(:)(':')(168,169) CypherExpressionImpl(EXPRESSION)(170,177) CypherStringLiteralImpl(STRING_LITERAL)(170,177) @@ -304,7 +304,7 @@ Cypher file: FILE(0,778) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(190,193) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(190,193) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(190,193) - PsiElement(identifier)('key')(190,193) + PsiElement(identifier)('ref')(190,193) PsiElement(:)(':')(193,194) CypherExpressionImpl(EXPRESSION)(195,202) CypherStringLiteralImpl(STRING_LITERAL)(195,202) @@ -313,7 +313,7 @@ Cypher file: FILE(0,778) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(204,207) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(204,207) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(204,207) - PsiElement(identifier)('key')(204,207) + PsiElement(identifier)('ref')(204,207) PsiElement(:)(':')(207,208) CypherExpressionImpl(EXPRESSION)(209,216) CypherStringLiteralImpl(STRING_LITERAL)(209,216) @@ -1265,7 +1265,7 @@ Cypher file: FILE(0,778) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(682,685) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(682,685) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(682,685) - PsiElement(identifier)('key')(682,685) + PsiElement(identifier)('ref')(682,685) PsiElement(:)(':')(685,686) CypherExpressionImpl(EXPRESSION)(687,694) CypherStringLiteralImpl(STRING_LITERAL)(687,694) @@ -1323,7 +1323,7 @@ Cypher file: FILE(0,778) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(718,721) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(718,721) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(718,721) - PsiElement(identifier)('key')(718,721) + PsiElement(identifier)('ref')(718,721) PsiElement(:)(':')(721,722) CypherExpressionImpl(EXPRESSION)(723,730) CypherStringLiteralImpl(STRING_LITERAL)(723,730) @@ -1332,7 +1332,7 @@ Cypher file: FILE(0,778) CypherPropertyKeyNameImpl(PROPERTY_KEY_NAME)(732,735) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(732,735) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(732,735) - PsiElement(identifier)('key')(732,735) + PsiElement(identifier)('ref')(732,735) PsiElement(:)(':')(735,736) CypherExpressionImpl(EXPRESSION)(737,744) CypherStringLiteralImpl(STRING_LITERAL)(737,744) diff --git a/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.cyp b/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.cyp index 20d1cf37..9d2fca50 100644 --- a/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.cyp +++ b/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.cyp @@ -1,9 +1,9 @@ CYPHER RETURN n; CYPHER 2.3 RETURN n; -CYPHER key=val RETURN n; -CYPHER key1=val1 key2=val2 RETURN n; -CYPHER 2.3 key=val RETURN n; -CYPHER 2.3 key1=val2 key2=val2 RETURN n; +CYPHER ref=val RETURN n; +CYPHER ref1=val1 ref2=val2 RETURN n; +CYPHER 2.3 ref=val RETURN n; +CYPHER 2.3 ref1=val2 ref2=val2 RETURN n; EXPLAIN RETURN n; PROFILE RETURN n; -CYPHER 2.3 key1=val2 key2=val2 EXPLAIN PROFILE RETURN n; +CYPHER 2.3 ref1=val2 ref2=val2 EXPLAIN PROFILE RETURN n; diff --git a/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.txt b/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.txt index 523ad7d3..53aea911 100644 --- a/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.txt +++ b/testing/integration-neo4j/src/test/resources/parsing/statement-options/StatementOptions.txt @@ -56,7 +56,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(45,52) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(45,48) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(45,48) - PsiElement(identifier)('key')(45,48) + PsiElement(identifier)('ref')(45,48) PsiElement(=)('=')(48,49) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(49,52) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(49,52) @@ -86,7 +86,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(70,79) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(70,74) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(70,74) - PsiElement(identifier)('key1')(70,74) + PsiElement(identifier)('ref1')(70,74) PsiElement(=)('=')(74,75) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(75,79) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(75,79) @@ -94,7 +94,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(80,89) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(80,84) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(80,84) - PsiElement(identifier)('key2')(80,84) + PsiElement(identifier)('ref2')(80,84) PsiElement(=)('=')(84,85) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(85,89) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(85,89) @@ -128,7 +128,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(111,118) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(111,114) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(111,114) - PsiElement(identifier)('key')(111,114) + PsiElement(identifier)('ref')(111,114) PsiElement(=)('=')(114,115) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(115,118) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(115,118) @@ -162,7 +162,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(140,149) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(140,144) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(140,144) - PsiElement(identifier)('key1')(140,144) + PsiElement(identifier)('ref1')(140,144) PsiElement(=)('=')(144,145) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(145,149) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(145,149) @@ -170,7 +170,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(150,159) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(150,154) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(150,154) - PsiElement(identifier)('key2')(150,154) + PsiElement(identifier)('ref2')(150,154) PsiElement(=)('=')(154,155) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(155,159) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(155,159) @@ -248,7 +248,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(217,226) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(217,221) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(217,221) - PsiElement(identifier)('key1')(217,221) + PsiElement(identifier)('ref1')(217,221) PsiElement(=)('=')(221,222) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(222,226) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(222,226) @@ -256,7 +256,7 @@ Cypher file: FILE(0,262) CypherConfigurationOptionImpl(CONFIGURATION_OPTION)(227,236) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(227,231) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(227,231) - PsiElement(identifier)('key2')(227,231) + PsiElement(identifier)('ref2')(227,231) PsiElement(=)('=')(231,232) CypherSymbolicNameStringImpl(SYMBOLIC_NAME_STRING)(232,236) CypherUnescapedSymbolicNameStringImpl(UNESCAPED_SYMBOLIC_NAME_STRING)(232,236)