From 38cc16d8c33b299309f1a634aaa2cf3587a2262c Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Wed, 9 Jun 2021 20:51:27 +0200 Subject: [PATCH] align with aspect branch --- build.gradle.kts | 22 +-- .../{RelAstGrammar.bnf => Grammar.bnf} | 26 +-- src/main/grammar/Grammar.flex | 66 +++++++ src/main/grammar/RelAstGrammar.flex | 66 ------- .../org/jastadd/tooling/RelAstGrammar.java | 13 -- .../RelAstGrammarCodeStyleSettings.java | 12 -- .../RelAstGrammarFormattingModelBuilder.java | 58 ------ .../org/jastadd/tooling/grammar/Grammar.java | 13 ++ .../GrammarAnnotator.java} | 20 +-- .../GrammarBlock.java} | 10 +- .../GrammarChooseByNameContributor.java} | 12 +- .../grammar/GrammarCodeStyleSettings.java | 12 ++ .../GrammarCodeStyleSettingsProvider.java} | 24 +-- .../GrammarColorSettingsPage.java} | 41 ++--- .../GrammarCommenter.java} | 6 +- .../GrammarCompletionContributor.java} | 47 ++--- .../GrammarFileType.java} | 12 +- .../GrammarFindUsageProvider.java} | 26 +-- .../GrammarFormattingModelBuilder.java | 58 ++++++ .../GrammarJavaAnnotator.java} | 7 +- ...marLanguageCodeStyleSettingsProvider.java} | 6 +- .../GrammarLineMarkerProvider.java} | 11 +- .../GrammarRefactoringSupportProvider.java} | 10 +- .../GrammarReference.java} | 17 +- .../GrammarReferenceContributor.java} | 12 +- ...ammarRemoveRedundantComponentNameFix.java} | 14 +- .../GrammarStructureViewElement.java} | 20 +-- .../GrammarStructureViewFactory.java} | 6 +- .../GrammarStructureViewModel.java} | 12 +- .../GrammarSyntaxHighlighter.java} | 52 +++--- .../GrammarSyntaxHighlighterFactory.java} | 6 +- .../GrammarUtil.java} | 32 ++-- .../grammar/lexer/GrammarLexerAdapter.java | 11 ++ .../parser/GrammarParserDefinition.java} | 22 +-- .../grammar/psi/GrammarElementFactory.java | 31 ++++ .../grammar/psi/GrammarElementType.java | 14 ++ .../tooling/grammar/psi/GrammarFile.java | 27 +++ .../grammar/psi/GrammarNamedElement.java | 7 + .../tooling/grammar/psi/GrammarTokenType.java | 19 ++ .../grammar/psi/GrammarTypeDeclExtension.java | 4 + .../psi/GrammarTypeReferenceExtension.java | 4 + .../psi/GrammarTypeReferenceManipulator.java} | 8 +- .../psi/impl/GrammarNamedElementImpl.java} | 10 +- .../impl/GrammarTypeDeclImplExtension.java | 47 +++++ .../GrammarTypeReferenceImplExtension.java} | 14 +- .../lexer/RelAstGrammarFlexAdapter.java | 11 -- .../parser/RelAstGrammarElementType.java | 14 -- .../parser/RelAstGrammarTokenType.java | 19 -- .../psi/RelAstGrammarElementFactory.java | 31 ---- .../tooling/psi/RelAstGrammarFile.java | 27 --- .../psi/RelAstGrammarNamedElement.java | 7 - .../psi/RelAstGrammarTypeDeclExtension.java | 4 - .../RelAstGrammarTypeReferenceExtension.java | 4 - .../RelAstGrammarTypeDeclImplExtension.java | 47 ----- .../tooling/{ => util}/JastAddIcons.java | 2 +- src/main/resources/META-INF/plugin.xml | 38 ++-- src/main/resources/icons/jastadd.svg | 169 +++++++++--------- 57 files changed, 671 insertions(+), 669 deletions(-) rename src/main/grammar/{RelAstGrammar.bnf => Grammar.bnf} (57%) create mode 100644 src/main/grammar/Grammar.flex delete mode 100644 src/main/grammar/RelAstGrammar.flex delete mode 100644 src/main/java/org/jastadd/tooling/RelAstGrammar.java delete mode 100644 src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java delete mode 100644 src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/Grammar.java rename src/main/java/org/jastadd/tooling/{RelAstGrammarAnnotator.java => grammar/GrammarAnnotator.java} (68%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarBlock.java => grammar/GrammarBlock.java} (75%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarChooseByNameContributor.java => grammar/GrammarChooseByNameContributor.java} (67%) create mode 100644 src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettings.java rename src/main/java/org/jastadd/tooling/{RelAstGrammarCodeStyleSettingsProvider.java => grammar/GrammarCodeStyleSettingsProvider.java} (56%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarColorSettingsPage.java => grammar/GrammarColorSettingsPage.java} (50%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarCommenter.java => grammar/GrammarCommenter.java} (78%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarCompletionContributor.java => grammar/GrammarCompletionContributor.java} (77%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarFileType.java => grammar/GrammarFileType.java} (66%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarFindUsageProvider.java => grammar/GrammarFindUsageProvider.java} (59%) create mode 100644 src/main/java/org/jastadd/tooling/grammar/GrammarFormattingModelBuilder.java rename src/main/java/org/jastadd/tooling/{RelAstGrammarJavaAnnotator.java => grammar/GrammarJavaAnnotator.java} (89%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarLanguageCodeStyleSettingsProvider.java => grammar/GrammarLanguageCodeStyleSettingsProvider.java} (93%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarLineMarkerProvider.java => grammar/GrammarLineMarkerProvider.java} (74%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarRefactoringSupportProvider.java => grammar/GrammarRefactoringSupportProvider.java} (60%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarReference.java => grammar/GrammarReference.java} (72%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarReferenceContributor.java => grammar/GrammarReferenceContributor.java} (69%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarRemoveRedundantComponentNameFix.java => grammar/GrammarRemoveRedundantComponentNameFix.java} (72%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarStructureViewElement.java => grammar/GrammarStructureViewElement.java} (68%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarStructureViewFactory.java => grammar/GrammarStructureViewFactory.java} (80%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarStructureViewModel.java => grammar/GrammarStructureViewModel.java} (65%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarSyntaxHighlighter.java => grammar/GrammarSyntaxHighlighter.java} (77%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarSyntaxHighlighterFactory.java => grammar/GrammarSyntaxHighlighterFactory.java} (69%) rename src/main/java/org/jastadd/tooling/{RelAstGrammarUtil.java => grammar/GrammarUtil.java} (72%) create mode 100644 src/main/java/org/jastadd/tooling/grammar/lexer/GrammarLexerAdapter.java rename src/main/java/org/jastadd/tooling/{parser/RelAstGrammarParserDefinition.java => grammar/parser/GrammarParserDefinition.java} (69%) create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementFactory.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementType.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarFile.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarNamedElement.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarTokenType.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeDeclExtension.java create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceExtension.java rename src/main/java/org/jastadd/tooling/{psi/RelAstGrammarTypeReferenceManipulator.java => grammar/psi/GrammarTypeReferenceManipulator.java} (61%) rename src/main/java/org/jastadd/tooling/{psi/impl/RelAstGrammarNamedElementImpl.java => grammar/psi/impl/GrammarNamedElementImpl.java} (77%) create mode 100644 src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeDeclImplExtension.java rename src/main/java/org/jastadd/tooling/{psi/impl/RelAstGrammarTypeReferenceImplExtension.java => grammar/psi/impl/GrammarTypeReferenceImplExtension.java} (57%) delete mode 100644 src/main/java/org/jastadd/tooling/lexer/RelAstGrammarFlexAdapter.java delete mode 100644 src/main/java/org/jastadd/tooling/parser/RelAstGrammarElementType.java delete mode 100644 src/main/java/org/jastadd/tooling/parser/RelAstGrammarTokenType.java delete mode 100644 src/main/java/org/jastadd/tooling/psi/RelAstGrammarElementFactory.java delete mode 100644 src/main/java/org/jastadd/tooling/psi/RelAstGrammarFile.java delete mode 100644 src/main/java/org/jastadd/tooling/psi/RelAstGrammarNamedElement.java delete mode 100644 src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeDeclExtension.java delete mode 100644 src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceExtension.java delete mode 100644 src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeDeclImplExtension.java rename src/main/java/org/jastadd/tooling/{ => util}/JastAddIcons.java (89%) diff --git a/build.gradle.kts b/build.gradle.kts index 200a911..a856f0f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ import io.gitlab.arturbosch.detekt.Detekt import org.jetbrains.changelog.markdownToHTML -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.grammarkit.tasks.GenerateLexer import org.jetbrains.grammarkit.tasks.GenerateParser +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile fun properties(key: String) = project.findProperty(key).toString() @@ -87,25 +87,25 @@ detekt { tasks { - val generateRelAstGrammarLexer = task<GenerateLexer>("generateRelAstGrammarLexer") { - source = "src/main/grammar/RelAstGrammar.flex" - targetDir = "src/gen/java/org/jastadd/tooling/lexer/" - targetClass = "RelAstGrammarLexer" + val generateGrammarLexer = task<GenerateLexer>("generateGrammarLexer") { + source = "src/main/grammar/Grammar.flex" + targetDir = "src/gen/java/org/jastadd/tooling/grammar/lexer/" + targetClass = "GrammarLexer" purgeOldFiles = true } // not fully working because of https://github.com/JetBrains/gradle-grammar-kit-plugin/issues/3 - val generateRelAstGrammarParser = task<GenerateParser>("generateRelAstGrammarParser") { - source = "src/main/grammar/RelAstGrammar.bnf" + val generateGrammarParser = task<GenerateParser>("generateGrammarParser") { + source = "src/main/grammar/Grammar.bnf" targetRoot = "src/gen/java" - pathToParser = "/org/jastadd/tooling/RelAstGrammarParser.java" - pathToPsiRoot = "/org/jastadd/tooling/psi" + pathToParser = "/org/jastadd/tooling/grammar/GrammarParser.java" + pathToPsiRoot = "/org/jastadd/tooling/grammar/psi" purgeOldFiles = true } compileJava { - dependsOn(generateRelAstGrammarLexer) - dependsOn(generateRelAstGrammarParser) + dependsOn(generateGrammarLexer) + dependsOn(generateGrammarParser) } // Set the compatibility versions to 1.8 diff --git a/src/main/grammar/RelAstGrammar.bnf b/src/main/grammar/Grammar.bnf similarity index 57% rename from src/main/grammar/RelAstGrammar.bnf rename to src/main/grammar/Grammar.bnf index 081d3f4..5de3061 100644 --- a/src/main/grammar/RelAstGrammar.bnf +++ b/src/main/grammar/Grammar.bnf @@ -1,28 +1,28 @@ { - parserClass="org.jastadd.tooling.parser.RelAstGrammarParser" + parserClass="org.jastadd.tooling.grammar.parser.GrammarParser" extends="com.intellij.extapi.psi.ASTWrapperPsiElement" - psiClassPrefix="RelAstGrammar" + psiClassPrefix="Grammar" psiImplClassSuffix="Impl" - psiPackage="org.jastadd.tooling.psi" - psiImplPackage="org.jastadd.tooling.psi.impl" + psiPackage="org.jastadd.tooling.grammar.psi" + psiImplPackage="org.jastadd.tooling.grammar.psi.impl" - elementTypeHolderClass="org.jastadd.tooling.parser.RelAstGrammarTypes" - elementTypeClass="org.jastadd.tooling.parser.RelAstGrammarElementType" - tokenTypeClass="org.jastadd.tooling.parser.RelAstGrammarTokenType" + elementTypeHolderClass="org.jastadd.tooling.grammar.parser.GrammarTypes" + elementTypeClass="org.jastadd.tooling.grammar.psi.GrammarElementType" + tokenTypeClass="org.jastadd.tooling.grammar.psi.GrammarTokenType" - psiImplUtilClass="org.jastadd.tooling.psi.impl.RelAstGrammarPsiImplUtil" + psiImplUtilClass="org.jastadd.tooling.grammar.psi.impl.GrammarPsiImplUtil" } -relAstGrammarFile ::= comment* ((type_decl | relation) comment*)* +GrammarFile ::= comment* ((type_decl | relation) comment*)* comment ::= (WHITESPACE | MULTILINECOMMENT | DOCCOMMENT | SINGLELINECOMMENT) type_decl ::= ABSTRACT? declared_name (COL type_reference)? (ASSIGN (component | nta_component)*)? SCOL { - extends="org.jastadd.tooling.psi.impl.RelAstGrammarTypeDeclImplExtension" - implements="org.jastadd.tooling.psi.RelAstGrammarTypeDeclExtension" + extends="org.jastadd.tooling.grammar.psi.impl.GrammarTypeDeclImplExtension" + implements="org.jastadd.tooling.grammar.psi.GrammarTypeDeclExtension" } nta_component ::= SLASH component SLASH @@ -45,8 +45,8 @@ navigable_role ::= type_reference DOT declared_name (STAR | QUESTION_MARK)? declared_name ::= ID type_reference ::= ID { - extends="org.jastadd.tooling.psi.impl.RelAstGrammarTypeReferenceImplExtension" - implements="org.jastadd.tooling.psi.RelAstGrammarTypeReferenceExtension" + extends="org.jastadd.tooling.grammar.psi.impl.GrammarTypeReferenceImplExtension" + implements="org.jastadd.tooling.grammar.psi.GrammarTypeReferenceExtension" } java_name ::= ID diff --git a/src/main/grammar/Grammar.flex b/src/main/grammar/Grammar.flex new file mode 100644 index 0000000..3f8006a --- /dev/null +++ b/src/main/grammar/Grammar.flex @@ -0,0 +1,66 @@ +// Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package org.jastadd.tooling.grammar.lexer; + +import com.intellij.lexer.FlexLexer; +import com.intellij.psi.tree.IElementType; +import org.jastadd.tooling.grammar.parser.GrammarTypes; +import com.intellij.psi.TokenType; + +%% + +%class GrammarLexer +%implements FlexLexer +%unicode +%function advance +%type IElementType +%eof{ return; +%eof} + + +WhiteSpace = [ ] | \t | \f | \n | \r | \r\n +ID = [a-zA-Z$_][a-zA-Z0-9$_]* +MultiLineComment = [/][*][^*]+[*]+([^*/][^*]*[*]+)*[/] +DocComment = [/][*][*][^*]*[*]+([^*/][^*]*[*]+)*[/] +SingleLineComment = [/][/] [^\n\r]* (\n | \r | \r\n) + + +%xstate COMMENT +%state DECLARATION + +%% + +<DECLARATION> { + {WhiteSpace} { return TokenType.WHITE_SPACE; } // maybe ignore this + {MultiLineComment} { return GrammarTypes.MULTILINECOMMENT; } // maybe ignore this + {DocComment} { return GrammarTypes.DOCCOMMENT; } // maybe ignore this + {SingleLineComment} { return GrammarTypes.SINGLELINECOMMENT; } // maybe ignore this +} + +<YYINITIAL,COMMENT> { + {WhiteSpace}+ { yybegin(YYINITIAL); return TokenType.WHITE_SPACE; } + {MultiLineComment} { yybegin(YYINITIAL); return GrammarTypes.MULTILINECOMMENT; } + {DocComment} { yybegin(YYINITIAL); return GrammarTypes.DOCCOMMENT; } + {SingleLineComment} { yybegin(YYINITIAL); return GrammarTypes.SINGLELINECOMMENT; } +} + +<YYINITIAL,DECLARATION> { + "abstract" { yybegin(DECLARATION); return GrammarTypes.ABSTRACT; } + "rel" { yybegin(DECLARATION); return GrammarTypes.REL; } + ";" { yybegin(COMMENT); return GrammarTypes.SCOL; } + ":" { yybegin(DECLARATION); return GrammarTypes.COL; } + "::=" { yybegin(DECLARATION); return GrammarTypes.ASSIGN; } + "*" { yybegin(DECLARATION); return GrammarTypes.STAR; } + "." { yybegin(DECLARATION); return GrammarTypes.DOT; } + "," { yybegin(DECLARATION); return GrammarTypes.COMMA; } + "<" { yybegin(DECLARATION); return GrammarTypes.LT; } + ">" { yybegin(DECLARATION); return GrammarTypes.GT; } + "[" { yybegin(DECLARATION); return GrammarTypes.LBRACKET; } + "]" { yybegin(DECLARATION); return GrammarTypes.RBRACKET; } + "/" { yybegin(DECLARATION); return GrammarTypes.SLASH; } + "?" { yybegin(DECLARATION); return GrammarTypes.QUESTION_MARK; } + "->" { yybegin(DECLARATION); return GrammarTypes.RIGHT; } + "<-" { yybegin(DECLARATION); return GrammarTypes.LEFT; } + "<->" { yybegin(DECLARATION); return GrammarTypes.BIDIRECTIONAL; } + {ID} { yybegin(DECLARATION); return GrammarTypes.ID; } + [^] { return TokenType.BAD_CHARACTER; } +} diff --git a/src/main/grammar/RelAstGrammar.flex b/src/main/grammar/RelAstGrammar.flex deleted file mode 100644 index 27f0f94..0000000 --- a/src/main/grammar/RelAstGrammar.flex +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2000-2020 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package org.jastadd.tooling.lexer; - -import com.intellij.lexer.FlexLexer; -import com.intellij.psi.tree.IElementType; -import org.jastadd.tooling.parser.RelAstGrammarTypes; -import com.intellij.psi.TokenType; - -%% - -%class RelAstGrammarLexer -%implements FlexLexer -%unicode -%function advance -%type IElementType -%eof{ return; -%eof} - - -WhiteSpace = [ ] | \t | \f | \n | \r | \r\n -ID = [a-zA-Z$_][a-zA-Z0-9$_]* -MultiLineComment = [/][*][^*]+[*]+([^*/][^*]*[*]+)*[/] -DocComment = [/][*][*][^*]*[*]+([^*/][^*]*[*]+)*[/] -SingleLineComment = [/][/] [^\n\r]* (\n | \r | \r\n) - - -%xstate COMMENT -%state DECLARATION - -%% - -<DECLARATION> { - {WhiteSpace} { return TokenType.WHITE_SPACE; } // maybe ignore this - {MultiLineComment} { return RelAstGrammarTypes.MULTILINECOMMENT; } // maybe ignore this - {DocComment} { return RelAstGrammarTypes.DOCCOMMENT; } // maybe ignore this - {SingleLineComment} { return RelAstGrammarTypes.SINGLELINECOMMENT; } // maybe ignore this -} - -<YYINITIAL,COMMENT> { - {WhiteSpace}+ { yybegin(YYINITIAL); return TokenType.WHITE_SPACE; } - {MultiLineComment} { yybegin(YYINITIAL); return RelAstGrammarTypes.MULTILINECOMMENT; } - {DocComment} { yybegin(YYINITIAL); return RelAstGrammarTypes.DOCCOMMENT; } - {SingleLineComment} { yybegin(YYINITIAL); return RelAstGrammarTypes.SINGLELINECOMMENT; } -} - -<YYINITIAL,DECLARATION> { - "abstract" { yybegin(DECLARATION); return RelAstGrammarTypes.ABSTRACT; } - "rel" { yybegin(DECLARATION); return RelAstGrammarTypes.REL; } - ";" { yybegin(COMMENT); return RelAstGrammarTypes.SCOL; } - ":" { yybegin(DECLARATION); return RelAstGrammarTypes.COL; } - "::=" { yybegin(DECLARATION); return RelAstGrammarTypes.ASSIGN; } - "*" { yybegin(DECLARATION); return RelAstGrammarTypes.STAR; } - "." { yybegin(DECLARATION); return RelAstGrammarTypes.DOT; } - "," { yybegin(DECLARATION); return RelAstGrammarTypes.COMMA; } - "<" { yybegin(DECLARATION); return RelAstGrammarTypes.LT; } - ">" { yybegin(DECLARATION); return RelAstGrammarTypes.GT; } - "[" { yybegin(DECLARATION); return RelAstGrammarTypes.LBRACKET; } - "]" { yybegin(DECLARATION); return RelAstGrammarTypes.RBRACKET; } - "/" { yybegin(DECLARATION); return RelAstGrammarTypes.SLASH; } - "?" { yybegin(DECLARATION); return RelAstGrammarTypes.QUESTION_MARK; } - "->" { yybegin(DECLARATION); return RelAstGrammarTypes.RIGHT; } - "<-" { yybegin(DECLARATION); return RelAstGrammarTypes.LEFT; } - "<->" { yybegin(DECLARATION); return RelAstGrammarTypes.BIDIRECTIONAL; } - {ID} { yybegin(DECLARATION); return RelAstGrammarTypes.ID; } - [^] { return TokenType.BAD_CHARACTER; } -} diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammar.java b/src/main/java/org/jastadd/tooling/RelAstGrammar.java deleted file mode 100644 index 2b6f58f..0000000 --- a/src/main/java/org/jastadd/tooling/RelAstGrammar.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.jastadd.tooling; - -import com.intellij.lang.Language; - -public class RelAstGrammar extends Language { - - public static final RelAstGrammar INSTANCE = new RelAstGrammar(); - - private RelAstGrammar() { - super("JastAddGrammar"); - } - -} diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java b/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java deleted file mode 100644 index c531ee6..0000000 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettings.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.jastadd.tooling; - -import com.intellij.psi.codeStyle.CodeStyleSettings; - import com.intellij.psi.codeStyle.CustomCodeStyleSettings; - -public class RelAstGrammarCodeStyleSettings extends CustomCodeStyleSettings { - - public RelAstGrammarCodeStyleSettings(CodeStyleSettings settings) { - super("RelAstGrammarCodeStyleSettings", settings); - } - -} diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java b/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java deleted file mode 100644 index 2f88f73..0000000 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarFormattingModelBuilder.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.jastadd.tooling; - -import com.intellij.formatting.*; -import com.intellij.lang.ASTNode; -import com.intellij.openapi.util.TextRange; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.codeStyle.CommonCodeStyleSettings; -import com.intellij.psi.tree.TokenSet; -import org.jastadd.tooling.parser.RelAstGrammarTypes; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class RelAstGrammarFormattingModelBuilder implements FormattingModelBuilder { - - private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) { - final CommonCodeStyleSettings commonSettings = settings.getCommonSettings(RelAstGrammar.INSTANCE.getID()); - - final TokenSet roleMultiplicityTokens = TokenSet.create(RelAstGrammarTypes.STAR, RelAstGrammarTypes.QUESTION_MARK); - final TokenSet relationDirectionTokens = TokenSet.create(RelAstGrammarTypes.LEFT, RelAstGrammarTypes.RIGHT, RelAstGrammarTypes.BIDIRECTIONAL); - final TokenSet declarationTokens = TokenSet.create(RelAstGrammarTypes.TYPE_DECL, RelAstGrammarTypes.RELATION); - - return new SpacingBuilder(settings, RelAstGrammar.INSTANCE) - .around(RelAstGrammarTypes.ASSIGN).spaceIf(commonSettings.SPACE_AROUND_ASSIGNMENT_OPERATORS) - .before(declarationTokens).none() - .before(RelAstGrammarTypes.SCOL).spaceIf(commonSettings.SPACE_BEFORE_SEMICOLON) - .around(relationDirectionTokens).spaceIf(commonSettings.SPACE_AROUND_RELATIONAL_OPERATORS) - .between(RelAstGrammarTypes.COMPONENT, RelAstGrammarTypes.COMPONENT).spaces(1) - .around(RelAstGrammarTypes.DOT).none() - .before(roleMultiplicityTokens).spaceIf(commonSettings.SPACE_AROUND_UNARY_OPERATOR) - .aroundInside(RelAstGrammarTypes.COL, RelAstGrammarTypes.TYPE_DECL).spaceIf(commonSettings.SPACE_AROUND_ADDITIVE_OPERATORS) - .aroundInside(RelAstGrammarTypes.COL, RelAstGrammarTypes.COMPONENT).none() - .withinPair(RelAstGrammarTypes.LT, RelAstGrammarTypes.GT).spaceIf(commonSettings.SPACE_WITHIN_CAST_PARENTHESES) - .withinPair(RelAstGrammarTypes.LBRACKET, RelAstGrammarTypes.RBRACKET).spaceIf(commonSettings.SPACE_WITHIN_BRACKETS) - .between(declarationTokens, RelAstGrammarTypes.COMMENT).spaces(1) - .afterInside(RelAstGrammarTypes.SLASH, RelAstGrammarTypes.NTA_COMPONENT).none() - .beforeInside(RelAstGrammarTypes.SLASH, RelAstGrammarTypes.NTA_COMPONENT).none(); - } - - @Override - public @NotNull FormattingModel createModel(PsiElement element, CodeStyleSettings settings) { - return FormattingModelProvider - .createFormattingModelForPsiFile(element.getContainingFile(), - new RelAstGrammarBlock(element.getNode(), - Wrap.createWrap(WrapType.NONE, false), - Alignment.createAlignment(), - createSpaceBuilder(settings)), - settings); - } - - @Nullable - @Override - public TextRange getRangeAffectingIndent(PsiFile file, int offset, ASTNode elementAtOffset) { - return null; - } - -} diff --git a/src/main/java/org/jastadd/tooling/grammar/Grammar.java b/src/main/java/org/jastadd/tooling/grammar/Grammar.java new file mode 100644 index 0000000..aa4a627 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/Grammar.java @@ -0,0 +1,13 @@ +package org.jastadd.tooling.grammar; + +import com.intellij.lang.Language; + +public class Grammar extends Language { + + public static final Grammar INSTANCE = new Grammar(); + + private Grammar() { + super("JastAddGrammar"); + } + +} diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java b/src/main/java/org/jastadd/tooling/grammar/GrammarAnnotator.java similarity index 68% rename from src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarAnnotator.java index 91f4e0c..6797345 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarAnnotator.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.codeInspection.ProblemHighlightType; @@ -7,17 +7,17 @@ import com.intellij.lang.annotation.Annotator; import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.editor.DefaultLanguageHighlighterColors; import com.intellij.psi.PsiElement; -import org.jastadd.tooling.psi.RelAstGrammarComponent; -import org.jastadd.tooling.psi.RelAstGrammarTypeReference; +import org.jastadd.tooling.grammar.psi.GrammarComponent; +import org.jastadd.tooling.grammar.psi.GrammarTypeReference; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarAnnotator implements Annotator { +public class GrammarAnnotator implements Annotator { @Override public void annotate(@NotNull final PsiElement element, @NotNull AnnotationHolder holder) { - if (element instanceof RelAstGrammarComponent) { - RelAstGrammarComponent component = (RelAstGrammarComponent) element; + if (element instanceof GrammarComponent) { + GrammarComponent component = (GrammarComponent) element; if (component.getTypeReference() != null && component.getDeclaredName() != null) { String name = component.getDeclaredName().getText(); if (name != null && !name.equals("") && name.equals(component.getTypeReference().getName())) { @@ -26,13 +26,13 @@ public class RelAstGrammarAnnotator implements Annotator { .highlightType(ProblemHighlightType.WEAK_WARNING) .textAttributes(DefaultLanguageHighlighterColors.HIGHLIGHTED_REFERENCE) .tooltip("When the name of a component is the same as its type, it can be omitted.") - .withFix(new RelAstGrammarRemoveRedundantComponentNameFix(component)) + .withFix(new GrammarRemoveRedundantComponentNameFix(component)) .create(); } } - } else if (element instanceof RelAstGrammarTypeReference) { - RelAstGrammarTypeReference reference = (RelAstGrammarTypeReference) element; - if (RelAstGrammarUtil.findTypeDecl(element.getProject(), reference.getName()).isEmpty()) { + } else if (element instanceof GrammarTypeReference) { + GrammarTypeReference reference = (GrammarTypeReference) element; + if (GrammarUtil.findTypeDecl(element.getProject(), reference.getName()).isEmpty()) { holder.newAnnotation(HighlightSeverity.ERROR, "Undefined reference") .range(element.getTextRange()) .highlightType(ProblemHighlightType.ERROR) diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarBlock.java b/src/main/java/org/jastadd/tooling/grammar/GrammarBlock.java similarity index 75% rename from src/main/java/org/jastadd/tooling/RelAstGrammarBlock.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarBlock.java index 7aca9c6..8dffa81 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarBlock.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarBlock.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.formatting.*; @@ -11,12 +11,12 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -public class RelAstGrammarBlock extends AbstractBlock { +public class GrammarBlock extends AbstractBlock { private final SpacingBuilder spacingBuilder; - protected RelAstGrammarBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment, - SpacingBuilder spacingBuilder) { + protected GrammarBlock(@NotNull ASTNode node, @Nullable Wrap wrap, @Nullable Alignment alignment, + SpacingBuilder spacingBuilder) { super(node, wrap, alignment); this.spacingBuilder = spacingBuilder; } @@ -27,7 +27,7 @@ public class RelAstGrammarBlock extends AbstractBlock { ASTNode child = myNode.getFirstChildNode(); while (child != null) { if (child.getElementType() != TokenType.WHITE_SPACE) { - Block block = new RelAstGrammarBlock(child, Wrap.createWrap(WrapType.NONE, false), Alignment.createAlignment(), + Block block = new GrammarBlock(child, Wrap.createWrap(WrapType.NONE, false), Alignment.createAlignment(), spacingBuilder); blocks.add(block); } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarChooseByNameContributor.java b/src/main/java/org/jastadd/tooling/grammar/GrammarChooseByNameContributor.java similarity index 67% rename from src/main/java/org/jastadd/tooling/RelAstGrammarChooseByNameContributor.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarChooseByNameContributor.java index 51ad305..972038e 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarChooseByNameContributor.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarChooseByNameContributor.java @@ -1,22 +1,22 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.navigation.ChooseByNameContributor; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.project.Project; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class RelAstGrammarChooseByNameContributor implements ChooseByNameContributor { +public class GrammarChooseByNameContributor implements ChooseByNameContributor { @NotNull @Override public String @NotNull [] getNames(Project project, boolean includeNonProjectItems) { - List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(project); + List<GrammarTypeDecl> typeDecls = GrammarUtil.findTypeDecl(project); List<String> names = new ArrayList<>(typeDecls.size()); - for (RelAstGrammarTypeDecl typeDecl : typeDecls) { + for (GrammarTypeDecl typeDecl : typeDecls) { if (typeDecl.getName() != null && typeDecl.getName().length() > 0) { names.add(typeDecl.getName()); } @@ -28,7 +28,7 @@ public class RelAstGrammarChooseByNameContributor implements ChooseByNameContrib @Override public NavigationItem @NotNull [] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) { // TODO: include non project items - List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(project, name); + List<GrammarTypeDecl> typeDecls = GrammarUtil.findTypeDecl(project, name); return typeDecls.toArray(new NavigationItem[0]); } diff --git a/src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettings.java b/src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettings.java new file mode 100644 index 0000000..1d1e1fb --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettings.java @@ -0,0 +1,12 @@ +package org.jastadd.tooling.grammar; + +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CustomCodeStyleSettings; + +public class GrammarCodeStyleSettings extends CustomCodeStyleSettings { + + public GrammarCodeStyleSettings(CodeStyleSettings settings) { + super("GrammarCodeStyleSettings", settings); + } + +} diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettingsProvider.java b/src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettingsProvider.java similarity index 56% rename from src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettingsProvider.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettingsProvider.java index ed57139..b41b930 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarCodeStyleSettingsProvider.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarCodeStyleSettingsProvider.java @@ -1,20 +1,20 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.application.options.CodeStyleAbstractConfigurable; - import com.intellij.application.options.CodeStyleAbstractPanel; - import com.intellij.application.options.TabbedLanguageCodeStylePanel; - import com.intellij.psi.codeStyle.CodeStyleConfigurable; - import com.intellij.psi.codeStyle.CodeStyleSettings; - import com.intellij.psi.codeStyle.CodeStyleSettingsProvider; - import com.intellij.psi.codeStyle.CustomCodeStyleSettings; - import org.jetbrains.annotations.NotNull; - import org.jetbrains.annotations.Nullable; +import com.intellij.application.options.CodeStyleAbstractPanel; +import com.intellij.application.options.TabbedLanguageCodeStylePanel; +import com.intellij.psi.codeStyle.CodeStyleConfigurable; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CodeStyleSettingsProvider; +import com.intellij.psi.codeStyle.CustomCodeStyleSettings; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class RelAstGrammarCodeStyleSettingsProvider extends CodeStyleSettingsProvider { +public class GrammarCodeStyleSettingsProvider extends CodeStyleSettingsProvider { @Override public CustomCodeStyleSettings createCustomSettings(CodeStyleSettings settings) { - return new RelAstGrammarCodeStyleSettings(settings); + return new GrammarCodeStyleSettings(settings); } @Nullable @@ -36,7 +36,7 @@ public class RelAstGrammarCodeStyleSettingsProvider extends CodeStyleSettingsPro private static class SimpleCodeStyleMainPanel extends TabbedLanguageCodeStylePanel { public SimpleCodeStyleMainPanel(CodeStyleSettings currentSettings, CodeStyleSettings settings) { - super(RelAstGrammar.INSTANCE, currentSettings, settings); + super(Grammar.INSTANCE, currentSettings, settings); } } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarColorSettingsPage.java b/src/main/java/org/jastadd/tooling/grammar/GrammarColorSettingsPage.java similarity index 50% rename from src/main/java/org/jastadd/tooling/RelAstGrammarColorSettingsPage.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarColorSettingsPage.java index 3300b1e..dd5ee32 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarColorSettingsPage.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarColorSettingsPage.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.openapi.editor.colors.TextAttributesKey; @@ -6,33 +6,34 @@ import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.options.colors.AttributesDescriptor; import com.intellij.openapi.options.colors.ColorDescriptor; import com.intellij.openapi.options.colors.ColorSettingsPage; +import org.jastadd.tooling.util.JastAddIcons; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.Map; -public class RelAstGrammarColorSettingsPage implements ColorSettingsPage { +public class GrammarColorSettingsPage implements ColorSettingsPage { private static final AttributesDescriptor[] DESCRIPTORS = new AttributesDescriptor[]{ - new AttributesDescriptor("Keyword", RelAstGrammarSyntaxHighlighter.KEYWORD), - new AttributesDescriptor("Production Rule Symbol", RelAstGrammarSyntaxHighlighter.ASSIGN), - new AttributesDescriptor("Relation Direction", RelAstGrammarSyntaxHighlighter.RELATON_DIR), - new AttributesDescriptor("Superclass/Component Name", RelAstGrammarSyntaxHighlighter.COL), - new AttributesDescriptor("Comma", RelAstGrammarSyntaxHighlighter.COMMA), - new AttributesDescriptor("Documentation Comment", RelAstGrammarSyntaxHighlighter.DOCCOMMENT), - new AttributesDescriptor("Namespace Qualifier Dot", RelAstGrammarSyntaxHighlighter.DOT), - new AttributesDescriptor("Identifier", RelAstGrammarSyntaxHighlighter.ID), - new AttributesDescriptor("Terminal Symbol Bracket", RelAstGrammarSyntaxHighlighter.ANGLE_BRACKET), - new AttributesDescriptor("Block Comment", RelAstGrammarSyntaxHighlighter.MULTILINECOMMENT), - new AttributesDescriptor("0..1 Multiplicity", RelAstGrammarSyntaxHighlighter.QUESTION_MARK), - new AttributesDescriptor("Optional Bracket", RelAstGrammarSyntaxHighlighter.BRACKET), - new AttributesDescriptor("Semicolon", RelAstGrammarSyntaxHighlighter.SCOL), - new AttributesDescriptor("Line Comment", RelAstGrammarSyntaxHighlighter.SINGLELINECOMMENT), - new AttributesDescriptor("NTA Bracket", RelAstGrammarSyntaxHighlighter.SLASH), - new AttributesDescriptor("Star Multiplicity", RelAstGrammarSyntaxHighlighter.STAR), - new AttributesDescriptor("Bad Value", RelAstGrammarSyntaxHighlighter.BAD_CHARACTER) + new AttributesDescriptor("Keyword", GrammarSyntaxHighlighter.KEYWORD), + new AttributesDescriptor("Production Rule Symbol", GrammarSyntaxHighlighter.ASSIGN), + new AttributesDescriptor("Relation Direction", GrammarSyntaxHighlighter.RELATON_DIR), + new AttributesDescriptor("Superclass/Component Name", GrammarSyntaxHighlighter.COL), + new AttributesDescriptor("Comma", GrammarSyntaxHighlighter.COMMA), + new AttributesDescriptor("Documentation Comment", GrammarSyntaxHighlighter.DOCCOMMENT), + new AttributesDescriptor("Namespace Qualifier Dot", GrammarSyntaxHighlighter.DOT), + new AttributesDescriptor("Identifier", GrammarSyntaxHighlighter.ID), + new AttributesDescriptor("Terminal Symbol Bracket", GrammarSyntaxHighlighter.ANGLE_BRACKET), + new AttributesDescriptor("Block Comment", GrammarSyntaxHighlighter.MULTILINECOMMENT), + new AttributesDescriptor("0..1 Multiplicity", GrammarSyntaxHighlighter.QUESTION_MARK), + new AttributesDescriptor("Optional Bracket", GrammarSyntaxHighlighter.BRACKET), + new AttributesDescriptor("Semicolon", GrammarSyntaxHighlighter.SCOL), + new AttributesDescriptor("Line Comment", GrammarSyntaxHighlighter.SINGLELINECOMMENT), + new AttributesDescriptor("NTA Bracket", GrammarSyntaxHighlighter.SLASH), + new AttributesDescriptor("Star Multiplicity", GrammarSyntaxHighlighter.STAR), + new AttributesDescriptor("Bad Value", GrammarSyntaxHighlighter.BAD_CHARACTER) }; @Nullable @@ -44,7 +45,7 @@ public class RelAstGrammarColorSettingsPage implements ColorSettingsPage { @NotNull @Override public SyntaxHighlighter getHighlighter() { - return new RelAstGrammarSyntaxHighlighter(); + return new GrammarSyntaxHighlighter(); } @NotNull diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarCommenter.java b/src/main/java/org/jastadd/tooling/grammar/GrammarCommenter.java similarity index 78% rename from src/main/java/org/jastadd/tooling/RelAstGrammarCommenter.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarCommenter.java index 7196de8..6d414e9 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarCommenter.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarCommenter.java @@ -1,10 +1,10 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.lang.Commenter; - import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.Nullable; -public class RelAstGrammarCommenter implements Commenter { +public class GrammarCommenter implements Commenter { @Nullable @Override diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarCompletionContributor.java b/src/main/java/org/jastadd/tooling/grammar/GrammarCompletionContributor.java similarity index 77% rename from src/main/java/org/jastadd/tooling/RelAstGrammarCompletionContributor.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarCompletionContributor.java index 0a9d799..ee35690 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarCompletionContributor.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarCompletionContributor.java @@ -1,29 +1,30 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.codeInsight.completion.*; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.patterns.PlatformPatterns; import com.intellij.util.ProcessingContext; -import org.jastadd.tooling.parser.RelAstGrammarTypes; -import org.jastadd.tooling.psi.RelAstGrammarElementFactory; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; -import org.jastadd.tooling.psi.RelAstGrammarTypeReference; +import org.jastadd.tooling.grammar.parser.GrammarTypes; +import org.jastadd.tooling.grammar.psi.GrammarElementFactory; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; +import org.jastadd.tooling.grammar.psi.GrammarTypeReference; +import org.jastadd.tooling.util.JastAddIcons; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarCompletionContributor extends CompletionContributor { +public class GrammarCompletionContributor extends CompletionContributor { public static final String COMPLETION_ELEMENT_SUFFIX = "IntellijIdeaRulezzz"; - public RelAstGrammarCompletionContributor() { + public GrammarCompletionContributor() { // add completion in definition of relations - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID).afterLeaf("rel", "<->", "->", "<-"), + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID).afterLeaf("rel", "<->", "->", "<-"), new CompletionProvider<CompletionParameters>() { public void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet resultSet) { - for (RelAstGrammarTypeDecl decl : RelAstGrammarUtil.findTypeDecl(parameters.getPosition().getProject())) { - RelAstGrammarTypeReference ref = RelAstGrammarElementFactory.createTypeReference(parameters.getPosition().getProject(), decl.getName()); + for (GrammarTypeDecl decl : GrammarUtil.findTypeDecl(parameters.getPosition().getProject())) { + GrammarTypeReference ref = GrammarElementFactory.createTypeReference(parameters.getPosition().getProject(), decl.getName()); resultSet.addElement(LookupElementBuilder.create(ref).withIcon(JastAddIcons.FILE).withTypeText(decl.getContainingFile().getName())); } } @@ -31,10 +32,10 @@ public class RelAstGrammarCompletionContributor extends CompletionContributor { ); // add "* ", "? " after REL ID DOT ID - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID) + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID) .withTextLengthLongerThan(COMPLETION_ELEMENT_SUFFIX.length()) // see https://intellij-support.jetbrains.com/hc/en-us/community/posts/206752355-The-dreaded-IntellijIdeaRulezzz-string .afterLeaf(".") - .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID))) + .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID))) .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf("rel"))), new CompletionProvider<CompletionParameters>() { public void addCompletions(@NotNull CompletionParameters parameters, @@ -48,10 +49,10 @@ public class RelAstGrammarCompletionContributor extends CompletionContributor { ); // add "*", "?" after <- ID DOT ID // add "*", "?" after <-> ID DOT ID - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID) + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID) .withTextLengthLongerThan(COMPLETION_ELEMENT_SUFFIX.length()) // see https://intellij-support.jetbrains.com/hc/en-us/community/posts/206752355-The-dreaded-IntellijIdeaRulezzz-string .afterLeaf(".") - .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID))) + .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID))) .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf("<-", "<->"))), new CompletionProvider<CompletionParameters>() { public void addCompletions(@NotNull CompletionParameters parameters, @@ -64,10 +65,10 @@ public class RelAstGrammarCompletionContributor extends CompletionContributor { } ); // add " -> ", " <-> " after REL ID DOT ID <SPACE> - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID) - .afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID)) + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID) + .afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID)) .afterLeaf(PlatformPatterns.psiElement().afterLeaf(".")) - .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID)))) + .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID)))) .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf("rel")))), new CompletionProvider<CompletionParameters>() { public void addCompletions(@NotNull CompletionParameters parameters, @@ -80,11 +81,11 @@ public class RelAstGrammarCompletionContributor extends CompletionContributor { ); // add " -> ", " <-> " after REL ID DOT ID * <SPACE> // add " -> ", " <-> " after REL ID DOT ID ? <SPACE> - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID) + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID) .afterLeaf("?", "*") - .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID))) + .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID))) .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf("."))) - .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID))))) + .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID))))) .afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf(PlatformPatterns.psiElement().afterLeaf("rel"))))), new CompletionProvider<CompletionParameters>() { public void addCompletions(@NotNull CompletionParameters parameters, @@ -98,7 +99,7 @@ public class RelAstGrammarCompletionContributor extends CompletionContributor { // add "." after REL ID // add "." after <-> ID // add "." after <- ID - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID) + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID) .withTextLengthLongerThan(COMPLETION_ELEMENT_SUFFIX.length()) // see https://intellij-support.jetbrains.com/hc/en-us/community/posts/206752355-The-dreaded-IntellijIdeaRulezzz-string .afterLeaf("rel", "<->", "<-"), new CompletionProvider<CompletionParameters>() { @@ -111,8 +112,8 @@ public class RelAstGrammarCompletionContributor extends CompletionContributor { } ); // add " <- " after REL ID <SPACE> - extend(CompletionType.BASIC, PlatformPatterns.psiElement(RelAstGrammarTypes.ID) - .afterLeaf(PlatformPatterns.psiElement(RelAstGrammarTypes.ID)) + extend(CompletionType.BASIC, PlatformPatterns.psiElement(GrammarTypes.ID) + .afterLeaf(PlatformPatterns.psiElement(GrammarTypes.ID)) .afterLeaf(PlatformPatterns.psiElement().afterLeaf("rel")), new CompletionProvider<CompletionParameters>() { public void addCompletions(@NotNull CompletionParameters parameters, diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarFileType.java b/src/main/java/org/jastadd/tooling/grammar/GrammarFileType.java similarity index 66% rename from src/main/java/org/jastadd/tooling/RelAstGrammarFileType.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarFileType.java index 0b34211..f73d87b 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarFileType.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarFileType.java @@ -1,17 +1,18 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.openapi.fileTypes.LanguageFileType; +import org.jastadd.tooling.util.JastAddIcons; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -public class RelAstGrammarFileType extends LanguageFileType { +public class GrammarFileType extends LanguageFileType { - public static final RelAstGrammarFileType INSTANCE = new RelAstGrammarFileType(); + public static final GrammarFileType INSTANCE = new GrammarFileType(); - private RelAstGrammarFileType() { - super(RelAstGrammar.INSTANCE); + private GrammarFileType() { + super(Grammar.INSTANCE); } @NotNull @@ -32,7 +33,6 @@ public class RelAstGrammarFileType extends LanguageFileType { return "relast"; } - @Nullable @Override public Icon getIcon() { diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarFindUsageProvider.java b/src/main/java/org/jastadd/tooling/grammar/GrammarFindUsageProvider.java similarity index 59% rename from src/main/java/org/jastadd/tooling/RelAstGrammarFindUsageProvider.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarFindUsageProvider.java index 4133679..a7c2543 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarFindUsageProvider.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarFindUsageProvider.java @@ -1,31 +1,31 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.lang.cacheBuilder.DefaultWordsScanner; import com.intellij.lang.cacheBuilder.WordsScanner; import com.intellij.lang.findUsages.FindUsagesProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.tree.TokenSet; -import org.jastadd.tooling.lexer.RelAstGrammarFlexAdapter; -import org.jastadd.tooling.parser.RelAstGrammarTypes; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; +import org.jastadd.tooling.grammar.lexer.GrammarLexerAdapter; +import org.jastadd.tooling.grammar.parser.GrammarTypes; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class RelAstGrammarFindUsageProvider implements FindUsagesProvider { +public class GrammarFindUsageProvider implements FindUsagesProvider { @Nullable @Override public WordsScanner getWordsScanner() { // TODO comments are not working - return new DefaultWordsScanner(new RelAstGrammarFlexAdapter(), - TokenSet.create(RelAstGrammarTypes.ID), - TokenSet.create(RelAstGrammarTypes.MULTILINECOMMENT, RelAstGrammarTypes.DOCCOMMENT, RelAstGrammarTypes.SINGLELINECOMMENT), + return new DefaultWordsScanner(new GrammarLexerAdapter(), + TokenSet.create(GrammarTypes.ID), + TokenSet.create(GrammarTypes.MULTILINECOMMENT, GrammarTypes.DOCCOMMENT, GrammarTypes.SINGLELINECOMMENT), TokenSet.EMPTY); } @Override public boolean canFindUsagesFor(@NotNull PsiElement psiElement) { - return psiElement instanceof RelAstGrammarTypeDecl; // was: PsiNamedElement + return psiElement instanceof GrammarTypeDecl; // was: PsiNamedElement } @Nullable @@ -37,7 +37,7 @@ public class RelAstGrammarFindUsageProvider implements FindUsagesProvider { @NotNull @Override public String getType(@NotNull PsiElement element) { - if (element instanceof RelAstGrammarTypeDecl) { + if (element instanceof GrammarTypeDecl) { return "JastAdd Nonterminal Type"; } else { return ""; @@ -47,8 +47,8 @@ public class RelAstGrammarFindUsageProvider implements FindUsagesProvider { @NotNull @Override public String getDescriptiveName(@NotNull PsiElement element) { - if (element instanceof RelAstGrammarTypeDecl) { - RelAstGrammarTypeDecl decl = (RelAstGrammarTypeDecl) element; + if (element instanceof GrammarTypeDecl) { + GrammarTypeDecl decl = (GrammarTypeDecl) element; if (decl.getName() != null) { return decl.getName(); } @@ -59,7 +59,7 @@ public class RelAstGrammarFindUsageProvider implements FindUsagesProvider { @NotNull @Override public String getNodeText(@NotNull PsiElement element, boolean useFullName) { - if (element instanceof RelAstGrammarTypeDecl) { + if (element instanceof GrammarTypeDecl) { return element.getText(); } else { return ""; diff --git a/src/main/java/org/jastadd/tooling/grammar/GrammarFormattingModelBuilder.java b/src/main/java/org/jastadd/tooling/grammar/GrammarFormattingModelBuilder.java new file mode 100644 index 0000000..1b5ec38 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarFormattingModelBuilder.java @@ -0,0 +1,58 @@ +package org.jastadd.tooling.grammar; + +import com.intellij.formatting.*; +import com.intellij.lang.ASTNode; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.codeStyle.CommonCodeStyleSettings; +import com.intellij.psi.tree.TokenSet; +import org.jastadd.tooling.grammar.parser.GrammarTypes; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class GrammarFormattingModelBuilder implements FormattingModelBuilder { + + private static SpacingBuilder createSpaceBuilder(CodeStyleSettings settings) { + final CommonCodeStyleSettings commonSettings = settings.getCommonSettings(Grammar.INSTANCE.getID()); + + final TokenSet roleMultiplicityTokens = TokenSet.create(GrammarTypes.STAR, GrammarTypes.QUESTION_MARK); + final TokenSet relationDirectionTokens = TokenSet.create(GrammarTypes.LEFT, GrammarTypes.RIGHT, GrammarTypes.BIDIRECTIONAL); + final TokenSet declarationTokens = TokenSet.create(GrammarTypes.TYPE_DECL, GrammarTypes.RELATION); + + return new SpacingBuilder(settings, Grammar.INSTANCE) + .around(GrammarTypes.ASSIGN).spaceIf(commonSettings.SPACE_AROUND_ASSIGNMENT_OPERATORS) + .before(declarationTokens).none() + .before(GrammarTypes.SCOL).spaceIf(commonSettings.SPACE_BEFORE_SEMICOLON) + .around(relationDirectionTokens).spaceIf(commonSettings.SPACE_AROUND_RELATIONAL_OPERATORS) + .between(GrammarTypes.COMPONENT, GrammarTypes.COMPONENT).spaces(1) + .around(GrammarTypes.DOT).none() + .before(roleMultiplicityTokens).spaceIf(commonSettings.SPACE_AROUND_UNARY_OPERATOR) + .aroundInside(GrammarTypes.COL, GrammarTypes.TYPE_DECL).spaceIf(commonSettings.SPACE_AROUND_ADDITIVE_OPERATORS) + .aroundInside(GrammarTypes.COL, GrammarTypes.COMPONENT).none() + .withinPair(GrammarTypes.LT, GrammarTypes.GT).spaceIf(commonSettings.SPACE_WITHIN_CAST_PARENTHESES) + .withinPair(GrammarTypes.LBRACKET, GrammarTypes.RBRACKET).spaceIf(commonSettings.SPACE_WITHIN_BRACKETS) + .between(declarationTokens, GrammarTypes.COMMENT).spaces(1) + .afterInside(GrammarTypes.SLASH, GrammarTypes.NTA_COMPONENT).none() + .beforeInside(GrammarTypes.SLASH, GrammarTypes.NTA_COMPONENT).none(); + } + + @Override + public @NotNull FormattingModel createModel(PsiElement element, CodeStyleSettings settings) { + return FormattingModelProvider + .createFormattingModelForPsiFile(element.getContainingFile(), + new GrammarBlock(element.getNode(), + Wrap.createWrap(WrapType.NONE, false), + Alignment.createAlignment(), + createSpaceBuilder(settings)), + settings); + } + + @Nullable + @Override + public TextRange getRangeAffectingIndent(PsiFile file, int offset, ASTNode elementAtOffset) { + return null; + } + +} diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarJavaAnnotator.java b/src/main/java/org/jastadd/tooling/grammar/GrammarJavaAnnotator.java similarity index 89% rename from src/main/java/org/jastadd/tooling/RelAstGrammarJavaAnnotator.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarJavaAnnotator.java index 5beaeff..3b409aa 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarJavaAnnotator.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarJavaAnnotator.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.codeInspection.ProblemHighlightType; @@ -10,16 +10,15 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.javadoc.PsiDocTag; -import org.jastadd.tooling.psi.RelAstGrammarComponent; import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.Optional; import java.util.stream.Collectors; -import static org.jastadd.tooling.RelAstGrammarUtil.asReferenceToTypeDecl; +import static org.jastadd.tooling.grammar.GrammarUtil.asReferenceToTypeDecl; -public class RelAstGrammarJavaAnnotator implements Annotator { +public class GrammarJavaAnnotator implements Annotator { @Override public void annotate(@NotNull final PsiElement element, @NotNull AnnotationHolder holder) { diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarLanguageCodeStyleSettingsProvider.java b/src/main/java/org/jastadd/tooling/grammar/GrammarLanguageCodeStyleSettingsProvider.java similarity index 93% rename from src/main/java/org/jastadd/tooling/RelAstGrammarLanguageCodeStyleSettingsProvider.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarLanguageCodeStyleSettingsProvider.java index 51e717e..06f77cb 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarLanguageCodeStyleSettingsProvider.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarLanguageCodeStyleSettingsProvider.java @@ -1,16 +1,16 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.lang.Language; import com.intellij.psi.codeStyle.CodeStyleSettingsCustomizable; import com.intellij.psi.codeStyle.LanguageCodeStyleSettingsProvider; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider { +public class GrammarLanguageCodeStyleSettingsProvider extends LanguageCodeStyleSettingsProvider { @NotNull @Override public Language getLanguage() { - return RelAstGrammar.INSTANCE; + return Grammar.INSTANCE; } @Override diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarLineMarkerProvider.java b/src/main/java/org/jastadd/tooling/grammar/GrammarLineMarkerProvider.java similarity index 74% rename from src/main/java/org/jastadd/tooling/RelAstGrammarLineMarkerProvider.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarLineMarkerProvider.java index 1e87008..169e729 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarLineMarkerProvider.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarLineMarkerProvider.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.codeInsight.daemon.RelatedItemLineMarkerInfo; import com.intellij.codeInsight.daemon.RelatedItemLineMarkerProvider; @@ -6,16 +6,17 @@ import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiIdentifier; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; +import org.jastadd.tooling.util.JastAddIcons; import org.jetbrains.annotations.NotNull; import java.util.Collection; import java.util.List; import java.util.Optional; -import static org.jastadd.tooling.RelAstGrammarUtil.asReferenceToTypeDecl; +import static org.jastadd.tooling.grammar.GrammarUtil.asReferenceToTypeDecl; -public class RelAstGrammarLineMarkerProvider extends RelatedItemLineMarkerProvider { +public class GrammarLineMarkerProvider extends RelatedItemLineMarkerProvider { @Override protected void collectNavigationMarkers(@NotNull PsiElement element, @@ -32,7 +33,7 @@ public class RelAstGrammarLineMarkerProvider extends RelatedItemLineMarkerProvid } // Get the list of typeDecls for given key - List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(element.getProject(), classOptional.get().getName()); + List<GrammarTypeDecl> typeDecls = GrammarUtil.findTypeDecl(element.getProject(), classOptional.get().getName()); if (!typeDecls.isEmpty()) { NavigationGutterIconBuilder<PsiElement> builder = NavigationGutterIconBuilder.create(JastAddIcons.FILE) diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarRefactoringSupportProvider.java b/src/main/java/org/jastadd/tooling/grammar/GrammarRefactoringSupportProvider.java similarity index 60% rename from src/main/java/org/jastadd/tooling/RelAstGrammarRefactoringSupportProvider.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarRefactoringSupportProvider.java index ae38c46..1e70ce5 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarRefactoringSupportProvider.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarRefactoringSupportProvider.java @@ -1,20 +1,20 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.lang.refactoring.RefactoringSupportProvider; import com.intellij.psi.PsiElement; -import org.jastadd.tooling.psi.RelAstGrammarDeclaredName; -import org.jastadd.tooling.psi.RelAstGrammarTypeReference; +import org.jastadd.tooling.grammar.psi.GrammarDeclaredName; +import org.jastadd.tooling.grammar.psi.GrammarTypeReference; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class RelAstGrammarRefactoringSupportProvider extends RefactoringSupportProvider { +public class GrammarRefactoringSupportProvider extends RefactoringSupportProvider { @Override public boolean isMemberInplaceRenameAvailable(@NotNull PsiElement elementToRename, @Nullable PsiElement context) { // in-place rename is still not available since not all requirements are met // see https://intellij-support.jetbrains.com/hc/en-us/community/posts/360006918740-How-do-I-enable-in-place-rename-Renaming-via-dialog-works-fine- - return (elementToRename instanceof RelAstGrammarDeclaredName) || (elementToRename instanceof RelAstGrammarTypeReference); + return (elementToRename instanceof GrammarDeclaredName) || (elementToRename instanceof GrammarTypeReference); } } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarReference.java b/src/main/java/org/jastadd/tooling/grammar/GrammarReference.java similarity index 72% rename from src/main/java/org/jastadd/tooling/RelAstGrammarReference.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarReference.java index ae8f873..3c6fc4b 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarReference.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarReference.java @@ -1,22 +1,23 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; +import org.jastadd.tooling.util.JastAddIcons; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -public class RelAstGrammarReference extends PsiReferenceBase<PsiElement> implements PsiPolyVariantReference { +public class GrammarReference extends PsiReferenceBase<PsiElement> implements PsiPolyVariantReference { private final String key; - public RelAstGrammarReference(@NotNull PsiElement element, TextRange textRange) { + public GrammarReference(@NotNull PsiElement element, TextRange textRange) { super(element, textRange); key = element.getText().substring(textRange.getStartOffset(), textRange.getEndOffset()); } @@ -25,9 +26,9 @@ public class RelAstGrammarReference extends PsiReferenceBase<PsiElement> impleme @Override public ResolveResult @NotNull [] multiResolve(boolean incompleteCode) { Project project = myElement.getProject(); - final List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(project, key); + final List<GrammarTypeDecl> typeDecls = GrammarUtil.findTypeDecl(project, key); List<ResolveResult> results = new ArrayList<>(); - for (RelAstGrammarTypeDecl typeDecl : typeDecls) { + for (GrammarTypeDecl typeDecl : typeDecls) { results.add(new PsiElementResolveResult(typeDecl)); } return results.toArray(new ResolveResult[0]); @@ -44,9 +45,9 @@ public class RelAstGrammarReference extends PsiReferenceBase<PsiElement> impleme @Override public Object @NotNull [] getVariants() { Project project = myElement.getProject(); - List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(project); + List<GrammarTypeDecl> typeDecls = GrammarUtil.findTypeDecl(project); List<LookupElement> variants = new ArrayList<>(); - for (final RelAstGrammarTypeDecl typeDecl : typeDecls) { + for (final GrammarTypeDecl typeDecl : typeDecls) { if (typeDecl.getName() != null && typeDecl.getName().length() > 0) { variants.add(LookupElementBuilder .create(typeDecl).withIcon(JastAddIcons.FILE) diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarReferenceContributor.java b/src/main/java/org/jastadd/tooling/grammar/GrammarReferenceContributor.java similarity index 69% rename from src/main/java/org/jastadd/tooling/RelAstGrammarReferenceContributor.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarReferenceContributor.java index 326b075..728058c 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarReferenceContributor.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarReferenceContributor.java @@ -1,28 +1,28 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.openapi.util.TextRange; import com.intellij.patterns.PlatformPatterns; import com.intellij.psi.*; import com.intellij.util.ProcessingContext; -import org.jastadd.tooling.psi.RelAstGrammarTypeReference; +import org.jastadd.tooling.grammar.psi.GrammarTypeReference; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarReferenceContributor extends PsiReferenceContributor { +public class GrammarReferenceContributor extends PsiReferenceContributor { @Override public void registerReferenceProviders(@NotNull PsiReferenceRegistrar registrar) { - registrar.registerReferenceProvider(PlatformPatterns.psiElement(RelAstGrammarTypeReference.class), + registrar.registerReferenceProvider(PlatformPatterns.psiElement(GrammarTypeReference.class), new PsiReferenceProvider() { @NotNull @Override public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { - RelAstGrammarTypeReference typeReference = (RelAstGrammarTypeReference) element; + GrammarTypeReference typeReference = (GrammarTypeReference) element; String value = typeReference.getText(); if (value != null) { TextRange range = new TextRange(0, value.length()); - return new PsiReference[]{new RelAstGrammarReference(element, range)}; + return new PsiReference[]{new GrammarReference(element, range)}; } return PsiReference.EMPTY_ARRAY; } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarRemoveRedundantComponentNameFix.java b/src/main/java/org/jastadd/tooling/grammar/GrammarRemoveRedundantComponentNameFix.java similarity index 72% rename from src/main/java/org/jastadd/tooling/RelAstGrammarRemoveRedundantComponentNameFix.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarRemoveRedundantComponentNameFix.java index 01a095d..b906a76 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarRemoveRedundantComponentNameFix.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarRemoveRedundantComponentNameFix.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.codeInsight.intention.impl.BaseIntentionAction; import com.intellij.openapi.editor.Editor; @@ -6,15 +6,15 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.util.IncorrectOperationException; -import org.jastadd.tooling.parser.RelAstGrammarTypes; -import org.jastadd.tooling.psi.RelAstGrammarComponent; +import org.jastadd.tooling.grammar.parser.GrammarTypes; +import org.jastadd.tooling.grammar.psi.GrammarComponent; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarRemoveRedundantComponentNameFix extends BaseIntentionAction { +public class GrammarRemoveRedundantComponentNameFix extends BaseIntentionAction { - private final RelAstGrammarComponent component; + private final GrammarComponent component; - public RelAstGrammarRemoveRedundantComponentNameFix(RelAstGrammarComponent component) { + public GrammarRemoveRedundantComponentNameFix(GrammarComponent component) { this.component = component; } @@ -40,7 +40,7 @@ public class RelAstGrammarRemoveRedundantComponentNameFix extends BaseIntentionA IncorrectOperationException { PsiElement first = component.getDeclaredName(); PsiElement last = component.getDeclaredName(); - while (last != null && last.getNode().getElementType() != RelAstGrammarTypes.COL) { + while (last != null && last.getNode().getElementType() != GrammarTypes.COL) { last = last.getNextSibling(); } if (last == null) { diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewElement.java b/src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewElement.java similarity index 68% rename from src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewElement.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewElement.java index dd6e74d..013f450 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewElement.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewElement.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.ide.projectView.PresentationData; import com.intellij.ide.structureView.StructureViewTreeElement; @@ -7,19 +7,19 @@ import com.intellij.ide.util.treeView.smartTree.TreeElement; import com.intellij.navigation.ItemPresentation; import com.intellij.psi.NavigatablePsiElement; import com.intellij.psi.util.PsiTreeUtil; -import org.jastadd.tooling.psi.RelAstGrammarFile; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; -import org.jastadd.tooling.psi.impl.RelAstGrammarTypeDeclImpl; +import org.jastadd.tooling.grammar.psi.GrammarFile; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; +import org.jastadd.tooling.grammar.psi.impl.GrammarTypeDeclImpl; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class RelAstGrammarStructureViewElement implements StructureViewTreeElement, SortableTreeElement { +public class GrammarStructureViewElement implements StructureViewTreeElement, SortableTreeElement { private final NavigatablePsiElement myElement; - public RelAstGrammarStructureViewElement(NavigatablePsiElement element) { + public GrammarStructureViewElement(NavigatablePsiElement element) { this.myElement = element; } @@ -60,11 +60,11 @@ public class RelAstGrammarStructureViewElement implements StructureViewTreeEleme @NotNull @Override public TreeElement @NotNull [] getChildren() { - if (myElement instanceof RelAstGrammarFile) { - List<RelAstGrammarTypeDecl> properties = PsiTreeUtil.getChildrenOfTypeAsList(myElement, RelAstGrammarTypeDecl.class); + if (myElement instanceof GrammarFile) { + List<GrammarTypeDecl> properties = PsiTreeUtil.getChildrenOfTypeAsList(myElement, GrammarTypeDecl.class); List<TreeElement> treeElements = new ArrayList<>(properties.size()); - for (RelAstGrammarTypeDecl property : properties) { - treeElements.add(new RelAstGrammarStructureViewElement((RelAstGrammarTypeDeclImpl) property)); + for (GrammarTypeDecl property : properties) { + treeElements.add(new GrammarStructureViewElement((GrammarTypeDeclImpl) property)); } return treeElements.toArray(new TreeElement[0]); } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewFactory.java b/src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewFactory.java similarity index 80% rename from src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewFactory.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewFactory.java index 23b14e4..1262848 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewFactory.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewFactory.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.ide.structureView.StructureViewModel; @@ -9,7 +9,7 @@ import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class RelAstGrammarStructureViewFactory implements PsiStructureViewFactory { +public class GrammarStructureViewFactory implements PsiStructureViewFactory { @Nullable @Override @@ -18,7 +18,7 @@ public class RelAstGrammarStructureViewFactory implements PsiStructureViewFactor @NotNull @Override public StructureViewModel createStructureViewModel(@Nullable Editor editor) { - return new RelAstGrammarStructureViewModel(psiFile); + return new GrammarStructureViewModel(psiFile); } }; } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewModel.java b/src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewModel.java similarity index 65% rename from src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewModel.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewModel.java index 9f164f0..98994e4 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarStructureViewModel.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarStructureViewModel.java @@ -1,18 +1,18 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.ide.structureView.StructureViewModel; import com.intellij.ide.structureView.StructureViewModelBase; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.util.treeView.smartTree.Sorter; import com.intellij.psi.PsiFile; -import org.jastadd.tooling.psi.RelAstGrammarFile; +import org.jastadd.tooling.grammar.psi.GrammarFile; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarStructureViewModel extends StructureViewModelBase implements +public class GrammarStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider { - public RelAstGrammarStructureViewModel(PsiFile psiFile) { - super(psiFile, new RelAstGrammarStructureViewElement(psiFile)); + public GrammarStructureViewModel(PsiFile psiFile) { + super(psiFile, new GrammarStructureViewElement(psiFile)); } @NotNull @@ -28,7 +28,7 @@ public class RelAstGrammarStructureViewModel extends StructureViewModelBase impl @Override public boolean isAlwaysLeaf(StructureViewTreeElement element) { - return element instanceof RelAstGrammarFile; + return element instanceof GrammarFile; } } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarSyntaxHighlighter.java b/src/main/java/org/jastadd/tooling/grammar/GrammarSyntaxHighlighter.java similarity index 77% rename from src/main/java/org/jastadd/tooling/RelAstGrammarSyntaxHighlighter.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarSyntaxHighlighter.java index 23bc610..31dda53 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarSyntaxHighlighter.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarSyntaxHighlighter.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.lexer.Lexer; @@ -8,13 +8,13 @@ import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.fileTypes.SyntaxHighlighterBase; import com.intellij.psi.TokenType; import com.intellij.psi.tree.IElementType; -import org.jastadd.tooling.lexer.RelAstGrammarFlexAdapter; -import org.jastadd.tooling.parser.RelAstGrammarTypes; +import org.jastadd.tooling.grammar.lexer.GrammarLexerAdapter; +import org.jastadd.tooling.grammar.parser.GrammarTypes; import org.jetbrains.annotations.NotNull; import static com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey; -public class RelAstGrammarSyntaxHighlighter extends SyntaxHighlighterBase { +public class GrammarSyntaxHighlighter extends SyntaxHighlighterBase { public static final TextAttributesKey KEYWORD = createTextAttributesKey("RELAST_KEYWORD", DefaultLanguageHighlighterColors.KEYWORD); public static final TextAttributesKey ASSIGN = createTextAttributesKey("RELAST_ASSIGN", DefaultLanguageHighlighterColors.OPERATION_SIGN); @@ -57,54 +57,54 @@ public class RelAstGrammarSyntaxHighlighter extends SyntaxHighlighterBase { @NotNull @Override public Lexer getHighlightingLexer() { - return new RelAstGrammarFlexAdapter(); + return new GrammarLexerAdapter(); } @NotNull @Override public TextAttributesKey @NotNull [] getTokenHighlights(IElementType tokenType) { - if (tokenType.equals(RelAstGrammarTypes.ABSTRACT)) { + if (tokenType.equals(GrammarTypes.ABSTRACT)) { return KEYWORD_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.ASSIGN)) { + } else if (tokenType.equals(GrammarTypes.ASSIGN)) { return ASSIGN_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.BIDIRECTIONAL)) { + } else if (tokenType.equals(GrammarTypes.BIDIRECTIONAL)) { return RELATION_DIR_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.COL)) { + } else if (tokenType.equals(GrammarTypes.COL)) { return COL_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.COMMA)) { + } else if (tokenType.equals(GrammarTypes.COMMA)) { return COMMA_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.DOCCOMMENT)) { + } else if (tokenType.equals(GrammarTypes.DOCCOMMENT)) { return DOCCOMMENT_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.DOT)) { + } else if (tokenType.equals(GrammarTypes.DOT)) { return DOT_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.GT)) { + } else if (tokenType.equals(GrammarTypes.GT)) { return ANGLE_BRACKET_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.ID)) { + } else if (tokenType.equals(GrammarTypes.ID)) { return ID_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.LBRACKET)) { + } else if (tokenType.equals(GrammarTypes.LBRACKET)) { return BRACKET_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.LEFT)) { + } else if (tokenType.equals(GrammarTypes.LEFT)) { return RELATION_DIR_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.LT)) { + } else if (tokenType.equals(GrammarTypes.LT)) { return ANGLE_BRACKET_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.MULTILINECOMMENT)) { + } else if (tokenType.equals(GrammarTypes.MULTILINECOMMENT)) { return MULTILINECOMMENT_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.QUESTION_MARK)) { + } else if (tokenType.equals(GrammarTypes.QUESTION_MARK)) { return QUESTION_MARK_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.RBRACKET)) { + } else if (tokenType.equals(GrammarTypes.RBRACKET)) { return BRACKET_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.REL)) { + } else if (tokenType.equals(GrammarTypes.REL)) { return KEYWORD_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.RIGHT)) { + } else if (tokenType.equals(GrammarTypes.RIGHT)) { return RELATION_DIR_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.SCOL)) { + } else if (tokenType.equals(GrammarTypes.SCOL)) { return SCOL_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.SINGLELINECOMMENT)) { + } else if (tokenType.equals(GrammarTypes.SINGLELINECOMMENT)) { return SINGLELINECOMMENT_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.SLASH)) { + } else if (tokenType.equals(GrammarTypes.SLASH)) { return SLASH_KEYS; - } else if (tokenType.equals(RelAstGrammarTypes.STAR)) { + } else if (tokenType.equals(GrammarTypes.STAR)) { return STAR_KEYS; } else if (tokenType.equals(TokenType.BAD_CHARACTER)) { return BAD_CHAR_KEYS; diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarSyntaxHighlighterFactory.java b/src/main/java/org/jastadd/tooling/grammar/GrammarSyntaxHighlighterFactory.java similarity index 69% rename from src/main/java/org/jastadd/tooling/RelAstGrammarSyntaxHighlighterFactory.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarSyntaxHighlighterFactory.java index 2860248..0fb350f 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarSyntaxHighlighterFactory.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarSyntaxHighlighterFactory.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.openapi.fileTypes.SyntaxHighlighter; import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory; @@ -6,12 +6,12 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarSyntaxHighlighterFactory extends SyntaxHighlighterFactory { +public class GrammarSyntaxHighlighterFactory extends SyntaxHighlighterFactory { @NotNull @Override public SyntaxHighlighter getSyntaxHighlighter(Project project, VirtualFile virtualFile) { - return new RelAstGrammarSyntaxHighlighter(); + return new GrammarSyntaxHighlighter(); } } diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarUtil.java b/src/main/java/org/jastadd/tooling/grammar/GrammarUtil.java similarity index 72% rename from src/main/java/org/jastadd/tooling/RelAstGrammarUtil.java rename to src/main/java/org/jastadd/tooling/grammar/GrammarUtil.java index 8a480a0..9c4f0cf 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarUtil.java +++ b/src/main/java/org/jastadd/tooling/grammar/GrammarUtil.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.grammar; import com.intellij.openapi.project.Project; @@ -9,16 +9,16 @@ import com.intellij.psi.javadoc.PsiDocTag; import com.intellij.psi.search.FileTypeIndex; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.PsiTreeUtil; -import org.jastadd.tooling.psi.RelAstGrammarFile; -import org.jastadd.tooling.psi.RelAstGrammarTypeDecl; +import org.jastadd.tooling.grammar.psi.GrammarFile; +import org.jastadd.tooling.grammar.psi.GrammarTypeDecl; import org.jetbrains.annotations.NotNull; import java.util.*; -public class RelAstGrammarUtil { +public class GrammarUtil { - private RelAstGrammarUtil() { + private GrammarUtil() { // appease SonarLint java:S1118 throw new IllegalStateException("Utility class"); } @@ -30,17 +30,17 @@ public class RelAstGrammarUtil { * @param name to check * @return matching TypeDecls */ - public static List<RelAstGrammarTypeDecl> findTypeDecl(Project project, String name) { - List<RelAstGrammarTypeDecl> result = new ArrayList<>(); + public static List<GrammarTypeDecl> findTypeDecl(Project project, String name) { + List<GrammarTypeDecl> result = new ArrayList<>(); Collection<VirtualFile> virtualFiles = - FileTypeIndex.getFiles(RelAstGrammarFileType.INSTANCE, GlobalSearchScope.allScope(project)); + FileTypeIndex.getFiles(GrammarFileType.INSTANCE, GlobalSearchScope.allScope(project)); for (VirtualFile virtualFile : virtualFiles) { - RelAstGrammarFile simpleFile = (RelAstGrammarFile) PsiManager.getInstance(project).findFile(virtualFile); + GrammarFile simpleFile = (GrammarFile) PsiManager.getInstance(project).findFile(virtualFile); if (simpleFile != null) { // TODO check if file is ignored or generated! - RelAstGrammarTypeDecl[] typeDecls = PsiTreeUtil.getChildrenOfType(simpleFile, RelAstGrammarTypeDecl.class); + GrammarTypeDecl[] typeDecls = PsiTreeUtil.getChildrenOfType(simpleFile, GrammarTypeDecl.class); if (typeDecls != null) { - for (RelAstGrammarTypeDecl typeDecl : typeDecls) { + for (GrammarTypeDecl typeDecl : typeDecls) { if (name.equals(typeDecl.getName())) { result.add(typeDecl); } @@ -57,15 +57,15 @@ public class RelAstGrammarUtil { * @param project current project * @return all TypeDecls */ - public static List<RelAstGrammarTypeDecl> findTypeDecl(Project project) { - List<RelAstGrammarTypeDecl> result = new ArrayList<>(); + public static List<GrammarTypeDecl> findTypeDecl(Project project) { + List<GrammarTypeDecl> result = new ArrayList<>(); Collection<VirtualFile> virtualFiles = - FileTypeIndex.getFiles(RelAstGrammarFileType.INSTANCE, GlobalSearchScope.allScope(project)); + FileTypeIndex.getFiles(GrammarFileType.INSTANCE, GlobalSearchScope.allScope(project)); for (VirtualFile virtualFile : virtualFiles) { - RelAstGrammarFile simpleFile = (RelAstGrammarFile) PsiManager.getInstance(project).findFile(virtualFile); + GrammarFile simpleFile = (GrammarFile) PsiManager.getInstance(project).findFile(virtualFile); if (simpleFile != null) { // TODO check if file is ignored or generated! - RelAstGrammarTypeDecl[] typeDecls = PsiTreeUtil.getChildrenOfType(simpleFile, RelAstGrammarTypeDecl.class); + GrammarTypeDecl[] typeDecls = PsiTreeUtil.getChildrenOfType(simpleFile, GrammarTypeDecl.class); if (typeDecls != null) { result.addAll(Arrays.asList(typeDecls)); } diff --git a/src/main/java/org/jastadd/tooling/grammar/lexer/GrammarLexerAdapter.java b/src/main/java/org/jastadd/tooling/grammar/lexer/GrammarLexerAdapter.java new file mode 100644 index 0000000..1087854 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/lexer/GrammarLexerAdapter.java @@ -0,0 +1,11 @@ +package org.jastadd.tooling.grammar.lexer; + +import com.intellij.lexer.FlexAdapter; + +public class GrammarLexerAdapter extends FlexAdapter { + + public GrammarLexerAdapter() { + super(new GrammarLexer(null)); + } + +} diff --git a/src/main/java/org/jastadd/tooling/parser/RelAstGrammarParserDefinition.java b/src/main/java/org/jastadd/tooling/grammar/parser/GrammarParserDefinition.java similarity index 69% rename from src/main/java/org/jastadd/tooling/parser/RelAstGrammarParserDefinition.java rename to src/main/java/org/jastadd/tooling/grammar/parser/GrammarParserDefinition.java index 2f47290..5f2ee17 100644 --- a/src/main/java/org/jastadd/tooling/parser/RelAstGrammarParserDefinition.java +++ b/src/main/java/org/jastadd/tooling/grammar/parser/GrammarParserDefinition.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling.parser; +package org.jastadd.tooling.grammar.parser; import com.intellij.lang.ASTNode; import com.intellij.lang.ParserDefinition; @@ -11,23 +11,23 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.TokenType; import com.intellij.psi.tree.IFileElementType; import com.intellij.psi.tree.TokenSet; -import org.jastadd.tooling.RelAstGrammar; -import org.jastadd.tooling.lexer.RelAstGrammarFlexAdapter; -import org.jastadd.tooling.psi.RelAstGrammarFile; +import org.jastadd.tooling.grammar.Grammar; +import org.jastadd.tooling.grammar.lexer.GrammarLexerAdapter; +import org.jastadd.tooling.grammar.psi.GrammarFile; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarParserDefinition implements ParserDefinition { +public class GrammarParserDefinition implements ParserDefinition { public static final TokenSet WHITE_SPACES = TokenSet.create(TokenType.WHITE_SPACE); - public static final TokenSet COMMENTS = TokenSet.create(RelAstGrammarTypes.SINGLELINECOMMENT, RelAstGrammarTypes.DOCCOMMENT, RelAstGrammarTypes.MULTILINECOMMENT); + public static final TokenSet COMMENTS = TokenSet.create(GrammarTypes.SINGLELINECOMMENT, GrammarTypes.DOCCOMMENT, GrammarTypes.MULTILINECOMMENT); - public static final IFileElementType FILE = new IFileElementType(RelAstGrammar.INSTANCE); + public static final IFileElementType FILE = new IFileElementType(Grammar.INSTANCE); @NotNull @Override public Lexer createLexer(Project project) { - return new RelAstGrammarFlexAdapter(); + return new GrammarLexerAdapter(); } @NotNull @@ -51,7 +51,7 @@ public class RelAstGrammarParserDefinition implements ParserDefinition { @NotNull @Override public PsiParser createParser(final Project project) { - return new RelAstGrammarParser(); + return new GrammarParser(); } @Override @@ -61,7 +61,7 @@ public class RelAstGrammarParserDefinition implements ParserDefinition { @Override public PsiFile createFile(FileViewProvider viewProvider) { - return new RelAstGrammarFile(viewProvider); + return new GrammarFile(viewProvider); } @Override @@ -72,7 +72,7 @@ public class RelAstGrammarParserDefinition implements ParserDefinition { @NotNull @Override public PsiElement createElement(ASTNode node) { - return RelAstGrammarTypes.Factory.createElement(node); + return GrammarTypes.Factory.createElement(node); } } diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementFactory.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementFactory.java new file mode 100644 index 0000000..05a33fa --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementFactory.java @@ -0,0 +1,31 @@ +package org.jastadd.tooling.grammar.psi; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFileFactory; +import org.jastadd.tooling.grammar.GrammarFileType; +import org.jastadd.tooling.grammar.parser.GrammarTypes; + +import java.util.Objects; + +public class GrammarElementFactory { + + private GrammarElementFactory() { + throw new IllegalStateException("Utility class"); + } + + public static GrammarDeclaredName createDeclaredName(Project project, String name) { + final GrammarFile file = createFile(project, name + ";"); + return (GrammarDeclaredName) file.getFirstChild().getFirstChild(); + } + + public static GrammarTypeReference createTypeReference(Project project, String name) { + final GrammarFile file = createFile(project, "X : " + name + ";"); + return (GrammarTypeReference) (Objects.requireNonNull(file.getFirstChild().getNode().findChildByType(GrammarTypes.TYPE_REFERENCE)).getPsi()); + } + + public static GrammarFile createFile(Project project, String text) { + String name = "dummy.relast"; + return (GrammarFile) PsiFileFactory.getInstance(project). + createFileFromText(name, GrammarFileType.INSTANCE, text); + } +} diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementType.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementType.java new file mode 100644 index 0000000..098154f --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarElementType.java @@ -0,0 +1,14 @@ +package org.jastadd.tooling.grammar.psi; + +import com.intellij.psi.tree.IElementType; +import org.jastadd.tooling.grammar.Grammar; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; + +public class GrammarElementType extends IElementType { + + public GrammarElementType(@NotNull @NonNls String debugName) { + super(debugName, Grammar.INSTANCE); + } + +} diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarFile.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarFile.java new file mode 100644 index 0000000..513555d --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarFile.java @@ -0,0 +1,27 @@ +package org.jastadd.tooling.grammar.psi; + +import com.intellij.extapi.psi.PsiFileBase; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.psi.FileViewProvider; +import org.jastadd.tooling.grammar.Grammar; +import org.jastadd.tooling.grammar.GrammarFileType; +import org.jetbrains.annotations.NotNull; + +public class GrammarFile extends PsiFileBase { + + public GrammarFile(@NotNull FileViewProvider viewProvider) { + super(viewProvider, Grammar.INSTANCE); + } + + @NotNull + @Override + public FileType getFileType() { + return GrammarFileType.INSTANCE; + } + + @Override + public String toString() { + return "RelAst Grammar File"; + } + +} diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarNamedElement.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarNamedElement.java new file mode 100644 index 0000000..69b6fe7 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarNamedElement.java @@ -0,0 +1,7 @@ +package org.jastadd.tooling.grammar.psi; + +import com.intellij.psi.PsiNameIdentifierOwner; + +public interface GrammarNamedElement extends PsiNameIdentifierOwner { + +} diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTokenType.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTokenType.java new file mode 100644 index 0000000..80b18d7 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTokenType.java @@ -0,0 +1,19 @@ +package org.jastadd.tooling.grammar.psi; + +import com.intellij.psi.tree.IElementType; +import org.jastadd.tooling.grammar.Grammar; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; + +public class GrammarTokenType extends IElementType { + + public GrammarTokenType(@NotNull @NonNls String debugName) { + super(debugName, Grammar.INSTANCE); + } + + @Override + public String toString() { + return "GrammarTokenType." + super.toString(); + } + +} diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeDeclExtension.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeDeclExtension.java new file mode 100644 index 0000000..3459b1a --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeDeclExtension.java @@ -0,0 +1,4 @@ +package org.jastadd.tooling.grammar.psi; + +public interface GrammarTypeDeclExtension extends GrammarNamedElement { +} diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceExtension.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceExtension.java new file mode 100644 index 0000000..c9cbb3c --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceExtension.java @@ -0,0 +1,4 @@ +package org.jastadd.tooling.grammar.psi; + +public interface GrammarTypeReferenceExtension extends GrammarNamedElement { +} diff --git a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceManipulator.java b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceManipulator.java similarity index 61% rename from src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceManipulator.java rename to src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceManipulator.java index 3811262..7ab2f70 100644 --- a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceManipulator.java +++ b/src/main/java/org/jastadd/tooling/grammar/psi/GrammarTypeReferenceManipulator.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling.psi; +package org.jastadd.tooling.grammar.psi; import com.intellij.openapi.util.TextRange; import com.intellij.psi.AbstractElementManipulator; @@ -7,7 +7,7 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class RelAstGrammarTypeReferenceManipulator extends AbstractElementManipulator<RelAstGrammarTypeReference> implements ElementManipulator<RelAstGrammarTypeReference> { +public class GrammarTypeReferenceManipulator extends AbstractElementManipulator<GrammarTypeReference> implements ElementManipulator<GrammarTypeReference> { /** * Changes the element's text to the given new text. * @@ -19,9 +19,9 @@ public class RelAstGrammarTypeReferenceManipulator extends AbstractElementManipu */ @Nullable @Override - public RelAstGrammarTypeReference handleContentChange(@NotNull RelAstGrammarTypeReference element, @NotNull TextRange range, String newContent) { + public GrammarTypeReference handleContentChange(@NotNull GrammarTypeReference element, @NotNull TextRange range, String newContent) { try { - return (RelAstGrammarTypeReference) element.setName(range.replace(element.getText(), newContent)); + return (GrammarTypeReference) element.setName(range.replace(element.getText(), newContent)); } catch (Exception e) { // e.g., in case the range is wrong throw new IncorrectOperationException(e); } diff --git a/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarNamedElementImpl.java b/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarNamedElementImpl.java similarity index 77% rename from src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarNamedElementImpl.java rename to src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarNamedElementImpl.java index f684e42..377ff81 100644 --- a/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarNamedElementImpl.java +++ b/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarNamedElementImpl.java @@ -1,20 +1,20 @@ -package org.jastadd.tooling.psi.impl; +package org.jastadd.tooling.grammar.psi.impl; import com.intellij.extapi.psi.ASTWrapperPsiElement; import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.psi.PsiReference; import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry; -import org.jastadd.tooling.JastAddIcons; -import org.jastadd.tooling.psi.RelAstGrammarNamedElement; +import org.jastadd.tooling.grammar.psi.GrammarNamedElement; +import org.jastadd.tooling.util.JastAddIcons; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -public abstract class RelAstGrammarNamedElementImpl extends ASTWrapperPsiElement implements RelAstGrammarNamedElement { +public abstract class GrammarNamedElementImpl extends ASTWrapperPsiElement implements GrammarNamedElement { - protected RelAstGrammarNamedElementImpl(@NotNull ASTNode node) { + protected GrammarNamedElementImpl(@NotNull ASTNode node) { super(node); } diff --git a/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeDeclImplExtension.java b/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeDeclImplExtension.java new file mode 100644 index 0000000..8df00b4 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeDeclImplExtension.java @@ -0,0 +1,47 @@ +package org.jastadd.tooling.grammar.psi.impl; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import org.jastadd.tooling.grammar.parser.GrammarTypes; +import org.jastadd.tooling.grammar.psi.GrammarDeclaredName; +import org.jastadd.tooling.grammar.psi.GrammarElementFactory; +import org.jastadd.tooling.grammar.psi.GrammarTypeDeclExtension; +import org.jetbrains.annotations.NotNull; + +public class GrammarTypeDeclImplExtension extends GrammarNamedElementImpl implements GrammarTypeDeclExtension { + + public GrammarTypeDeclImplExtension(@NotNull ASTNode node) { + super(node); + } + + public String getName() { + // this finds the *first* ID, which is what we want + ASTNode keyNode = getNode().findChildByType(GrammarTypes.DECLARED_NAME); + if (keyNode != null) { + return keyNode.getText(); + } else { + return null; + } + } + + public PsiElement setName(@NotNull String newName) { + ASTNode keyNode = getNode().findChildByType(GrammarTypes.DECLARED_NAME); + if (keyNode != null) { + GrammarDeclaredName name = GrammarElementFactory.createDeclaredName(getProject(), newName); + ASTNode newKeyNode = name.getNode(); + getNode().replaceChild(keyNode, newKeyNode); + } + return this; + } + + public PsiElement getNameIdentifier() { + ASTNode keyNode = getNode().findChildByType(GrammarTypes.DECLARED_NAME); + if (keyNode != null) { + return keyNode.getPsi(); + } else { + return null; + } + } + + +} diff --git a/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeReferenceImplExtension.java b/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeReferenceImplExtension.java similarity index 57% rename from src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeReferenceImplExtension.java rename to src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeReferenceImplExtension.java index 3b44b50..495e20e 100644 --- a/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeReferenceImplExtension.java +++ b/src/main/java/org/jastadd/tooling/grammar/psi/impl/GrammarTypeReferenceImplExtension.java @@ -1,15 +1,15 @@ -package org.jastadd.tooling.psi.impl; +package org.jastadd.tooling.grammar.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; -import org.jastadd.tooling.psi.RelAstGrammarElementFactory; -import org.jastadd.tooling.psi.RelAstGrammarTypeReference; -import org.jastadd.tooling.psi.RelAstGrammarTypeReferenceExtension; +import org.jastadd.tooling.grammar.psi.GrammarElementFactory; +import org.jastadd.tooling.grammar.psi.GrammarTypeReference; +import org.jastadd.tooling.grammar.psi.GrammarTypeReferenceExtension; import org.jetbrains.annotations.NotNull; -public class RelAstGrammarTypeReferenceImplExtension extends RelAstGrammarNamedElementImpl implements RelAstGrammarTypeReferenceExtension { +public class GrammarTypeReferenceImplExtension extends GrammarNamedElementImpl implements GrammarTypeReferenceExtension { - public RelAstGrammarTypeReferenceImplExtension(@NotNull ASTNode node) { + public GrammarTypeReferenceImplExtension(@NotNull ASTNode node) { super(node); } @@ -22,7 +22,7 @@ public class RelAstGrammarTypeReferenceImplExtension extends RelAstGrammarNamedE // FIXME this can break the grammar when the type is used in an unnamed component (and in many other cases probably) ASTNode keyNode = getNode().getFirstChildNode(); if (keyNode != null) { - RelAstGrammarTypeReference name = RelAstGrammarElementFactory.createTypeReference(getProject(), newName); + GrammarTypeReference name = GrammarElementFactory.createTypeReference(getProject(), newName); ASTNode newKeyNode = name.getNode().getFirstChildNode(); getNode().replaceChild(keyNode, newKeyNode); } diff --git a/src/main/java/org/jastadd/tooling/lexer/RelAstGrammarFlexAdapter.java b/src/main/java/org/jastadd/tooling/lexer/RelAstGrammarFlexAdapter.java deleted file mode 100644 index 305dd61..0000000 --- a/src/main/java/org/jastadd/tooling/lexer/RelAstGrammarFlexAdapter.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.jastadd.tooling.lexer; - -import com.intellij.lexer.FlexAdapter; - -public class RelAstGrammarFlexAdapter extends FlexAdapter { - - public RelAstGrammarFlexAdapter() { - super(new RelAstGrammarLexer(null)); - } - -} diff --git a/src/main/java/org/jastadd/tooling/parser/RelAstGrammarElementType.java b/src/main/java/org/jastadd/tooling/parser/RelAstGrammarElementType.java deleted file mode 100644 index f50d18d..0000000 --- a/src/main/java/org/jastadd/tooling/parser/RelAstGrammarElementType.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.jastadd.tooling.parser; - -import com.intellij.psi.tree.IElementType; -import org.jastadd.tooling.RelAstGrammar; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; - -public class RelAstGrammarElementType extends IElementType { - - public RelAstGrammarElementType(@NotNull @NonNls String debugName) { - super(debugName, RelAstGrammar.INSTANCE); - } - -} diff --git a/src/main/java/org/jastadd/tooling/parser/RelAstGrammarTokenType.java b/src/main/java/org/jastadd/tooling/parser/RelAstGrammarTokenType.java deleted file mode 100644 index dd705f5..0000000 --- a/src/main/java/org/jastadd/tooling/parser/RelAstGrammarTokenType.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.jastadd.tooling.parser; - -import com.intellij.psi.tree.IElementType; -import org.jastadd.tooling.RelAstGrammar; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; - -public class RelAstGrammarTokenType extends IElementType { - - public RelAstGrammarTokenType(@NotNull @NonNls String debugName) { - super(debugName, RelAstGrammar.INSTANCE); - } - - @Override - public String toString() { - return "RelAstGrammarTokenType." + super.toString(); - } - -} diff --git a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarElementFactory.java b/src/main/java/org/jastadd/tooling/psi/RelAstGrammarElementFactory.java deleted file mode 100644 index df3bef4..0000000 --- a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarElementFactory.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.jastadd.tooling.psi; - -import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiFileFactory; -import org.jastadd.tooling.RelAstGrammarFileType; -import org.jastadd.tooling.parser.RelAstGrammarTypes; - -import java.util.Objects; - -public class RelAstGrammarElementFactory { - - private RelAstGrammarElementFactory() { - throw new IllegalStateException("Utility class"); - } - - public static RelAstGrammarDeclaredName createDeclaredName(Project project, String name) { - final RelAstGrammarFile file = createFile(project, name + ";"); - return (RelAstGrammarDeclaredName) file.getFirstChild().getFirstChild(); - } - - public static RelAstGrammarTypeReference createTypeReference(Project project, String name) { - final RelAstGrammarFile file = createFile(project, "X : " + name + ";"); - return (RelAstGrammarTypeReference) (Objects.requireNonNull(file.getFirstChild().getNode().findChildByType(RelAstGrammarTypes.TYPE_REFERENCE)).getPsi()); - } - - public static RelAstGrammarFile createFile(Project project, String text) { - String name = "dummy.relast"; - return (RelAstGrammarFile) PsiFileFactory.getInstance(project). - createFileFromText(name, RelAstGrammarFileType.INSTANCE, text); - } -} diff --git a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarFile.java b/src/main/java/org/jastadd/tooling/psi/RelAstGrammarFile.java deleted file mode 100644 index 4c1afae..0000000 --- a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarFile.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.jastadd.tooling.psi; - -import com.intellij.extapi.psi.PsiFileBase; -import com.intellij.openapi.fileTypes.FileType; -import com.intellij.psi.FileViewProvider; -import org.jastadd.tooling.RelAstGrammar; -import org.jastadd.tooling.RelAstGrammarFileType; -import org.jetbrains.annotations.NotNull; - -public class RelAstGrammarFile extends PsiFileBase { - - public RelAstGrammarFile(@NotNull FileViewProvider viewProvider) { - super(viewProvider, RelAstGrammar.INSTANCE); - } - - @NotNull - @Override - public FileType getFileType() { - return RelAstGrammarFileType.INSTANCE; - } - - @Override - public String toString() { - return "RelAst Grammar File"; - } - -} diff --git a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarNamedElement.java b/src/main/java/org/jastadd/tooling/psi/RelAstGrammarNamedElement.java deleted file mode 100644 index 6a7844c..0000000 --- a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarNamedElement.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.jastadd.tooling.psi; - -import com.intellij.psi.PsiNameIdentifierOwner; - -public interface RelAstGrammarNamedElement extends PsiNameIdentifierOwner { - -} diff --git a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeDeclExtension.java b/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeDeclExtension.java deleted file mode 100644 index 79837b7..0000000 --- a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeDeclExtension.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.jastadd.tooling.psi; - -public interface RelAstGrammarTypeDeclExtension extends RelAstGrammarNamedElement { -} diff --git a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceExtension.java b/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceExtension.java deleted file mode 100644 index a6c95e7..0000000 --- a/src/main/java/org/jastadd/tooling/psi/RelAstGrammarTypeReferenceExtension.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.jastadd.tooling.psi; - -public interface RelAstGrammarTypeReferenceExtension extends RelAstGrammarNamedElement { -} diff --git a/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeDeclImplExtension.java b/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeDeclImplExtension.java deleted file mode 100644 index b51ed4f..0000000 --- a/src/main/java/org/jastadd/tooling/psi/impl/RelAstGrammarTypeDeclImplExtension.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.jastadd.tooling.psi.impl; - -import com.intellij.lang.ASTNode; -import com.intellij.psi.PsiElement; -import org.jastadd.tooling.parser.RelAstGrammarTypes; -import org.jastadd.tooling.psi.RelAstGrammarDeclaredName; -import org.jastadd.tooling.psi.RelAstGrammarElementFactory; -import org.jastadd.tooling.psi.RelAstGrammarTypeDeclExtension; -import org.jetbrains.annotations.NotNull; - -public class RelAstGrammarTypeDeclImplExtension extends RelAstGrammarNamedElementImpl implements RelAstGrammarTypeDeclExtension { - - public RelAstGrammarTypeDeclImplExtension(@NotNull ASTNode node) { - super(node); - } - - public String getName() { - // this finds the *first* ID, which is what we want - ASTNode keyNode = getNode().findChildByType(RelAstGrammarTypes.DECLARED_NAME); - if (keyNode != null) { - return keyNode.getText(); - } else { - return null; - } - } - - public PsiElement setName(@NotNull String newName) { - ASTNode keyNode = getNode().findChildByType(RelAstGrammarTypes.DECLARED_NAME); - if (keyNode != null) { - RelAstGrammarDeclaredName name = RelAstGrammarElementFactory.createDeclaredName(getProject(), newName); - ASTNode newKeyNode = name.getNode(); - getNode().replaceChild(keyNode, newKeyNode); - } - return this; - } - - public PsiElement getNameIdentifier() { - ASTNode keyNode = getNode().findChildByType(RelAstGrammarTypes.DECLARED_NAME); - if (keyNode != null) { - return keyNode.getPsi(); - } else { - return null; - } - } - - -} diff --git a/src/main/java/org/jastadd/tooling/JastAddIcons.java b/src/main/java/org/jastadd/tooling/util/JastAddIcons.java similarity index 89% rename from src/main/java/org/jastadd/tooling/JastAddIcons.java rename to src/main/java/org/jastadd/tooling/util/JastAddIcons.java index 011ca99..b75c0b6 100644 --- a/src/main/java/org/jastadd/tooling/JastAddIcons.java +++ b/src/main/java/org/jastadd/tooling/util/JastAddIcons.java @@ -1,4 +1,4 @@ -package org.jastadd.tooling; +package org.jastadd.tooling.util; import com.intellij.openapi.util.IconLoader; diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 2263a9a..3c5a664 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -11,52 +11,52 @@ <extensions defaultExtensionNs="com.intellij"> <!-- Add your extensions here --> - <fileType name="RelAst Grammar" implementationClass="org.jastadd.tooling.RelAstGrammarFileType" + <fileType name="RelAst Grammar" implementationClass="org.jastadd.tooling.grammar.GrammarFileType" fieldName="INSTANCE" language="JastAddGrammar" extensions="relast"/> <lang.parserDefinition language="JastAddGrammar" - implementationClass="org.jastadd.tooling.parser.RelAstGrammarParserDefinition"/> + implementationClass="org.jastadd.tooling.grammar.parser.GrammarParserDefinition"/> <lang.syntaxHighlighterFactory language="JastAddGrammar" - implementationClass="org.jastadd.tooling.RelAstGrammarSyntaxHighlighterFactory"/> + implementationClass="org.jastadd.tooling.grammar.GrammarSyntaxHighlighterFactory"/> - <colorSettingsPage implementation="org.jastadd.tooling.RelAstGrammarColorSettingsPage"/> + <colorSettingsPage implementation="org.jastadd.tooling.grammar.GrammarColorSettingsPage"/> - <annotator language="JAVA" implementationClass="org.jastadd.tooling.RelAstGrammarJavaAnnotator"/> + <annotator language="JAVA" implementationClass="org.jastadd.tooling.grammar.GrammarJavaAnnotator"/> - <annotator language="JastAddGrammar" implementationClass="org.jastadd.tooling.RelAstGrammarAnnotator"/> + <annotator language="JastAddGrammar" implementationClass="org.jastadd.tooling.grammar.GrammarAnnotator"/> <codeInsight.lineMarkerProvider language="JAVA" - implementationClass="org.jastadd.tooling.RelAstGrammarLineMarkerProvider"/> + implementationClass="org.jastadd.tooling.grammar.GrammarLineMarkerProvider"/> <completion.contributor language="JastAddGrammar" - implementationClass="org.jastadd.tooling.RelAstGrammarCompletionContributor"/> + implementationClass="org.jastadd.tooling.grammar.GrammarCompletionContributor"/> - <psi.referenceContributor implementation="org.jastadd.tooling.RelAstGrammarReferenceContributor"/> + <psi.referenceContributor implementation="org.jastadd.tooling.grammar.GrammarReferenceContributor"/> <lang.refactoringSupport language="JastAddGrammar" - implementationClass="org.jastadd.tooling.RelAstGrammarRefactoringSupportProvider"/> + implementationClass="org.jastadd.tooling.grammar.GrammarRefactoringSupportProvider"/> - <lang.elementManipulator forClass="org.jastadd.tooling.psi.RelAstGrammarTypeReference" - implementationClass="org.jastadd.tooling.psi.RelAstGrammarTypeReferenceManipulator"/> + <lang.elementManipulator forClass="org.jastadd.tooling.grammar.psi.GrammarTypeReference" + implementationClass="org.jastadd.tooling.grammar.psi.GrammarTypeReferenceManipulator"/> <lang.findUsagesProvider language="JastAddGrammar" - implementationClass="org.jastadd.tooling.RelAstGrammarFindUsageProvider"/> + implementationClass="org.jastadd.tooling.grammar.GrammarFindUsageProvider"/> - <gotoSymbolContributor implementation="org.jastadd.tooling.RelAstGrammarChooseByNameContributor"/> + <gotoSymbolContributor implementation="org.jastadd.tooling.grammar.GrammarChooseByNameContributor"/> <lang.psiStructureViewFactory language="JastAddGrammar" - implementationClass="org.jastadd.tooling.RelAstGrammarStructureViewFactory"/> + implementationClass="org.jastadd.tooling.grammar.GrammarStructureViewFactory"/> <lang.formatter language="JastAddGrammar" - implementationClass="org.jastadd.tooling.RelAstGrammarFormattingModelBuilder"/> + implementationClass="org.jastadd.tooling.grammar.GrammarFormattingModelBuilder"/> - <codeStyleSettingsProvider implementation="org.jastadd.tooling.RelAstGrammarCodeStyleSettingsProvider"/> + <codeStyleSettingsProvider implementation="org.jastadd.tooling.grammar.GrammarCodeStyleSettingsProvider"/> <langCodeStyleSettingsProvider - implementation="org.jastadd.tooling.RelAstGrammarLanguageCodeStyleSettingsProvider"/> + implementation="org.jastadd.tooling.grammar.GrammarLanguageCodeStyleSettingsProvider"/> - <lang.commenter language="JastAddGrammar" implementationClass="org.jastadd.tooling.RelAstGrammarCommenter"/> + <lang.commenter language="JastAddGrammar" implementationClass="org.jastadd.tooling.grammar.GrammarCommenter"/> </extensions> <actions> diff --git a/src/main/resources/icons/jastadd.svg b/src/main/resources/icons/jastadd.svg index 7dc548d..34937df 100644 --- a/src/main/resources/icons/jastadd.svg +++ b/src/main/resources/icons/jastadd.svg @@ -1,88 +1,87 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="16" - height="16" - id="svg4781" - version="1.1" - inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" - sodipodi:docname="jastadd.svg" - inkscape:export-filename="/home/jesper/bzr/jastadd-research/logotype/jastadd_200px.png" - inkscape:export-xdpi="49.240002" - inkscape:export-ydpi="49.240002"> - <defs - id="defs4783"> - <inkscape:perspective - sodipodi:type="inkscape:persp3d" - inkscape:vp_x="0 : 454.65828 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_z="744.09448 : 454.65828 : 1" - inkscape:persp3d-origin="372.04724 : 279.26458 : 1" - id="perspective4789" /> - <inkscape:perspective - id="perspective4768" - inkscape:persp3d-origin="0.5 : -71.189479 : 1" - inkscape:vp_z="1 : -71.022812 : 1" - inkscape:vp_y="0 : 1000 : 0" - inkscape:vp_x="0 : -71.022812 : 1" - sodipodi:type="inkscape:persp3d" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="31.678384" - inkscape:cx="24.626583" - inkscape:cy="16.669221" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="2560" - inkscape:window-height="1406" - inkscape:window-x="0" - inkscape:window-y="18" - inkscape:window-maximized="1" - inkscape:document-rotation="0" /> - <metadata - id="metadata4786"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-185.85624,-382.86389)"> - <path - inkscape:tile-y0="331.74615" - inkscape:tile-x0="805.67645" - inkscape:tile-h="236.12934" - inkscape:tile-w="285.01443" - inkscape:tile-cy="449.81082" - inkscape:tile-cx="948.18366" - inkscape:export-ydpi="60.48" - inkscape:export-xdpi="60.48" - inkscape:export-filename="C:\Users\Jesper\Pictures\Inkscape\text4655.png" - id="path4837" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#e9830a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.413302;marker:none;enable-background:accumulate" - d="m 192.51835,398.49014 c 0.46797,0.0944 0.88748,0.12177 1.14886,-0.009 0.26139,-0.13045 0.31508,-0.16277 0.42235,-0.28982 0.10727,-0.12706 0.15312,-0.23676 0.19693,-0.40843 0.0439,-0.17165 0.0195,-0.81056 0.0139,-0.88117 -0.005,-0.0706 0.0467,-0.2021 0.0675,-0.25221 0.0389,-0.0938 0.11286,-0.19115 0.1589,-0.21643 0.0804,-0.0356 0.15378,-0.0646 0.37538,0.0176 0.27788,0.0832 1.36687,0.4716 1.9434,0.71318 0.45189,0.19675 0.81205,0.35613 0.94069,0.39718 0.20459,0.0701 0.25891,0.11011 0.36021,0.0816 0.10128,-0.0286 0.12277,-0.12742 0.16675,-0.26793 0.044,-0.14051 0.62773,-1.70104 0.82695,-2.19466 0.19933,-0.49357 0.2249,-0.57635 0.28714,-0.76598 0.0618,-0.1898 -0.005,-0.36353 -0.0924,-0.45392 -0.0872,-0.0904 -0.22949,-0.10291 -0.27145,-0.10222 -0.0419,5.5e-4 -0.32032,-0.0195 -0.46148,-0.0407 -0.19215,-0.029 -0.47053,-0.11965 -0.56311,-0.15549 -0.23628,-0.0916 -0.48103,-0.26386 -0.60199,-0.53086 -0.0885,-0.19537 -0.12683,-0.34898 -0.11868,-0.67429 0.007,-0.27537 0.0565,-0.55808 0.096,-0.71536 0.0397,-0.15722 0.10136,-0.33612 0.18569,-0.5012 0.15953,-0.31382 0.33088,-0.58298 0.52993,-0.80275 0.1086,-0.14475 0.40679,-0.28034 0.61085,-0.29391 0.31373,-0.0286 0.50335,0.0169 0.79219,0.1322 0.15039,0.0602 0.39876,0.16868 0.55566,0.21698 0.15688,0.0483 0.28055,0.0367 0.35503,-0.003 0.0824,-0.0434 0.14887,-0.1 0.17559,-0.29738 0.0266,-0.1974 0.0427,-0.60513 0.0687,-0.93064 0.0259,-0.3255 0.0191,-0.57846 0.0385,-0.8947 0.0196,-0.31622 0.008,-0.56894 0.0124,-0.80191 0.004,-0.23297 0.0101,-0.50723 0.008,-0.64199 -0.002,-0.15272 -0.0161,-0.30478 -0.0879,-0.38748 -0.0717,-0.0827 -0.21073,-0.0703 -0.30868,-0.0728 -0.11171,-0.003 -0.37232,0.002 -0.60538,-0.005 -0.23309,-0.006 -0.69532,0.012 -1.03465,-0.004 -0.33932,-0.0161 -0.71896,-0.005 -1.0049,-0.0326 -0.28595,-0.027 -0.53418,-0.0449 -0.70849,-0.0628 -0.1284,-0.0133 -0.23309,-0.0789 -0.29062,-0.16224 -0.0686,-0.0995 -0.0528,-0.21313 -0.0235,-0.37416 0.0294,-0.16098 0.19877,-0.53968 0.25515,-0.68962 0.0664,-0.17744 0.16054,-0.51914 0.1358,-0.68008 -0.0247,-0.16093 -0.10911,-0.29721 -0.23402,-0.43954 -0.11706,-0.13339 -0.27819,-0.24083 -0.40875,-0.33761 -0.1722,-0.12763 -0.32365,-0.22016 -0.48802,-0.29959 -0.15994,-0.0772 -0.38351,-0.14946 -0.51685,-0.18857 -0.13056,-0.0382 -0.34504,-0.0807 -0.50279,-0.0972 -0.18102,-0.0189 -0.4233,5.5e-4 -0.59699,0.0267 -0.11209,0.0173 -0.34618,0.12225 -0.44863,0.19939 -0.10244,0.0772 -0.21079,0.19464 -0.27207,0.3124 -0.0613,0.11775 -0.15703,0.32794 -0.19816,0.48437 -0.0411,0.15645 -0.0883,0.4522 -0.0919,0.58004 -0.004,0.12788 -0.0178,0.30359 -0.10785,0.39831 -0.0561,0.0589 -0.16481,0.0955 -0.23892,0.10375 -0.0818,3.8e-4 -0.16957,-0.0156 -0.37682,-0.0894 -0.33423,-0.11128 -0.71643,-0.26108 -1.1547,-0.43228 -0.43827,-0.17122 -0.73824,-0.29078 -1.11122,-0.42574 -0.18738,-0.0676 -0.46442,-0.17377 -0.56572,-0.19282 -0.10735,-0.0203 -0.19054,0.009 -0.24662,0.0453 -0.0319,0.0304 -0.0822,0.0835 -0.11888,0.13605 -0.035,0.0592 -0.0888,0.19917 -0.14981,0.39623 -0.0774,0.24375 -0.45072,1.39148 -0.63509,1.8572 -0.18436,0.4657 -0.27392,0.81491 -0.33223,1.0252 -0.0583,0.21034 0.16305,0.27254 0.25766,0.32297 0.11296,0.0478 0.25599,0.0959 0.5005,0.10429 0.24453,0.008 0.52438,0.037 0.70145,0.11073 0.17707,0.0737 0.32802,0.13816 0.44016,0.26725 0.0718,0.0904 0.1673,0.25085 0.19886,0.44079 0.0229,0.17635 0.0197,0.82329 -0.0823,1.16673 -0.0747,0.30981 -0.27178,0.672 -0.40762,0.85996 -0.19143,0.27412 -0.40386,0.50442 -0.61305,0.63269 -0.18515,0.12033 -0.49029,0.17659 -0.8327,0.0362 -0.22768,-0.0775 -0.55527,-0.21708 -0.79028,-0.28382 -0.17923,-0.0559 -0.41857,-0.0138 -0.48289,0.1178 -0.056,0.10822 -0.0706,0.21537 -0.084,0.37086 -0.0261,0.37764 -0.029,1.94008 -0.0717,2.86235 -0.0353,0.43468 0.006,0.57829 0.0353,0.64566 0.036,0.0847 0.36968,0.0758 0.46438,0.074 0.1882,1.1e-4 0.31618,-0.005 0.52893,-0.006 0.53643,0.004 2.55791,-0.0276 2.77317,0.0297 0.0722,0.0144 0.14731,0.04 0.19828,0.0704 0.052,0.0333 0.085,0.0738 0.10392,0.13597 0.0278,0.0889 -0.0396,0.27625 -0.0828,0.3957 -0.0431,0.11947 -0.14115,0.41501 -0.28904,0.73293 -0.14791,0.31794 -0.10517,0.6241 -0.0636,0.71801 0.0416,0.0939 0.15142,0.32628 0.37929,0.53048 0.22788,0.20419 0.44928,0.30636 0.73568,0.43164 0.2463,0.10774 0.68019,0.20311 0.72232,0.20817 z" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" /> - </g> + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns="http://www.w3.org/2000/svg" + width="16" + height="16" + id="svg4781" + version="1.1" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + sodipodi:docname="jastadd.svg" + inkscape:export-filename="/home/jesper/bzr/jastadd-research/logotype/jastadd_200px.png" + inkscape:export-xdpi="49.240002" + inkscape:export-ydpi="49.240002"> + <defs + id="defs4783"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 454.65828 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 454.65828 : 1" + inkscape:persp3d-origin="372.04724 : 279.26458 : 1" + id="perspective4789"/> + <inkscape:perspective + id="perspective4768" + inkscape:persp3d-origin="0.5 : -71.189479 : 1" + inkscape:vp_z="1 : -71.022812 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : -71.022812 : 1" + sodipodi:type="inkscape:persp3d"/> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="31.678384" + inkscape:cx="24.626583" + inkscape:cy="16.669221" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="2560" + inkscape:window-height="1406" + inkscape:window-x="0" + inkscape:window-y="18" + inkscape:window-maximized="1" + inkscape:document-rotation="0"/> + <metadata + id="metadata4786"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-185.85624,-382.86389)"> + <path + inkscape:tile-y0="331.74615" + inkscape:tile-x0="805.67645" + inkscape:tile-h="236.12934" + inkscape:tile-w="285.01443" + inkscape:tile-cy="449.81082" + inkscape:tile-cx="948.18366" + inkscape:export-ydpi="60.48" + inkscape:export-xdpi="60.48" + inkscape:export-filename="C:\Users\Jesper\Pictures\Inkscape\text4655.png" + id="path4837" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#e9830a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.413302;marker:none;enable-background:accumulate" + d="m 192.51835,398.49014 c 0.46797,0.0944 0.88748,0.12177 1.14886,-0.009 0.26139,-0.13045 0.31508,-0.16277 0.42235,-0.28982 0.10727,-0.12706 0.15312,-0.23676 0.19693,-0.40843 0.0439,-0.17165 0.0195,-0.81056 0.0139,-0.88117 -0.005,-0.0706 0.0467,-0.2021 0.0675,-0.25221 0.0389,-0.0938 0.11286,-0.19115 0.1589,-0.21643 0.0804,-0.0356 0.15378,-0.0646 0.37538,0.0176 0.27788,0.0832 1.36687,0.4716 1.9434,0.71318 0.45189,0.19675 0.81205,0.35613 0.94069,0.39718 0.20459,0.0701 0.25891,0.11011 0.36021,0.0816 0.10128,-0.0286 0.12277,-0.12742 0.16675,-0.26793 0.044,-0.14051 0.62773,-1.70104 0.82695,-2.19466 0.19933,-0.49357 0.2249,-0.57635 0.28714,-0.76598 0.0618,-0.1898 -0.005,-0.36353 -0.0924,-0.45392 -0.0872,-0.0904 -0.22949,-0.10291 -0.27145,-0.10222 -0.0419,5.5e-4 -0.32032,-0.0195 -0.46148,-0.0407 -0.19215,-0.029 -0.47053,-0.11965 -0.56311,-0.15549 -0.23628,-0.0916 -0.48103,-0.26386 -0.60199,-0.53086 -0.0885,-0.19537 -0.12683,-0.34898 -0.11868,-0.67429 0.007,-0.27537 0.0565,-0.55808 0.096,-0.71536 0.0397,-0.15722 0.10136,-0.33612 0.18569,-0.5012 0.15953,-0.31382 0.33088,-0.58298 0.52993,-0.80275 0.1086,-0.14475 0.40679,-0.28034 0.61085,-0.29391 0.31373,-0.0286 0.50335,0.0169 0.79219,0.1322 0.15039,0.0602 0.39876,0.16868 0.55566,0.21698 0.15688,0.0483 0.28055,0.0367 0.35503,-0.003 0.0824,-0.0434 0.14887,-0.1 0.17559,-0.29738 0.0266,-0.1974 0.0427,-0.60513 0.0687,-0.93064 0.0259,-0.3255 0.0191,-0.57846 0.0385,-0.8947 0.0196,-0.31622 0.008,-0.56894 0.0124,-0.80191 0.004,-0.23297 0.0101,-0.50723 0.008,-0.64199 -0.002,-0.15272 -0.0161,-0.30478 -0.0879,-0.38748 -0.0717,-0.0827 -0.21073,-0.0703 -0.30868,-0.0728 -0.11171,-0.003 -0.37232,0.002 -0.60538,-0.005 -0.23309,-0.006 -0.69532,0.012 -1.03465,-0.004 -0.33932,-0.0161 -0.71896,-0.005 -1.0049,-0.0326 -0.28595,-0.027 -0.53418,-0.0449 -0.70849,-0.0628 -0.1284,-0.0133 -0.23309,-0.0789 -0.29062,-0.16224 -0.0686,-0.0995 -0.0528,-0.21313 -0.0235,-0.37416 0.0294,-0.16098 0.19877,-0.53968 0.25515,-0.68962 0.0664,-0.17744 0.16054,-0.51914 0.1358,-0.68008 -0.0247,-0.16093 -0.10911,-0.29721 -0.23402,-0.43954 -0.11706,-0.13339 -0.27819,-0.24083 -0.40875,-0.33761 -0.1722,-0.12763 -0.32365,-0.22016 -0.48802,-0.29959 -0.15994,-0.0772 -0.38351,-0.14946 -0.51685,-0.18857 -0.13056,-0.0382 -0.34504,-0.0807 -0.50279,-0.0972 -0.18102,-0.0189 -0.4233,5.5e-4 -0.59699,0.0267 -0.11209,0.0173 -0.34618,0.12225 -0.44863,0.19939 -0.10244,0.0772 -0.21079,0.19464 -0.27207,0.3124 -0.0613,0.11775 -0.15703,0.32794 -0.19816,0.48437 -0.0411,0.15645 -0.0883,0.4522 -0.0919,0.58004 -0.004,0.12788 -0.0178,0.30359 -0.10785,0.39831 -0.0561,0.0589 -0.16481,0.0955 -0.23892,0.10375 -0.0818,3.8e-4 -0.16957,-0.0156 -0.37682,-0.0894 -0.33423,-0.11128 -0.71643,-0.26108 -1.1547,-0.43228 -0.43827,-0.17122 -0.73824,-0.29078 -1.11122,-0.42574 -0.18738,-0.0676 -0.46442,-0.17377 -0.56572,-0.19282 -0.10735,-0.0203 -0.19054,0.009 -0.24662,0.0453 -0.0319,0.0304 -0.0822,0.0835 -0.11888,0.13605 -0.035,0.0592 -0.0888,0.19917 -0.14981,0.39623 -0.0774,0.24375 -0.45072,1.39148 -0.63509,1.8572 -0.18436,0.4657 -0.27392,0.81491 -0.33223,1.0252 -0.0583,0.21034 0.16305,0.27254 0.25766,0.32297 0.11296,0.0478 0.25599,0.0959 0.5005,0.10429 0.24453,0.008 0.52438,0.037 0.70145,0.11073 0.17707,0.0737 0.32802,0.13816 0.44016,0.26725 0.0718,0.0904 0.1673,0.25085 0.19886,0.44079 0.0229,0.17635 0.0197,0.82329 -0.0823,1.16673 -0.0747,0.30981 -0.27178,0.672 -0.40762,0.85996 -0.19143,0.27412 -0.40386,0.50442 -0.61305,0.63269 -0.18515,0.12033 -0.49029,0.17659 -0.8327,0.0362 -0.22768,-0.0775 -0.55527,-0.21708 -0.79028,-0.28382 -0.17923,-0.0559 -0.41857,-0.0138 -0.48289,0.1178 -0.056,0.10822 -0.0706,0.21537 -0.084,0.37086 -0.0261,0.37764 -0.029,1.94008 -0.0717,2.86235 -0.0353,0.43468 0.006,0.57829 0.0353,0.64566 0.036,0.0847 0.36968,0.0758 0.46438,0.074 0.1882,1.1e-4 0.31618,-0.005 0.52893,-0.006 0.53643,0.004 2.55791,-0.0276 2.77317,0.0297 0.0722,0.0144 0.14731,0.04 0.19828,0.0704 0.052,0.0333 0.085,0.0738 0.10392,0.13597 0.0278,0.0889 -0.0396,0.27625 -0.0828,0.3957 -0.0431,0.11947 -0.14115,0.41501 -0.28904,0.73293 -0.14791,0.31794 -0.10517,0.6241 -0.0636,0.71801 0.0416,0.0939 0.15142,0.32628 0.37929,0.53048 0.22788,0.20419 0.44928,0.30636 0.73568,0.43164 0.2463,0.10774 0.68019,0.20311 0.72232,0.20817 z" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"/> + </g> </svg> -- GitLab