diff options
Diffstat (limited to 'sd-plugin/src/main/java/org/intellij/sdk/language')
5 files changed, 103 insertions, 35 deletions
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 ae99b58f11f..31acd5ff730 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 @@ -23,11 +23,9 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { private static final HashSet<IElementType> keyWordsSet = initKeyWordsSet(); private static final HashSet<IElementType> constantsSet = initConstantsSet(); -// private static final HashSet<IElementType> symbols = initSymbolsSet(); - public static final TextAttributesKey IDENTIFIER = - createTextAttributesKey("SD_IDENTIFIER", DefaultLanguageHighlighterColors.INSTANCE_FIELD); + createTextAttributesKey("SD_IDENTIFIER", DefaultLanguageHighlighterColors.IDENTIFIER); public static final TextAttributesKey CONSTANT = createTextAttributesKey("SD_CONSTANT", DefaultLanguageHighlighterColors.CONSTANT); public static final TextAttributesKey KEY = @@ -36,6 +34,8 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { createTextAttributesKey("SD_SYMBOL", DefaultLanguageHighlighterColors.BRACKETS); public static final TextAttributesKey STRING = createTextAttributesKey("SD_STRING", DefaultLanguageHighlighterColors.STRING); + public static final TextAttributesKey NUMBER = + createTextAttributesKey("SD_NUMBER", DefaultLanguageHighlighterColors.NUMBER); public static final TextAttributesKey COMMENT = createTextAttributesKey("SD_COMMENT", DefaultLanguageHighlighterColors.LINE_COMMENT); public static final TextAttributesKey BAD_CHARACTER = @@ -48,6 +48,7 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { private static final TextAttributesKey[] KEY_KEYS = new TextAttributesKey[]{KEY}; private static final TextAttributesKey[] SYMBOL_KEYS = new TextAttributesKey[]{SYMBOL}; private static final TextAttributesKey[] STRING_KEYS = new TextAttributesKey[]{STRING}; + private static final TextAttributesKey[] NUMBER_KEYS = new TextAttributesKey[]{NUMBER}; private static final TextAttributesKey[] COMMENT_KEYS = new TextAttributesKey[]{COMMENT}; private static final TextAttributesKey[] EMPTY_KEYS = new TextAttributesKey[0]; @@ -59,18 +60,16 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { @Override public TextAttributesKey @NotNull [] getTokenHighlights(IElementType tokenType) { - if (tokenType.equals(SdTypes.IDENTIFIER_VAL)) { + if (tokenType.equals(SdTypes.IDENTIFIER_VAL) || tokenType.equals(SdTypes.IDENTIFIER_WITH_DASH_VAL)) { return IDENTIFIER_KEYS; -// } else if (tokenType.equals(SdTypes.KEY)) { -// return KEY_KEYS; -// } else if (tokenType.equals(SdTypes.VALUE)) { -// return VALUE_KEYS; } else if (keyWordsSet.contains(tokenType)) { return KEY_KEYS; } else if (tokenType.equals(SdTypes.SYMBOL)) { return SYMBOL_KEYS; - } else if (tokenType.equals(SdTypes.STRING)) { + } else if (tokenType.equals(SdTypes.STRING_REG)) { return STRING_KEYS; + } else if (tokenType.equals(SdTypes.INTEGER_REG) || tokenType.equals(SdTypes.FLOAT_REG)) { + return NUMBER_KEYS; } else if (tokenType.equals(SdTypes.COMMENT)) { return COMMENT_KEYS; } else if (constantsSet.contains(tokenType)) { @@ -82,34 +81,81 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { } } -// private static HashSet<IElementType> initSymbolsSet() { -// HashSet<IElementType> symbols = new HashSet<>(); -// symbols.add('{'); -// return symbols; -// } - private static HashSet<IElementType> initKeyWordsSet() { HashSet<IElementType> keyWords = new HashSet<>(); - keyWords.add(SdTypes.MACRO); + keyWords.add(SdTypes.SEARCH); + keyWords.add(SdTypes.SCHEMA); keyWords.add(SdTypes.FIELD); keyWords.add(SdTypes.TYPE); - keyWords.add(SdTypes.SEARCH); - keyWords.add(SdTypes.DOCUMENT); + keyWords.add(SdTypes.INDEXING); + keyWords.add(SdTypes.INPUT); + keyWords.add(SdTypes.DOCUMENT_SUMMARY); keyWords.add(SdTypes.INHERITS); + keyWords.add(SdTypes.IMPORT); + keyWords.add(SdTypes.AS); + keyWords.add(SdTypes.FIELDSET); + keyWords.add(SdTypes.FIELDS); + keyWords.add(SdTypes.CONSTANT); + keyWords.add(SdTypes.FILE); + keyWords.add(SdTypes.URI); + keyWords.add(SdTypes.OUTPUT); + keyWords.add(SdTypes.ONNX_MODEL); + keyWords.add(SdTypes.ANNOTATION); + keyWords.add(SdTypes.RANK_PROFILE); + keyWords.add(SdTypes.MATCH_PHASE); + keyWords.add(SdTypes.FIRST_PHASE); + keyWords.add(SdTypes.EXPRESSION); + keyWords.add(SdTypes.SECOND_PHASE); + keyWords.add(SdTypes.RANK_PROPERTIES); + keyWords.add(SdTypes.MACRO); + keyWords.add(SdTypes.FUNCTION); + keyWords.add(SdTypes.INLINE); + keyWords.add(SdTypes.SUMMARY_FEATURES); + keyWords.add(SdTypes.RANK_FEATURES); + keyWords.add(SdTypes.CONSTANTS); + keyWords.add(SdTypes.DOCUMENT); keyWords.add(SdTypes.STRUCT); keyWords.add(SdTypes.STRUCT_FIELD); keyWords.add(SdTypes.MATCH); - keyWords.add(SdTypes.INDEXING); + keyWords.add(SdTypes.DISTANCE_METRIC); + keyWords.add(SdTypes.ALIAS); + keyWords.add(SdTypes.STEMMING); keyWords.add(SdTypes.RANK); keyWords.add(SdTypes.INDEXING_REWRITE); keyWords.add(SdTypes.QUERY_COMMAND); + keyWords.add(SdTypes.BOLDING); + keyWords.add(SdTypes.HNSW); + keyWords.add(SdTypes.SORTING); + keyWords.add(SdTypes.RANK_TYPE); + keyWords.add(SdTypes.WEIGHTEDSET); + keyWords.add(SdTypes.DICTIONARY); + keyWords.add(SdTypes.ID); + keyWords.add(SdTypes.NORMALIZING); + keyWords.add(SdTypes.WEIGHT); + return keyWords; } private static HashSet<IElementType> initConstantsSet() { HashSet<IElementType> constants = new HashSet<>(); - constants.add(SdTypes.SUMMARY); + constants.add(SdTypes.RAW_AS_BASE64_IN_SUMMARY); + constants.add(SdTypes.OMIT_SUMMARY_FEATURES); + constants.add(SdTypes.FROM_DISK); + constants.add(SdTypes.IGNORE_DEFAULT_RANK_FEATURES); constants.add(SdTypes.ATTRIBUTE); + constants.add(SdTypes.ORDER); + constants.add(SdTypes.MAX_HITS); + constants.add(SdTypes.DIVERSITY); + constants.add(SdTypes.MIN_GROUPS); + constants.add(SdTypes.CUTOFF_FACTOR); + constants.add(SdTypes.CUTOFF_STRATEGY); + constants.add(SdTypes.NUM_THREADS_PER_SEARCH); + constants.add(SdTypes.TERMWISE_LIMIT); + constants.add(SdTypes.MIN_HITS_PER_THREAD); + constants.add(SdTypes.NUM_SEARCH_PARTITION); + constants.add(SdTypes.KEEP_RANK_COUNT); + constants.add(SdTypes.RANK_SCORE_DROP_LIMIT); + constants.add(SdTypes.RERANK_COUNT); constants.add(SdTypes.TEXT); constants.add(SdTypes.EXACT); constants.add(SdTypes.EXACT_TERMINATOR); @@ -122,19 +168,40 @@ public class SdSyntaxHighlighter extends SyntaxHighlighterBase { constants.add(SdTypes.MAX_LENGTH); constants.add(SdTypes.GRAM); constants.add(SdTypes.GRAM_SIZE); + constants.add(SdTypes.SUMMARY); constants.add(SdTypes.INDEX); + constants.add(SdTypes.SET_LANGUAGE); constants.add(SdTypes.FAST_SEARCH); constants.add(SdTypes.FAST_ACCESS); - constants.add(SdTypes.ALIAS); - constants.add(SdTypes.SORTING); - constants.add(SdTypes.DISTANCE_METRIC); + constants.add(SdTypes.PAGED); + constants.add(SdTypes.MUTABLE); constants.add(SdTypes.FILTER); constants.add(SdTypes.NORMAL); constants.add(SdTypes.NONE); constants.add(SdTypes.FULL); constants.add(SdTypes.DYNAMIC); + constants.add(SdTypes.SOURCE); + constants.add(SdTypes.TO); constants.add(SdTypes.MATCHED_ELEMENTS_ONLY); - + constants.add(SdTypes.ON); + constants.add(SdTypes.OFF); + constants.add(SdTypes.TRUE); + constants.add(SdTypes.FALSE); + constants.add(SdTypes.ARITY); + constants.add(SdTypes.LOWER_BOUND); + constants.add(SdTypes.UPPER_BOUND); + constants.add(SdTypes.DENSE_POSTING_LIST_THRESHOLD); + constants.add(SdTypes.ENABLE_BM25); + constants.add(SdTypes.MAX_LINKS_PER_NODE); + constants.add(SdTypes.NEIGHBORS_TO_EXPLORE_AT_INSERT); + constants.add(SdTypes.MULTI_THREADED_INDEXING); + constants.add(SdTypes.ASCENDING); + constants.add(SdTypes.DESCENDING); + constants.add(SdTypes.STRENGTH); + constants.add(SdTypes.LOCALE); + constants.add(SdTypes.CREATE_IF_NONEXISTENT); + constants.add(SdTypes.REMOVE_IF_ZERO); + return constants; } } 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 4ec407e580d..d011d34227f 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 @@ -28,7 +28,7 @@ public class SdFindUsagesProvider implements FindUsagesProvider { TokenSet.create(SdTypes.ID_REG, SdTypes.ID_WITH_DASH_REG, SdTypes.IDENTIFIER_VAL, SdTypes.IDENTIFIER_WITH_DASH_VAL), TokenSet.create(SdTypes.COMMENT), - TokenSet.create(SdTypes.STRING, SdTypes.INTEGER_REG, SdTypes.FLOAT_REG)); + TokenSet.create(SdTypes.STRING_REG, SdTypes.INTEGER_REG, SdTypes.FLOAT_REG)); } @Override 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 2a169707a79..baf31cde898 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 @@ -26,7 +26,7 @@ import org.jetbrains.annotations.NotNull; 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); - public static final TokenSet STRINGS = TokenSet.create(SdTypes.STRING); + public static final TokenSet STRINGS = TokenSet.create(SdTypes.STRING_REG); public static final IFileElementType FILE = new IFileElementType(SdLanguage.INSTANCE); 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 245975f301c..073673ee30c 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 @@ -35,7 +35,7 @@ NOTE: This grammar does not enforce zero-or-one occurrences of elements (treats ARITHMETIC_OPERATOR = 'regexp:[\-+*/]' INTEGER_REG = 'regexp:[0-9]+' FLOAT_REG = 'regexp:[0-9]+[.][0-9]+[e]?' - STRING = 'regexp:[\"][^\"]*[\"]' + STRING_REG = 'regexp:[\"][^\"]*[\"]' WORD_REG = 'regexp:\w+' ] } @@ -95,7 +95,7 @@ private UriPath ::= ('H'|'h') ('T'|'t') ('T'|'t') ('P'|'p') ('S'|'s')? ':' ('//' OnnxModelDefinition ::= onnx-model IdentifierVal '{' OnnxModelBody '}' OnnxModelBody ::= OnnxModelBodyOptions* private OnnxModelBodyOptions ::= (file ':' FilePath) | (uri ':' UriPath) | - ((input | output) (IdentifierVal | STRING) ':' ('.' | '/' | '(' | ')' | IdentifierWithDashVal | WORD_REG)) + ((input | output) (IdentifierVal | STRING_REG) ':' ('.' | '/' | '(' | ')' | IdentifierWithDashVal | WORD_REG)) SchemaAnnotationDefinition ::= AnnotationDefinition { mixin="org.intellij.sdk.language.psi.impl.SdNamedElementImpl" @@ -168,8 +168,8 @@ private SecondPhaseBodyOptions ::= (rerank-count ':' INTEGER_REG) | ExpressionDe RankPropertiesDefinition ::= rank-properties '{' RankPropertiesBody '}' RankPropertiesBody ::= (RankPropertiesKey ':' RankPropertiesValue)+ -RankPropertiesKey ::= (IdentifierWithDashVal | STRING | '(' | ')' | '.' | ',')+ -RankPropertiesValue ::= (('-')? INTEGER_REG) | (('-')? FLOAT_REG) | WORD_REG | IdentifierVal | STRING +RankPropertiesKey ::= (IdentifierWithDashVal | STRING_REG | '(' | ')' | '.' | ',')+ +RankPropertiesValue ::= (('-')? INTEGER_REG) | (('-')? FLOAT_REG) | WORD_REG | IdentifierVal | STRING_REG FunctionDefinition ::= (function | macro) inline? IdentifierVal '(' (ArgumentDefinition (',' ArgumentDefinition)*)? ')' '{' ExpressionDefinition '}' @@ -235,7 +235,7 @@ DocumentFieldBody ::= DocumentFieldBodyOptions* // Does not support zero-or-one private DocumentFieldBodyOptions ::= StructFieldDefinition | MatchDefinition | IndexingDefinition | AttributeDefinition | AliasDef | RankDefinition | IndexingRewriteState | QueryCommandDefinition | SummaryDefinition | BoldingDefinition | (id ':' INTEGER_REG) | IndexDefinition | (normalizing ':' IdentifierWithDashVal) | - SortingDefinition | StemmingDefinition | (weight ': INTEGER_REG') | WeightedSetDefinition | + SortingDefinition | StemmingDefinition | (weight ':' INTEGER_REG) | WeightedSetDefinition | RankTypeDefinition | DictionaryDefinition //***** Field's body elements ******// @@ -256,7 +256,7 @@ MatchProperty ::= text | exact | exact-terminator | word | prefix | cased | unca IndexingDefinition ::= indexing (':' IndexingStatement) | ('{' IndexingStatement+ '}') IndexingStatement ::= IndexingStatementOptions (('|' IndexingStatementOptions)*) | ((';' IndexingStatementOptions)*) // Does not support zero-or-one occurrences -IndexingStatementOptions ::= summary | attribute | index | "set_language" +IndexingStatementOptions ::= summary | attribute | index | set_language // Attribute AttributeDefinition ::= attribute ((':' SimpleAttributeProperty) | ('{' (SimpleAttributeProperty | ComplexAttributeProperty)+ '}')) SimpleAttributeProperty ::= fast-search | fast-access | paged | mutable // Does not support zero-or-one occurrences @@ -272,7 +272,7 @@ RankingSetting ::= filter | normal // Indexing Rewrite IndexingRewriteState ::= indexing-rewrite ':' none // Query Command -QueryCommandDefinition ::= query-command ':' IdentifierVal | STRING +QueryCommandDefinition ::= query-command ':' IdentifierVal | STRING_REG // Summary SummaryDefinition ::= summary ((':' SummaryBodyOptions) | (IdentifierWithDashVal? (type FieldTypeName)? '{' SummaryBody '}')) { methods=[getName getPresentation] } @@ -330,7 +330,7 @@ KeywordOrIdentifier ::= schema | search | document | struct | field | type | ind bolding | on | off | true | false | id | normalizing | stemming | arity | hnsw | dictionary | hash | btree | fieldset | fields | constant | annotation | attribute | body | header | index | - reference | summary + reference | summary | set_language // 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 | 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 02c14a53358..ce8fbd091cc 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 @@ -68,6 +68,7 @@ WORD = \w+ "indexing" { return INDEXING; } "summary" { return SUMMARY; } "attribute" { return ATTRIBUTE; } + "set_language" { return SET_LANGUAGE; } "array" { return ARRAY; } "raw" { return RAW; } @@ -214,7 +215,7 @@ WORD = \w+ {ARITHMETIC_OPERATOR} { return ARITHMETIC_OPERATOR; } {COMPARISON_OPERATOR} { return COMPARISON_OPERATOR; } {WORD} { return WORD_REG; } - {STRING} { return STRING; } + {STRING} { return STRING_REG; } } |