From f81f1c9be0c7a8792170926ce49fe144e1fcca7a Mon Sep 17 00:00:00 2001 From: sariel Date: Wed, 20 Oct 2021 11:26:07 +0300 Subject: Add running instructions --- sd-plugin/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sd-plugin') diff --git a/sd-plugin/README.md b/sd-plugin/README.md index 76a0a53d49f..6111de67776 100644 --- a/sd-plugin/README.md +++ b/sd-plugin/README.md @@ -15,5 +15,6 @@ After cloning, you should: Now you should have a "gen" folder next to the "java" folder, and it contains all the parser and lexer code. -Improtant note! After any change in one of this 2 files (bnf, flex) you'll need to generate again. The proper way is to delete the "gen" folder and then do 1-2 again. +Important note! After any change in one of this 2 files (bnf, flex) you'll need to generate again. The proper way is to delete the "gen" folder and then do 1-2 again. +Now, you can run the gradle task "runIde", open a project with some sd file and see how the plugin works on it. \ No newline at end of file -- cgit v1.2.3 From 4c10071d932e0bd04786bc45f18d90405cb5eabb Mon Sep 17 00:00:00 2001 From: sariel Date: Wed, 20 Oct 2021 11:36:01 +0300 Subject: Complete grammar, add annotation --- .../java/org/intellij/sdk/language/SdUtil.java | 38 ++++++---- .../java/org/intellij/sdk/language/parser/sd.bnf | 86 +++++++++------------- .../sdk/language/psi/SdDeclarationType.java | 2 + .../sdk/language/psi/impl/SdPsiImplUtil.java | 28 ++++--- .../main/java/org/intellij/sdk/language/sd.flex | 9 ++- .../language/structure/SdStructureViewElement.java | 25 ++++--- 6 files changed, 102 insertions(+), 86 deletions(-) (limited to 'sd-plugin') diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java index 4dd2fe8cac1..50eef106b90 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java @@ -10,8 +10,10 @@ import com.intellij.psi.search.FileTypeIndex; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.indexing.FileBasedIndex; +import org.intellij.sdk.language.psi.SdAnnotationFieldDefinition; import org.intellij.sdk.language.psi.SdArgumentDefinition; import org.intellij.sdk.language.psi.SdDeclaration; +import org.intellij.sdk.language.psi.SdDocumentAnnotationDefinition; import org.intellij.sdk.language.psi.SdDocumentDefinition; import org.intellij.sdk.language.psi.SdDocumentFieldDefinition; import org.intellij.sdk.language.psi.SdDocumentStructDefinition; @@ -23,6 +25,7 @@ import org.intellij.sdk.language.psi.SdFunctionDefinition; import org.intellij.sdk.language.psi.SdIdentifier; import org.intellij.sdk.language.psi.SdImportFieldDefinition; import org.intellij.sdk.language.psi.SdRankProfileDefinition; +import org.intellij.sdk.language.psi.SdSchemaAnnotationDefinition; import org.intellij.sdk.language.psi.SdSchemaFieldDefinition; import org.intellij.sdk.language.psi.SdSummaryDefinition; import org.intellij.sdk.language.psi.SdTypes; @@ -110,12 +113,12 @@ public class SdUtil { if (element.getParent() instanceof SdImportFieldDefinition && element.getNextSibling().getNextSibling().getText().equals("as")) { Project project = file.getProject(); - + PsiReference docFieldRef = element.getPrevSibling().getPrevSibling().getReference(); PsiElement docField = docFieldRef != null ? docFieldRef.resolve() : null; SdFieldTypeName fieldType = docField != null ? PsiTreeUtil.findChildOfType(docField, SdFieldTypeName.class) : null; SdIdentifier docIdentifier = fieldType != null ? PsiTreeUtil.findChildOfType(fieldType, SdIdentifier.class) : null; - String docName = docIdentifier != null ? docIdentifier.getName() : null; + String docName = docIdentifier != null ? docIdentifier.getName() : null; if (docName == null) { return result; } @@ -165,8 +168,8 @@ public class SdUtil { curRankProfile = getRankProfileParent((SdRankProfileDefinition) curRankProfile); } } - - for (PsiElement declaration : PsiTreeUtil.collectElements(file, psiElement -> + + for (PsiElement declaration : PsiTreeUtil.collectElements(file, psiElement -> psiElement instanceof SdDeclaration && !(psiElement instanceof SdArgumentDefinition))) { if (name.equals(((SdDeclaration) declaration).getName())) { result.add((SdDeclaration) declaration); @@ -183,30 +186,33 @@ public class SdUtil { public static List findSchemaChildren(PsiElement element) { return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, new Class[]{SdDocumentDefinition.class, - SdSchemaFieldDefinition.class, - SdImportFieldDefinition.class, - SdDocumentSummaryDefinition.class, - SdRankProfileDefinition.class})); + SdSchemaFieldDefinition.class, + SdImportFieldDefinition.class, + SdSchemaAnnotationDefinition.class, + SdDocumentSummaryDefinition.class, + SdRankProfileDefinition.class})); + } + + public static List findAnnotationChildren(PsiElement element) { + return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, SdAnnotationFieldDefinition.class)); } public static List findDocumentChildren(PsiElement element) { - return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, new Class[]{SdDocumentStructDefinition.class, - SdDocumentFieldDefinition.class})); + return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, new Class[]{SdDocumentStructDefinition.class, + SdDocumentAnnotationDefinition.class, + SdDocumentFieldDefinition.class})); } public static List findDocumentStructChildren(PsiElement element) { - return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, - SdDocumentStructFieldDefinition.class)); + return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, SdDocumentStructFieldDefinition.class)); } public static List findRankProfileChildren(PsiElement element) { - return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, - SdFunctionDefinition.class)); + return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, SdFunctionDefinition.class)); } public static List findDocumentSummaryChildren(PsiElement element) { - return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, - SdSummaryDefinition.class)); + return new ArrayList<>(PsiTreeUtil.collectElementsOfType(element, SdSummaryDefinition.class)); } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf index a1bc4c548a0..64cb06f48db 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf @@ -34,19 +34,17 @@ ] } -// IMPORTANT NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats it like zero-to-many) +// NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats it like zero-to-many) -SdFile ::= Schema -Schema ::= search IdentifierVal? '{' SchemaBody '}' +SdFile ::= SchemaDefinition +SchemaDefinition ::= (search | schema) IdentifierVal? '{' SchemaBody '}' SchemaBody ::= SchemaBodyOptions* DocumentDefinition SchemaBodyOptions* // Does not support zero-or-one occurrences private SchemaBodyOptions ::= SchemaFieldDefinition | ImportFieldDefinition | DocumentSummaryDefinition | RankProfileDefinition | FieldSetDefinition | ConstantDefinition | OnnxModelDefinition | StemmingDefinition | - raw-as-base64-in-summary | AnnotationDefinition - - - + raw-as-base64-in-summary | SchemaAnnotationDefinition + SchemaFieldDefinition ::= field IdentifierVal type FieldTypeName '{' SchemaFieldBody '}' { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" implements=["org.intellij.sdk.language.psi.SdDeclaration" "org.intellij.sdk.language.psi.SdNamedElement"] @@ -95,19 +93,26 @@ OnnxModelBody ::= OnnxModelBodyOptions* private OnnxModelBodyOptions ::= (file ':' FilePath) | (uri ':' UriPath) | ((input | output) (IdentifierVal | STRING) ':' ('.' | '/' | '(' | ')' | IdentifierWithDashVal | WORD_REG)) -AnnotationDefinition ::= annotation IdentifierVal '{' '}' // todo ask Vespa for syntax +SchemaAnnotationDefinition ::= AnnotationDefinition + { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" + implements=["org.intellij.sdk.language.psi.SdDeclaration" "org.intellij.sdk.language.psi.SdNamedElement"] + methods=[getName setName getType getTypeName getNameIdentifier getPresentation] } + +private AnnotationDefinition ::= annotation IdentifierVal '{' AnnotationFieldDefinition* '}' +AnnotationFieldDefinition ::= field IdentifierVal type FieldTypeName '{' '}' + { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" + implements=["org.intellij.sdk.language.psi.SdDeclaration" "org.intellij.sdk.language.psi.SdNamedElement"] + methods=[getName setName getType getTypeName getNameIdentifier getPresentation] } //------------------------- //--- Expressions rules --- //------------------------- RankingExpression ::= ParenthesisedExpr | BooleanExpr |ArithmeticExpr | IfFunctionExpr | - QueryDefinitionExpr | FunctionCallExpr | PrimitiveExpr //ReduceExpr | + QueryDefinitionExpr | FunctionCallExpr | PrimitiveExpr IfFunctionExpr ::= "if" '(' (InListRankingExpression | RankingExpression) ',' RankingExpression ',' RankingExpression ')' InListRankingExpression ::= RankingExpression "in" '[' RankingExpression (',' RankingExpression)* ']' -//ReduceExpr ::= reduce '(' RankingExpression ',' (avg|count|max|median|min|prod|sum) (',' RankingExpression)* ')' - BooleanExpr ::= RankingExpression COMPARISON_OPERATOR RankingExpression ArithmeticExpr ::= RankingExpression ARITHMETIC_OPERATOR RankingExpression @@ -132,14 +137,15 @@ private RankProfileBodyOptions ::= MatchPhaseDefinition | NumThreadsDefinition | ignore-default-rank-features | RankPropertiesDefinition | FirstPhaseDefinition | SummaryFeaturesDefinition | RankFeaturesDefinition | SecondPhaseDefinition | ConstantsDefinition | RankDefinition | RankTypeDefinition | MinHitsDefinition | NumSearchPartitionDefinition - // | FieldWeightDefinition | ExecuteDefinition | RankDegradationDefinition // todo check with Vespa if need to add these MatchPhaseDefinition ::= match-phase '{' MatchPhaseBody '}' -MatchPhaseBody ::= MatchPhaseBodyOptions+ // todo check with Vespa- are there more options? +MatchPhaseBody ::= MatchPhaseBodyOptions+ MatchPhaseBodyOptions ::= (attribute ':' IdentifierVal (order ':' (ascending | descending))?) | (max-hits ':' INTEGER_REG) | DiversityDefinition // Does not support zero-or-one occurrences -DiversityDefinition ::= diversity '{' (attribute ':' IdentifierVal min-groups ':' INTEGER_REG) | - (min-groups ':' INTEGER_REG attribute ':' IdentifierVal) '}' +DiversityDefinition ::= diversity '{' DiversityBody '}' +DiversityBody ::= DiversityBodyOptions* +private DiversityBodyOptions ::= (attribute ':' IdentifierVal) | (min-groups ':' INTEGER_REG) | (cutoff-factor ':' FLOAT_REG) | + (cutoff-strategy ':' (strict | loose)) private NumThreadsDefinition ::= num-threads-per-search ':' INTEGER_REG private TermwiseLimitDefinition ::= termwise-limit ':' (FLOAT_REG | INTEGER_REG) @@ -177,9 +183,7 @@ RankFeaturesDefinition ::= rank-features (':' RankFeature+) | ('{' RankFeature* ConstantsDefinition ::= constants '{' (IdentifierVal ':' RankPropertiesValue)* '}' -//******** Rank features ********* RankFeature ::= QueryDefinition | ItemRawScoreDefinition | FunctionCallExpr | (IdentifierWithDashVal ('.' IdentifierWithDashVal)* ) - QueryDefinition ::= "query" '(' IdentifierWithDashVal ')' { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" implements=["org.intellij.sdk.language.psi.SdDeclaration" "org.intellij.sdk.language.psi.SdNamedElement"] @@ -188,30 +192,7 @@ ItemRawScoreDefinition ::= "itemRawScore" '(' IdentifierVal ')' { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" implements=["org.intellij.sdk.language.psi.SdDeclaration" "org.intellij.sdk.language.psi.SdNamedElement"] methods=[getName setName getType getTypeName getNameIdentifier getPresentation] } - -// QueryFeature | DocumentFeature | QueryTermFieldMatchFeature | AttributeMatchFeature | RankScoreFeature | -// GlobalFeature | MatchOperatorScoreFeature | UtilityFeature | RankingExpressionMethod - //todo add the rest (| FieldMatchFeature | QueryFieldSimilarityFeature | IdxMultiStrFieldFeature | MultiFieldsAttributesFeature) - -// todo maybe not specify all of the rank features here? Maybe it would be better to write it more generally? like ID '(' ID ')' '.' ID.. so it could handle new features in the future -//QueryFeature ::= QueryDefinition | (term '(' (FLOAT_REG | INTEGER_REG) ')' '.' (significant | weight | connectedness)) // todo add queryTermCount -//DocumentFeature ::= (fieldLength '(' IdentifierVal ')') | (attribute '(' IdentifierVal ')' ('.' count)?) | -// (attribute '(' IdentifierVal ',' (INTEGER_REG | IdentifierVal) ')' ('.' (weight | contains))?) | -// (tensorFromWeightedSet '(' ((attribute'('IdentifierVal')') | QueryDefinition | IdentifierVal) ',' IdentifierVal ')') | -// (tensorFromLabels '(' ((attribute'('IdentifierVal')') | QueryDefinition | IdentifierVal) ',' IdentifierVal ')') -//QueryTermFieldMatchFeature ::= (matchCount'('IdentifierVal')') | (matches'('IdentifierVal (',' INTEGER_REG)? ')') // todo add the rest -//AttributeMatchFeature ::= (attributeMatch'('IdentifierVal')' ('.' (completeness | queryCompleteness | fieldCompleteness | -// normalizedWeight | normalizedWeightedWeight | matches | totalWeight | averageWeight | maxWeight))?) | -// (distance'('IdentifierVal')' ('.' (index | latitude | longitude))?) | -// (distanceToPath'('IdentifierVal')' ('.' (distance | traveled | product))?) | (age'('IdentifierVal')') // todo add closeness and freshness -//RankScoreFeature ::= (nativeDotProduct'('IdentifierVal')') // todo add the rest -//GlobalFeature ::= (random'('IdentifierVal')' '.' match) | (random) // todo add the rest -//MatchOperatorScoreFeature ::= (rawScore'('IdentifierVal')') | ItemRawScoreDefinition -//UtilityFeature ::= (dotProduct'('IdentifierVal ',' IdentifierVal ')') // todo add the rest -//RankingExpressionMethod ::= "rankingExpression" '(' (RankFeature | IdentifierVal) ')' -//***** End of Rank features ***** - - + //------------------------- //---- Document rules ----- //------------------------- @@ -221,7 +202,12 @@ DocumentDefinition ::= document (IdentifierVal (inherits IdentifierVal (',' Iden methods=[getName setName getType getTypeName getNameIdentifier getPresentation] } DocumentBody ::= DocumentBodyOptions* -DocumentBodyOptions ::= DocumentStructDefinition | DocumentFieldDefinition +DocumentBodyOptions ::= DocumentStructDefinition | DocumentFieldDefinition | DocumentAnnotationDefinition + +DocumentAnnotationDefinition ::= AnnotationDefinition + { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" + implements=["org.intellij.sdk.language.psi.SdDeclaration" "org.intellij.sdk.language.psi.SdNamedElement"] + methods=[getName setName getType getTypeName getNameIdentifier getPresentation] } DocumentStructDefinition ::= struct IdentifierVal '{' DocumentStructBody '}' { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" @@ -246,7 +232,7 @@ private DocumentFieldBodyOptions ::= StructFieldDefinition | MatchDefinition | I AliasDef | RankDefinition | IndexingRewriteState | QueryCommandDefinition | SummaryDefinition | BoldingDefinition | (id ':' INTEGER_REG) | IndexDefinition | (normalizing ':' IdentifierWithDashVal) | SortingDefinition | StemmingDefinition | (weight ': INTEGER_REG') | WeightedSetDefinition | - RankTypeDefinition | DictionaryDefinition // todo check with Vespa- SummaryToDefinition is needed here? it's deprecated + RankTypeDefinition | DictionaryDefinition //***** Field's body elements ******// // Struct @@ -265,7 +251,7 @@ MatchProperty ::= text | exact | exact-terminator | word | prefix | cased | unca // Indexing IndexingDefinition ::= indexing (':' IndexingStatement) | ('{' IndexingStatement+ '}') IndexingStatement ::= IndexingStatementOptions (('|' IndexingStatementOptions)*) | ((';' IndexingStatementOptions)*) - // Does not support zero-or-one occurrences // todo check with Vespa- Can "input" be here? + // Does not support zero-or-one occurrences IndexingStatementOptions ::= summary | attribute | index | "set_language" // Attribute AttributeDefinition ::= attribute ((':' SimpleAttributeProperty) | ('{' (SimpleAttributeProperty | ComplexAttributeProperty)+ '}')) @@ -278,7 +264,7 @@ AliasDef ::= alias IdentifierVal? ':' IdentifierWithDashVal StemmingDefinition ::= stemming ':' IdentifierWithDashVal // Rank RankDefinition ::= rank ((IdentifierVal? ':' RankingSetting) | ('{' RankingSetting '}')) -RankingSetting ::= filter | normal | literal // todo check with Vespa- is "literal" good here? +RankingSetting ::= filter | normal // Indexing Rewrite IndexingRewriteState ::= indexing-rewrite ':' none // Query Command @@ -330,13 +316,13 @@ IdentifierWithDashVal ::= ID_WITH_DASH_REG | IdentifierVal { implements=["org.in // Those lists of keywords (KeywordOrIdentifier and KeywordNotIdentifier) have to be synchronized with sd.flex file. // If you add a keyword here, you should add it to the sd.flex file as well. -KeywordOrIdentifier ::= search | document | struct | field | type | indexing | input | output | inherits | import | as | - raw | uri | file | annotationreference | array | weightedset | map | - order | ascending | descending | diversity | constants | literal | expression | weight | match | +KeywordOrIdentifier ::= schema | search | document | struct | field | type | indexing | input | output | inherits | + import | as | raw | uri | file | annotationreference | array | weightedset | map | + order | ascending | descending | diversity | constants | expression | weight | match | function | macro | inline | text | exact | word | prefix | cased | uncased | substring | suffix | gram | paged | mutable | alias | sorting | strength | locale | uca | lowercase | primary | secondary | tertiary | quaternary | identical | rank | filter | normal | none | full | dynamic | - source | to | + source | to | strict | loose | //execute | bolding | on | off | true | false | id | normalizing | stemming | arity | hnsw | dictionary | hash | btree | fieldset | fields | constant | annotation // KeywordNotIdentifier ::= (not enforced in this version) @@ -351,5 +337,5 @@ KeywordNotIdentifier ::= struct-field | document-summary | omit-summary-features indexing-rewrite | query-command | matched-elements-only | lower-bound | upper-bound | dense-posting-list-threshold | enable-bm25 | max-links-per-node | neighbors-to-explore-at-insert | multi-threaded-indexing | create-if-nonexistent | remove-if-zero | raw-as-base64-in-summary | - onnx-model + onnx-model | cutoff-factor | cutoff-strategy | on-match | on-rank | on-summary \ No newline at end of file diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java index f832a0d01e2..05b38d981c3 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java @@ -3,9 +3,11 @@ package org.intellij.sdk.language.psi; public enum SdDeclarationType { DOCUMENT("Document"), STRUCT("Struct"), + ANNOTATION("Annotation"), SCHEMA_FIELD("Field (in Schema)"), DOCUMENT_FIELD("Field (in Document)"), STRUCT_FIELD("Struct-Field"), + ANNOTATION_FIELD("Field (in Annotation)"), DOCUMENT_STRUCT_FIELD("Field (in Struct)"), IMPORTED_FIELD("Imported Field"), DOCUMENT_SUMMARY("Document-Summary"), diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java index d22caa5adaa..0645bd3c51f 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java @@ -5,16 +5,16 @@ import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; import com.intellij.psi.util.PsiTreeUtil; import org.intellij.sdk.language.SdIcons; import org.intellij.sdk.language.SdReference; import org.intellij.sdk.language.SdUtil; -import org.intellij.sdk.language.hierarchy.SdHierarchyUtil; +import org.intellij.sdk.language.psi.SdAnnotationFieldDefinition; import org.intellij.sdk.language.psi.SdArgumentDefinition; import org.intellij.sdk.language.psi.SdDeclaration; import org.intellij.sdk.language.psi.SdDeclarationType; +import org.intellij.sdk.language.psi.SdDocumentAnnotationDefinition; import org.intellij.sdk.language.psi.SdDocumentDefinition; import org.intellij.sdk.language.psi.SdDocumentFieldDefinition; import org.intellij.sdk.language.psi.SdDocumentStructDefinition; @@ -31,6 +31,7 @@ import org.intellij.sdk.language.psi.SdImportFieldDefinition; import org.intellij.sdk.language.psi.SdItemRawScoreDefinition; import org.intellij.sdk.language.psi.SdQueryDefinition; import org.intellij.sdk.language.psi.SdRankProfileDefinition; +import org.intellij.sdk.language.psi.SdSchemaAnnotationDefinition; import org.intellij.sdk.language.psi.SdSchemaFieldDefinition; import org.intellij.sdk.language.psi.SdStructFieldDefinition; import org.intellij.sdk.language.psi.SdSummaryDefinition; @@ -41,7 +42,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Icon; /** - * I this class there are implementations of methods from rules in the .bnf file. While generating the psi files + * In this class there are implementations of methods from rules in the .bnf file. While generating the psi files * (classes and interfaces) the implementations would be taken from here. */ public class SdPsiImplUtil { @@ -68,12 +69,17 @@ public class SdPsiImplUtil { return SdDeclarationType.DOCUMENT; } else if (declaration instanceof SdDocumentStructDefinition) { return SdDeclarationType.STRUCT; + } else if (declaration instanceof SdSchemaAnnotationDefinition || + declaration instanceof SdDocumentAnnotationDefinition) { + return SdDeclarationType.ANNOTATION; } else if (declaration instanceof SdDocumentStructFieldDefinition) { return SdDeclarationType.DOCUMENT_STRUCT_FIELD; } else if (declaration instanceof SdDocumentFieldDefinition) { return SdDeclarationType.DOCUMENT_FIELD; } else if (declaration instanceof SdStructFieldDefinition) { return SdDeclarationType.STRUCT_FIELD; + } else if (declaration instanceof SdAnnotationFieldDefinition) { + return SdDeclarationType.ANNOTATION_FIELD; } else if (declaration instanceof SdQueryDefinition) { return SdDeclarationType.QUERY; } else if (declaration instanceof SdItemRawScoreDefinition) { @@ -119,7 +125,7 @@ public class SdPsiImplUtil { // ################################### // // ##### getName implementations ##### // // ################################### // - + @NotNull public static String getName(SdIdentifier element) { if (element != null) { @@ -136,7 +142,7 @@ public class SdPsiImplUtil { if (declaration instanceof SdImportFieldDefinition) { ASTNode asNode = declaration.getNode().findChildByType(SdTypes.AS); node = declaration.getNode().findChildByType(SdTypes.IDENTIFIER_VAL, asNode); - } else if (declaration instanceof SdRankProfileDefinition || declaration instanceof SdDocumentSummaryDefinition + } else if (declaration instanceof SdRankProfileDefinition || declaration instanceof SdDocumentSummaryDefinition || declaration instanceof SdQueryDefinition) { node = declaration.getNode().findChildByType(SdTypes.IDENTIFIER_WITH_DASH_VAL); } else { @@ -253,7 +259,7 @@ public class SdPsiImplUtil { public String getPresentableText() { if (element instanceof SdFunctionDefinition) { return SdUtil.createFunctionDescription((SdFunctionDefinition) element); - } + } SdRankProfileDefinition rankProfileParent = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class); if (rankProfileParent != null) { if (element instanceof SdQueryDefinition || element instanceof SdItemRawScoreDefinition) { @@ -276,7 +282,8 @@ public class SdPsiImplUtil { if (element instanceof SdFile) { return SdIcons.FILE; } else if (element instanceof SdSchemaFieldDefinition || element instanceof SdDocumentFieldDefinition || - element instanceof SdQueryDefinition || element instanceof SdItemRawScoreDefinition) { + element instanceof SdAnnotationFieldDefinition || element instanceof SdQueryDefinition || + element instanceof SdItemRawScoreDefinition) { return AllIcons.Nodes.Field; } else if (element instanceof SdStructFieldDefinition || element instanceof SdDocumentStructFieldDefinition) { @@ -295,6 +302,9 @@ public class SdPsiImplUtil { return SdIcons.DOCUMENT_SUMMARY; } else if (element instanceof SdDocumentDefinition) { return SdIcons.DOCUMENT; + } else if (element instanceof SdSchemaAnnotationDefinition || + element instanceof SdDocumentAnnotationDefinition) { + return AllIcons.Nodes.ObjectTypeAttribute; } else { return null; @@ -305,7 +315,7 @@ public class SdPsiImplUtil { public static ItemPresentation getPresentation(final SdSummaryDefinition element) { return new ItemPresentation() { - + @Override public String getPresentableText() { return element.getName(); @@ -326,7 +336,7 @@ public class SdPsiImplUtil { public static ItemPresentation getPresentation(final SdFirstPhaseDefinition element) { return new ItemPresentation() { - + @Override public String getPresentableText() { SdRankProfileDefinition rankProfile = PsiTreeUtil.getParentOfType(element, SdRankProfileDefinition.class); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex b/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex index c657af4f658..5150250665e 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex @@ -42,6 +42,7 @@ WORD = \w+ // These tokens are Parsed uses these return values to match token squence to a parser rule. "search" { return SEARCH; } + "schema" { return SCHEMA; } "document" { return DOCUMENT; } "inherits" { return INHERITS; } "struct" { return STRUCT; } @@ -118,6 +119,10 @@ WORD = \w+ "max-hits" { return MAX_HITS; } "diversity" { return DIVERSITY; } "min-groups" { return MIN_GROUPS; } + "cutoff-factor" { return CUTOFF_FACTOR; } + "cutoff-strategy" { return CUTOFF_STRATEGY; } + "loose" { return LOOSE; } + "strict" { return STRICT; } "rank-properties" { return RANK_PROPERTIES; } "first-phase" { return FIRST_PHASE; } @@ -132,7 +137,6 @@ WORD = \w+ "min-hits-per-thread" { return MIN_HITS_PER_THREAD; } "num-search-partition" { return NUM_SEARCH_PARTITION; } "constants" { return CONSTANTS; } - "literal" { return LITERAL; } "second-phase" { return SECOND_PHASE; } "rerank-count" { return RERANK_COUNT; } @@ -170,6 +174,9 @@ WORD = \w+ "rank-type" { return RANK_TYPE; } "onnx-model" { return ONNX_MODEL; } "raw-as-base64-in-summary" { return RAW_AS_BASE64_IN_SUMMARY; } + "on-match" { return ON_MATCH; } + "on-rank" { return ON_RANK; } + "on-summary" { return ON_SUMMARY; } "function" { return FUNCTION; } "macro" { return MACRO; } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java index a5f45e6b26b..ac7b79c8dd3 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java @@ -8,61 +8,63 @@ import com.intellij.navigation.ItemPresentation; import com.intellij.psi.NavigatablePsiElement; import com.intellij.psi.PsiElement; import org.intellij.sdk.language.SdUtil; +import org.intellij.sdk.language.psi.SdDocumentAnnotationDefinition; import org.intellij.sdk.language.psi.SdDocumentDefinition; import org.intellij.sdk.language.psi.SdDocumentStructDefinition; import org.intellij.sdk.language.psi.SdDocumentSummaryDefinition; import org.intellij.sdk.language.psi.SdFile; import org.intellij.sdk.language.psi.SdRankProfileDefinition; +import org.intellij.sdk.language.psi.SdSchemaAnnotationDefinition; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; public class SdStructureViewElement implements StructureViewTreeElement, SortableTreeElement { - + private final NavigatablePsiElement myElement; - + public SdStructureViewElement(NavigatablePsiElement element) { this.myElement = element; } - + @Override public Object getValue() { return myElement; } - + @Override public void navigate(boolean requestFocus) { myElement.navigate(requestFocus); } - + @Override public boolean canNavigate() { return myElement.canNavigate(); } - + @Override public boolean canNavigateToSource() { return myElement.canNavigateToSource(); } - + @NotNull @Override public String getAlphaSortKey() { String name = myElement.getName(); return name != null ? name : ""; } - + @NotNull @Override public ItemPresentation getPresentation() { ItemPresentation presentation = myElement.getPresentation(); return presentation != null ? presentation : new PresentationData(); } - + @Override public TreeElement @NotNull [] getChildren() { - List children = new ArrayList<>();; + List children = new ArrayList<>(); if (myElement instanceof SdFile) { children = SdUtil.findSchemaChildren(myElement); } else if (myElement instanceof SdDocumentDefinition) { @@ -73,6 +75,9 @@ public class SdStructureViewElement implements StructureViewTreeElement, Sortabl children = SdUtil.findRankProfileChildren(myElement); } else if (myElement instanceof SdDocumentSummaryDefinition) { children = SdUtil.findDocumentSummaryChildren(myElement); + } else if (myElement instanceof SdSchemaAnnotationDefinition || + myElement instanceof SdDocumentAnnotationDefinition) { + children = SdUtil.findAnnotationChildren(myElement); } List treeElements = new ArrayList<>(children.size()); -- cgit v1.2.3 From 546a139308686d7619da69c8330b42873ce15a11 Mon Sep 17 00:00:00 2001 From: sariel Date: Wed, 20 Oct 2021 11:37:42 +0300 Subject: Update plugin's name --- sd-plugin/src/main/resources/META-INF/plugin.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'sd-plugin') diff --git a/sd-plugin/src/main/resources/META-INF/plugin.xml b/sd-plugin/src/main/resources/META-INF/plugin.xml index 206b33144e2..1fdc1a3857b 100644 --- a/sd-plugin/src/main/resources/META-INF/plugin.xml +++ b/sd-plugin/src/main/resources/META-INF/plugin.xml @@ -1,9 +1,9 @@ org.intellij.sdk.language - SdPlugin - + SdReader + - VerizonMedia + Yahoo com.intellij.java @@ -20,12 +20,12 @@ com.intellij.java - - + -- cgit v1.2.3 From f4068feed1b0923fa66a566b56002283e437bd8b Mon Sep 17 00:00:00 2001 From: sariel Date: Wed, 20 Oct 2021 13:29:21 +0300 Subject: Add class headers with description and @author tag --- .../java/org/intellij/sdk/language/SdBlock.java | 60 ---------------------- .../sdk/language/SdChooseByNameContributor.java | 4 ++ .../intellij/sdk/language/SdCodeStyleSettings.java | 4 ++ .../sdk/language/SdCodeStyleSettingsProvider.java | 4 ++ .../org/intellij/sdk/language/SdCommenter.java | 4 +- .../sdk/language/SdCompletionContributor.java | 4 ++ .../java/org/intellij/sdk/language/SdFileType.java | 4 ++ .../sdk/language/SdFormattingModelBuilder.java | 37 ------------- .../java/org/intellij/sdk/language/SdIcons.java | 4 ++ .../java/org/intellij/sdk/language/SdLanguage.java | 4 ++ .../SdLanguageCodeStyleSettingsProvider.java | 4 ++ .../org/intellij/sdk/language/SdLexerAdapter.java | 4 ++ .../sdk/language/SdRefactoringSupportProvider.java | 4 ++ .../org/intellij/sdk/language/SdReference.java | 4 ++ .../intellij/sdk/language/SdSyntaxHighlighter.java | 7 ++- .../sdk/language/SdSyntaxHighlighterFactory.java | 4 ++ .../java/org/intellij/sdk/language/SdUtil.java | 4 ++ .../findUsages/SdDocumentSummaryGroupingRule.java | 4 ++ .../SdDocumentSummaryGroupingRuleProvider.java | 4 ++ .../language/findUsages/SdFindUsagesHandler.java | 4 ++ .../findUsages/SdFindUsagesHandlerFactory.java | 4 ++ .../language/findUsages/SdFindUsagesProvider.java | 4 ++ .../findUsages/SdRankProfileGroupingRule.java | 4 ++ .../SdRankProfileGroupingRuleProvider.java | 4 ++ .../sdk/language/findUsages/SdUsageGroup.java | 4 ++ .../language/hierarchy/SdCallHierarchyBrowser.java | 4 ++ .../hierarchy/SdCallHierarchyNodeDescriptor.java | 4 ++ .../hierarchy/SdCallHierarchyProvider.java | 5 +- .../language/hierarchy/SdCallTreeStructure.java | 4 ++ .../language/hierarchy/SdCalleeTreeStructure.java | 4 ++ .../language/hierarchy/SdCallerTreeStructure.java | 4 ++ .../sdk/language/hierarchy/SdHierarchyUtil.java | 5 +- .../sdk/language/parser/SdParserDefinition.java | 4 ++ .../java/org/intellij/sdk/language/parser/sd.bnf | 12 +++-- .../intellij/sdk/language/psi/SdDeclaration.java | 4 ++ .../sdk/language/psi/SdDeclarationType.java | 4 ++ .../language/psi/SdElementDescriptionProvider.java | 7 ++- .../sdk/language/psi/SdElementFactory.java | 4 ++ .../intellij/sdk/language/psi/SdElementType.java | 4 ++ .../java/org/intellij/sdk/language/psi/SdFile.java | 4 ++ .../intellij/sdk/language/psi/SdIdentifier.java | 4 ++ .../intellij/sdk/language/psi/SdNamedElement.java | 5 ++ .../org/intellij/sdk/language/psi/SdTokenType.java | 4 ++ .../sdk/language/psi/impl/SdNamedElementImpl.java | 5 ++ .../sdk/language/psi/impl/SdPsiImplUtil.java | 3 +- .../main/java/org/intellij/sdk/language/sd.flex | 26 +++++++--- .../language/structure/SdStructureViewElement.java | 4 ++ .../language/structure/SdStructureViewFactory.java | 5 ++ .../language/structure/SdStructureViewModel.java | 3 ++ sd-plugin/src/main/resources/META-INF/plugin.xml | 1 - 50 files changed, 209 insertions(+), 116 deletions(-) delete mode 100644 sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java delete mode 100644 sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java (limited to 'sd-plugin') diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java deleted file mode 100644 index d32baf86d7a..00000000000 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdBlock.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.intellij.sdk.language; - -import com.intellij.formatting.Alignment; -import com.intellij.formatting.Block; -import com.intellij.formatting.Indent; -import com.intellij.formatting.Spacing; -import com.intellij.formatting.SpacingBuilder; -import com.intellij.formatting.Wrap; -import com.intellij.formatting.WrapType; -import com.intellij.lang.ASTNode; -import com.intellij.psi.TokenType; -import com.intellij.psi.formatter.common.AbstractBlock; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; - -public class SdBlock extends AbstractBlock { - - private final SpacingBuilder spacingBuilder; - - protected SdBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment, - SpacingBuilder spacingBuilder) { - super(node, wrap, alignment); - this.spacingBuilder = spacingBuilder; - } - - @Override - protected List buildChildren() { - List blocks = new ArrayList<>(); - ASTNode child = myNode.getFirstChildNode(); - while (child != null) { - if (child.getElementType() != TokenType.WHITE_SPACE) { - Block block = new SdBlock(child, Wrap.createWrap(WrapType.NONE, false), Alignment.createAlignment(), - spacingBuilder); - blocks.add(block); - } - child = child.getTreeNext(); - } - return blocks; - } - - @Override - public Indent getIndent() { - return Indent.getNoneIndent(); - } - - @Nullable - @Override - public Spacing getSpacing(@Nullable Block child1, @NotNull Block child2) { - return spacingBuilder.getSpacing(this, child1, child2); - } - - @Override - public boolean isLeaf() { - return myNode.getFirstChildNode() == null; - } - -} diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java index 45e26f401d4..cfcb06614d7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdChooseByNameContributor.java @@ -16,6 +16,10 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +/** + * This class is used for the extension (in plugin.xml) to enable "Go To Symbol" feature. + * @author shahariel + */ public class SdChooseByNameContributor implements ChooseByNameContributor { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java index 0719ac7f426..e4c441e1877 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettings.java @@ -3,6 +3,10 @@ package org.intellij.sdk.language; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.CustomCodeStyleSettings; +/** + * This class represent a code style settings, and creates an option page in settings/preferences. + * @author shahariel + */ public class SdCodeStyleSettings extends CustomCodeStyleSettings { public SdCodeStyleSettings(CodeStyleSettings settings) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java index 6ea68655c70..095426262fd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCodeStyleSettingsProvider.java @@ -10,6 +10,10 @@ import com.intellij.psi.codeStyle.CustomCodeStyleSettings; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdCodeStyleSettings. + * @author shahariel + */ public class SdCodeStyleSettingsProvider extends CodeStyleSettingsProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java index e0fc30df22b..1a91e16b494 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCommenter.java @@ -4,7 +4,9 @@ import com.intellij.lang.Commenter; import org.jetbrains.annotations.Nullable; /** - * This class enables turning a line into a comment with "Code -> Comment with line comment" + * This class is used for the extension (in plugin.xml), to enable turning a line into a comment with + * "Code -> Comment with line comment". + * @author shahariel */ public class SdCommenter implements Commenter { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java index 5dd67e5b6e6..b73e49bd430 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdCompletionContributor.java @@ -11,6 +11,10 @@ import com.intellij.util.ProcessingContext; import org.intellij.sdk.language.psi.SdTypes; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml) to enables Auto-Complete. Partially works for now. + * @author shahariel + */ public class SdCompletionContributor extends CompletionContributor { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java index eeed80ad9f1..0ca8eb332a3 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFileType.java @@ -6,6 +6,10 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Icon; +/** + * This class is used for the extension (in plugin.xml), to define SD as a file's type. + * @author shahariel + */ public class SdFileType extends LanguageFileType { public static final SdFileType INSTANCE = new SdFileType(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java deleted file mode 100644 index 35f57f65c26..00000000000 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdFormattingModelBuilder.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.intellij.sdk.language; - -import com.intellij.formatting.Alignment; -import com.intellij.formatting.FormattingContext; -import com.intellij.formatting.FormattingModel; -import com.intellij.formatting.FormattingModelBuilder; -import com.intellij.formatting.FormattingModelProvider; -import com.intellij.formatting.SpacingBuilder; -import com.intellij.formatting.Wrap; -import com.intellij.formatting.WrapType; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import org.intellij.sdk.language.psi.SdTypes; -import org.jetbrains.annotations.NotNull; - -public class SdFormattingModelBuilder implements FormattingModelBuilder { - - private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) { - return new SpacingBuilder(settings, SdLanguage.INSTANCE) - .around(SdTypes.SYMBOL) - .spaceIf(settings.getCommonSettings(SdLanguage.INSTANCE.getID()).SPACE_AFTER_COLON) - .before(SdTypes.DOCUMENT_FIELD_DEFINITION) - .none(); - } - - @Override - public @NotNull FormattingModel createModel(@NotNull FormattingContext formattingContext) { - final CodeStyleSettings codeStyleSettings = formattingContext.getCodeStyleSettings(); - return FormattingModelProvider - .createFormattingModelForPsiFile(formattingContext.getContainingFile(), - new SdBlock(formattingContext.getNode(), - Wrap.createWrap(WrapType.NONE, false), - Alignment.createAlignment(), - createSpaceBuilder(codeStyleSettings)), - codeStyleSettings); - } - -} diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java index 8dadda25774..31c25b2181d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdIcons.java @@ -4,6 +4,10 @@ import com.intellij.openapi.util.IconLoader; import javax.swing.Icon; +/** + * This class is used for defining Icons for the IDE. + * @author shahariel + */ public class SdIcons { public static final Icon FILE = IconLoader.getIcon("icons/sd_icon.png", SdIcons.class); public static final Icon STRUCT_FIELD = IconLoader.getIcon("icons/struct_field_icon.png", SdIcons.class); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java index 7dbf10b68ac..389b4915543 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguage.java @@ -2,6 +2,10 @@ package org.intellij.sdk.language; import com.intellij.lang.Language; +/** + * This class defines SD as a language. + * @author shahariel + */ public class SdLanguage extends Language { public static final SdLanguage INSTANCE = new SdLanguage(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java index b51ae286201..ed944dfb3d1 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLanguageCodeStyleSettingsProvider.java @@ -5,6 +5,10 @@ import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable; import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml), to make the IDE use our plugin's code for coding style. + * @author shahariel + */ public class SdLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider { @NotNull diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java index 3363ce730b8..377b4f44c68 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdLexerAdapter.java @@ -3,6 +3,10 @@ package org.intellij.sdk.language; import com.intellij.lexer.FlexAdapter; import org.intellij.sdk.language.lexer.SdLexer; +/** + * This class adapts the JFlex lexer to the IntelliJ Platform Lexer API. + * @author shahariel + */ public class SdLexerAdapter extends FlexAdapter { public SdLexerAdapter() { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java index 5867729d54d..62f67c303b9 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdRefactoringSupportProvider.java @@ -6,6 +6,10 @@ import org.intellij.sdk.language.psi.SdIdentifierVal; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml), to enable refactoring. + * @author shahariel + */ public class SdRefactoringSupportProvider extends RefactoringSupportProvider { @Override public boolean isMemberInplaceRenameAvailable(@NotNull PsiElement elementToRename, @Nullable PsiElement context) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java index 891d94e15cb..2aac3f29e4a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdReference.java @@ -17,6 +17,10 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; +/** + * This class represent a reference to a Psi Element. + * @author shahariel + */ public class SdReference extends PsiReferenceBase implements PsiPolyVariantReference { private final String elementName; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java index ea2e6331c38..2f21400f14a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighter.java @@ -14,6 +14,10 @@ import org.jetbrains.annotations.NotNull; import java.util.HashSet; +/** + * This class defines the syntax highlighting of an SD file. + * @author shahariel + */ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { private static final HashSet keyWordsSet = initKeyWordsSet(); @@ -52,9 +56,8 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { return new SdLexerAdapter(); } - @NotNull @Override - public TextAttributesKey[] getTokenHighlights(IElementType tokenType) { + public TextAttributesKey @NotNull [] getTokenHighlights(IElementType tokenType) { if (tokenType.equals(SdTypes.IDENTIFIER_VAL)) { return IDENTIFIER_KEYS; // } else if (tokenType.equals(SdTypes.KEY)) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java index c4bc4491bf1..292224741bd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdSyntaxHighlighterFactory.java @@ -6,6 +6,10 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml) to the class SdSyntaxHighlighter. + * @author shahariel + */ public class SdSyntaxHighlighterFactory extends SyntaxHighlighterFactory { @NotNull diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java index 50eef106b90..0b0c75087d6 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/SdUtil.java @@ -36,6 +36,10 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; +/** + * This is the util class for the plugin's code. + * @author shahariel + */ public class SdUtil { public static @NotNull HashMap> createMacrosMap(SdFile file) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java index d4d38c8c38a..4833027948b 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRule.java @@ -12,6 +12,10 @@ import org.intellij.sdk.language.psi.SdDocumentSummaryDefinition; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class represent a Document Summary that groups elements in the "Find Usages" window. + * @author shahariel + */ public class SdDocumentSummaryGroupingRule extends SingleParentUsageGroupingRule implements DumbAware { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java index ffd620c822e..9ec6b2cc220 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdDocumentSummaryGroupingRuleProvider.java @@ -6,6 +6,10 @@ import com.intellij.usages.rules.UsageGroupingRule; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdDocumentSummaryGroupingRule. + * @author shahariel + */ public class SdDocumentSummaryGroupingRuleProvider implements FileStructureGroupRuleProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java index f00ea940613..f3a41ae2dd7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandler.java @@ -20,6 +20,10 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.List; +/** + * This class handles creating the "Find Usages" window. + * @author shahariel + */ public class SdFindUsagesHandler extends FindUsagesHandler { protected HashMap> macrosMap; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java index e5a6580c8c2..dbf6e4c32e7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesHandlerFactory.java @@ -7,6 +7,10 @@ import com.intellij.psi.PsiNamedElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdFindUsagesHandler. + * @author shahariel + */ public class SdFindUsagesHandlerFactory extends FindUsagesHandlerFactory { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java index eaa5b43641d..d252c8ae0d2 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java @@ -15,6 +15,10 @@ import org.intellij.sdk.language.psi.SdTypes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml), to enable "find Usages" window using the plugin code. + * @author shahariel + */ public class SdFindUsagesProvider implements FindUsagesProvider { @Nullable @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java index 379f70903df..294469f457d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRule.java @@ -12,6 +12,10 @@ import org.intellij.sdk.language.psi.SdRankProfileDefinition; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class represent a Rank Profile that groups elements in the "Find Usages" window. + * @author shahariel + */ public class SdRankProfileGroupingRule extends SingleParentUsageGroupingRule implements DumbAware { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java index 9ed8628dc44..8413a335c7c 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdRankProfileGroupingRuleProvider.java @@ -6,6 +6,10 @@ import com.intellij.usages.rules.UsageGroupingRule; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdRankProfileGroupingRule. + * @author shahariel + */ public class SdRankProfileGroupingRuleProvider implements FileStructureGroupRuleProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java index 21f54f86472..e2a2bd895cc 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdUsageGroup.java @@ -15,6 +15,10 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; +/** + * This class represent a group of elements in the "Find Usages" window. + * @author shahariel + */ public class SdUsageGroup implements UsageGroup { private final VirtualFile myFile; private final SmartPsiElementPointer myElementPointer; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java index 5960f1241c3..621d939ce1a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyBrowser.java @@ -21,6 +21,10 @@ import java.util.Map; import javax.swing.JTree; +/** + * This class is a browser for the "Call Hierarchy" window. + * @author shahariel + */ public class SdCallHierarchyBrowser extends CallHierarchyBrowserBase { public SdCallHierarchyBrowser(@NotNull Project project, diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java index 0cf612b0058..297056dc524 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyNodeDescriptor.java @@ -18,6 +18,10 @@ import org.jetbrains.annotations.NotNull; import javax.swing.Icon; +/** + * This class represents a node descriptor to a node in a tree in the "Call Hierarchy" window. + * @author shahariel + */ public class SdCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor { public SdCallHierarchyNodeDescriptor(final NodeDescriptor parentDescriptor, @NotNull final PsiElement element, final boolean isBase) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java index 44bfdca134f..09f4d2a603d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallHierarchyProvider.java @@ -23,7 +23,10 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.util.PsiTreeUtil; - +/** + * This class is used for the extension (in plugin.xml), to enable "Call Hierarchy" window using the plugin code. + * @author shahariel + */ public class SdCallHierarchyProvider implements HierarchyProvider { @Override diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java index fb612ed851a..636871fc719 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallTreeStructure.java @@ -20,6 +20,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; +/** + * This abstract class represents a general tree in the "Call Hierarchy" window. + * @author shahariel + */ public abstract class SdCallTreeStructure extends HierarchyTreeStructure { protected final String myScopeType; protected final SdFile myFile; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java index 977d1948b81..a8f8622a8d5 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCalleeTreeStructure.java @@ -15,6 +15,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; +/** + * This class represents a Callee tree in the "Call Hierarchy" window. + * @author shahariel + */ public class SdCalleeTreeStructure extends SdCallTreeStructure { public SdCalleeTreeStructure(Project project, PsiElement element, String currentScopeType) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java index f6b21fc9ead..28bd39b5c00 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdCallerTreeStructure.java @@ -17,6 +17,10 @@ import java.util.HashSet; import java.util.List; import java.util.function.Consumer; +/** + * This class represents a Caller tree in the "Call Hierarchy" window. + * @author shahariel + */ public class SdCallerTreeStructure extends SdCallTreeStructure { private HashMap> macroTreeChildren; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java index b3376a85524..186327178d3 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/hierarchy/SdHierarchyUtil.java @@ -15,7 +15,10 @@ import org.intellij.sdk.language.psi.SdRankProfileDefinition; import java.util.Comparator; import java.util.HashSet; - +/** + * This class is util class to the Call Hierarchy feature. + * @author shahariel + */ public class SdHierarchyUtil { private static final Comparator> NODE_DESCRIPTOR_COMPARATOR = Comparator.comparingInt(NodeDescriptor::getIndex); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java index 9d888a89cbf..aeb1a718de7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/SdParserDefinition.java @@ -18,6 +18,10 @@ import org.intellij.sdk.language.psi.SdFile; import org.intellij.sdk.language.psi.SdTypes; import org.jetbrains.annotations.NotNull; +/** + * This class is used for the extension (in plugin.xml), to make the parsing process use the plugin code. + * @author shahariel + */ public class SdParserDefinition implements ParserDefinition { public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); public static final TokenSet COMMENTS = TokenSet.create(SdTypes.COMMENT); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf index 64cb06f48db..245975f301c 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/parser/sd.bnf @@ -1,3 +1,9 @@ +/** +This file is the SD grammar. +NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats it like zero-to-many) +@author: shahariel + */ + { parserClass="org.intellij.sdk.language.parser.SdParser" // Name and the location of the parser which will be generated. @@ -34,8 +40,6 @@ ] } -// NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats it like zero-to-many) - SdFile ::= SchemaDefinition SchemaDefinition ::= (search | schema) IdentifierVal? '{' SchemaBody '}' SchemaBody ::= SchemaBodyOptions* DocumentDefinition SchemaBodyOptions* // Does not support zero-or-one occurrences @@ -322,13 +326,13 @@ KeywordOrIdentifier ::= schema | search | document | struct | field | type | ind function | macro | inline | text | exact | word | prefix | cased | uncased | substring | suffix | gram | paged | mutable | alias | sorting | strength | locale | uca | lowercase | primary | secondary | tertiary | quaternary | identical | rank | filter | normal | none | full | dynamic | - source | to | strict | loose | //execute | + source | to | strict | loose | bolding | on | off | true | false | id | normalizing | stemming | arity | hnsw | dictionary | hash | btree | fieldset | fields | constant | annotation - // KeywordNotIdentifier ::= (not enforced in this version) | attribute | body | header | index | reference | summary +// Note- in this form, those keywords can't be use as identifier-with-dash! KeywordNotIdentifier ::= struct-field | document-summary | omit-summary-features | from-disk | rank-profile | rank-type | num-threads-per-search | termwise-limit | ignore-default-rank-features | min-hits-per-thread | num-search-partition | match-phase | max-hits | second-phase | rerank-count | min-groups | diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java index c46466ddb84..cae9dc1a52d 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclaration.java @@ -4,6 +4,10 @@ import com.intellij.navigation.NavigationItem; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; +/** + * This interface represents a declaration in the SD language. + * @author shahariel + */ public interface SdDeclaration extends PsiElement, PsiNamedElement, NavigationItem { String getName(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java index 05b38d981c3..76760396ad7 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdDeclarationType.java @@ -1,5 +1,9 @@ package org.intellij.sdk.language.psi; +/** + * This Enum describes the different declarations' types and their names. + * @author shahariel + */ public enum SdDeclarationType { DOCUMENT("Document"), STRUCT("Struct"), diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java index ea588f965e5..ed278e9eefb 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementDescriptionProvider.java @@ -8,13 +8,16 @@ import org.intellij.sdk.language.psi.SdDeclaration; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - +/** + * This class is used for the extension (in plugin.xml), to enable "find Usages" window take the element description from + * here. Used only for the "target" element. + * @author shahariel + */ public class SdElementDescriptionProvider implements ElementDescriptionProvider { /** * Controls the headline of the element in the "Find Usages" window * @param psiElement the element to describe - * @param elementDescriptionLocation * @return a string with the description to write in the headline */ @Nullable diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java index 0961704443c..3a2402490cd 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementFactory.java @@ -6,6 +6,10 @@ import com.intellij.psi.PsiFileFactory; import com.intellij.psi.util.PsiTreeUtil; import org.intellij.sdk.language.SdFileType; +/** + * This class is a factory of psi elements in the SD PSI tree. + * @author shahariel + */ public class SdElementFactory { private static final String GENERAL_FILE_TEXT = "search {document %s {} rank-profile %s {}}"; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java index a17ae3c1c07..a14dfa11a5c 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdElementType.java @@ -5,6 +5,10 @@ import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +/** + * This class represent a SdElementType. + * @author shahariel + */ public class SdElementType extends IElementType { public SdElementType(@NotNull @NonNls String debugName) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java index 0e0a8b0661c..b9b8270a595 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdFile.java @@ -7,6 +7,10 @@ import org.intellij.sdk.language.SdFileType; import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NotNull; +/** + * This class represent an SD file. + * @author shahariel + */ public class SdFile extends PsiFileBase { public SdFile(@NotNull FileViewProvider viewProvider) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java index 27009e9369c..25a843e8629 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdIdentifier.java @@ -4,6 +4,10 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import org.jetbrains.annotations.NotNull; +/** + * This interface represents an identifier in the SD language (regular identifiers and identifiers with dash). + * @author shahariel + */ public interface SdIdentifier extends PsiElement { String getName(); diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java index 7f4133246a0..1e019d8d20e 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdNamedElement.java @@ -2,6 +2,11 @@ package org.intellij.sdk.language.psi; import com.intellij.psi.PsiNameIdentifierOwner; +/** + * This interface is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a + * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more. + * @author shahariel + */ public interface SdNamedElement extends PsiNameIdentifierOwner { } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java index ec587ceeb86..050793ee01a 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/SdTokenType.java @@ -5,6 +5,10 @@ import org.intellij.sdk.language.SdLanguage; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +/** + * This class represent a SdTokenType. + * @author shahariel + */ public class SdTokenType extends IElementType { public SdTokenType(@NotNull @NonNls String debugName) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java index 999fc4bd290..2d0ee78dd40 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdNamedElementImpl.java @@ -5,6 +5,11 @@ import com.intellij.lang.ASTNode; import org.intellij.sdk.language.psi.SdNamedElement; import org.jetbrains.annotations.NotNull; +/** + * This abstract class is used to wrap a Psi Element with SdNamedElement interface, which enables the element to be a + * "name owner" (like an identifier). It allows the element to take a part in references, find usages and more. + * @author shahariel + */ public abstract class SdNamedElementImpl extends ASTWrapperPsiElement implements SdNamedElement { public SdNamedElementImpl(@NotNull ASTNode node) { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java index 0645bd3c51f..e667fd3aea9 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/psi/impl/SdPsiImplUtil.java @@ -42,8 +42,9 @@ import org.jetbrains.annotations.Nullable; import javax.swing.Icon; /** - * In this class there are implementations of methods from rules in the .bnf file. While generating the psi files + * In this class there are implementations of methods of rules in the .bnf file. While generating the psi files * (classes and interfaces) the implementations would be taken from here. + * @author shahariel */ public class SdPsiImplUtil { diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex b/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex index 5150250665e..02c14a53358 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/sd.flex @@ -1,12 +1,19 @@ package org.intellij.sdk.language.lexer; import com.intellij.lexer.FlexLexer; -import com.intellij.psi.tree.IElementType;import com.intellij.ui.components.MultiColumnList;import org.intellij.sdk.language.psi.SdTokenType; +import com.intellij.psi.tree.IElementType; +import com.intellij.ui.components.MultiColumnList; +import org.intellij.sdk.language.psi.SdTokenType; -import static com.intellij.psi.TokenType.BAD_CHARACTER; // Pre-defined bad character token. -import static com.intellij.psi.TokenType.WHITE_SPACE; // Pre-defined whitespace character token. import static org.intellij.sdk.language.psi.SdTypes.*; // That is the class which is specified as `elementTypeHolderClass` in bnf // grammar file. This will contain all other tokens which we will use. +import static com.intellij.psi.TokenType.BAD_CHARACTER; // Pre-defined bad character token. +import static com.intellij.psi.TokenType.WHITE_SPACE; // Pre-defined whitespace character token. + +/* +* This file is used for the generation of the lexer of the SD language. +* @author shahariel +*/ %% @@ -37,9 +44,16 @@ WORD = \w+ %% { - // In here, we match keywords. So if a keyword is found, this returns a token which corresponds to that keyword. - // These tokens are generated using the 'sd.bnf' file and located in the SdTypes class. - // These tokens are Parsed uses these return values to match token squence to a parser rule. + /** + In here, we match keywords. So if a keyword is found, this returns a token which corresponds to that keyword. + These tokens are generated using the 'sd.bnf' file and located in the SdTypes class. + These tokens are Parsed uses these return values to match token squence to a parser rule. + */ + + /** + This list of keywords has to be synchronized with sd.bnf file. If you add a keyword here, you should add it to the + sd.bnf file as well (to the rule KeywordOrIdentifier / KeywordNotIdentifier). + */ "search" { return SEARCH; } "schema" { return SCHEMA; } diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java index ac7b79c8dd3..a8df43fbece 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewElement.java @@ -20,6 +20,10 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +/** + * This class is used for the presentation of an element in the "Structure View" window. + * @author shahariel + */ public class SdStructureViewElement implements StructureViewTreeElement, SortableTreeElement { private final NavigatablePsiElement myElement; diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java index 05590362fcf..ca2b964ade4 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewFactory.java @@ -9,6 +9,11 @@ import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +/** + * This class is used for the extension (in plugin.xml) to the class SdStructureViewModel. It make the IDE use our + * plugin's code when creating the "Structure View" window. + * @author shahariel + */ public class SdStructureViewFactory implements PsiStructureViewFactory { @Nullable diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java index 549bd811dcf..216b2b09096 100644 --- a/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java +++ b/sd-plugin/src/main/java/org/intellij/sdk/language/structure/SdStructureViewModel.java @@ -7,6 +7,9 @@ import com.intellij.ide.util.treeView.smartTree.Sorter; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +/** + * This class represents the "Structure View" window. + */ public class SdStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider { public SdStructureViewModel(PsiFile psiFile) { super(psiFile, new SdStructureViewElement(psiFile)); diff --git a/sd-plugin/src/main/resources/META-INF/plugin.xml b/sd-plugin/src/main/resources/META-INF/plugin.xml index 1fdc1a3857b..4ffe86ce3a2 100644 --- a/sd-plugin/src/main/resources/META-INF/plugin.xml +++ b/sd-plugin/src/main/resources/META-INF/plugin.xml @@ -33,7 +33,6 @@ - -- cgit v1.2.3