From e87f1dcc5f8b2aa80eddf6c3e02bf1a215e62cee Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Sun, 14 Nov 2021 00:58:59 +0100 Subject: [PATCH] embedded java for attribute blocks --- CHANGELOG.md | 3 +++ src/main/grammar/Aspect.bnf | 12 ++++++++---- ...nguageInjector.java => JavaLanguageInjector.java} | 5 +++-- .../aspect/psi/JastAddAspectJavaBlockExtension.java | 4 ---- .../aspect/psi/JastAddAspectJavaExtension.java | 4 ++++ ...sion.java => JastAddAspectJavaImplExtension.java} | 10 ++++------ src/main/resources/META-INF/plugin.xml | 2 +- 7 files changed, 23 insertions(+), 17 deletions(-) rename src/main/java/org/jastadd/tooling/aspect/{JavaBlockLanguageInjector.java => JavaLanguageInjector.java} (93%) delete mode 100644 src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java create mode 100644 src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java rename src/main/java/org/jastadd/tooling/aspect/psi/impl/{JastAddAspectJavaBlockImplExtension.java => JastAddAspectJavaImplExtension.java} (76%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00613e2..d5c867b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ ### Added - Support for IntelliJ IDEA 2021.2.3. - Initial support for JastAdd aspect files. + - syntax highlighter and color settings + - two file types for jrag and jadd + - embedded java for attribute equation blocks ### Changed diff --git a/src/main/grammar/Aspect.bnf b/src/main/grammar/Aspect.bnf index c471de6..da2d4a5 100644 --- a/src/main/grammar/Aspect.bnf +++ b/src/main/grammar/Aspect.bnf @@ -33,8 +33,8 @@ // //java_block ::= JAVABLOCK //{ -// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" -// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" +// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" +// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" //} // aspect_body_declarations_eof ::= aspect_body_declaration* EOF @@ -278,8 +278,8 @@ annotation ::= ( normal_annotation | single_member_annotation | marker_annotatio //class_body_declaration_in_paren ::= JAVA_IN_PAREN //{ -// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension" -// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaBlockImplExtension" +// implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" +// extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" //} // should be parsed after circular and in collection attributes @@ -303,6 +303,10 @@ enum_declaration ::= ENUM_ANYTHING_LBRACE_ANYTHING_RBRACE // ENUM java_identifie // only within attribute equations block ::= LBRACE_ANYTHING_RBRACE +{ + implements="org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension" + extends="org.jastadd.tooling.aspect.psi.impl.JastAddAspectJavaImplExtension" +} // TODO unsupported diff --git a/src/main/java/org/jastadd/tooling/aspect/JavaBlockLanguageInjector.java b/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java similarity index 93% rename from src/main/java/org/jastadd/tooling/aspect/JavaBlockLanguageInjector.java rename to src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java index 609f835..b07e711 100644 --- a/src/main/java/org/jastadd/tooling/aspect/JavaBlockLanguageInjector.java +++ b/src/main/java/org/jastadd/tooling/aspect/JavaLanguageInjector.java @@ -9,7 +9,7 @@ import com.intellij.psi.PsiLanguageInjectionHost; import org.jastadd.tooling.aspect.psi.*; import org.jetbrains.annotations.NotNull; -public class JavaBlockLanguageInjector implements LanguageInjector { +public class JavaLanguageInjector implements LanguageInjector { /** * @param host PSI element inside which your language will be injected. @@ -24,7 +24,6 @@ public class JavaBlockLanguageInjector implements LanguageInjector { if (host.isValidHost()) { if (host instanceof JastAddAspectExpressionInBrackets) { // TODO - injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m(){", "}"); } else if (host instanceof JastAddAspectNormalAnnotation) { // TODO } else if (host instanceof JastAddAspectSingleMemberAnnotation) { @@ -37,6 +36,8 @@ public class JavaBlockLanguageInjector implements LanguageInjector { // TODO } else if (host instanceof JastAddAspectAnnotationTypeDeclaration) { // TODO + } else if (host instanceof JastAddAspectBlock) { + injectionPlacesRegistrar.addPlace(JavaLanguage.INSTANCE, new TextRange(0, host.getTextLength()), "class X { public void m()", "}"); } } } diff --git a/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java b/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java deleted file mode 100644 index 75b2f3e..0000000 --- a/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaBlockExtension.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.jastadd.tooling.aspect.psi; - -public interface JastAddAspectJavaBlockExtension extends com.intellij.psi.PsiLanguageInjectionHost { -} diff --git a/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java b/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java new file mode 100644 index 0000000..31d4890 --- /dev/null +++ b/src/main/java/org/jastadd/tooling/aspect/psi/JastAddAspectJavaExtension.java @@ -0,0 +1,4 @@ +package org.jastadd.tooling.aspect.psi; + +public interface JastAddAspectJavaExtension extends com.intellij.psi.PsiLanguageInjectionHost { +} diff --git a/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaBlockImplExtension.java b/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaImplExtension.java similarity index 76% rename from src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaBlockImplExtension.java rename to src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaImplExtension.java index f1a19e0..f29d91a 100644 --- a/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaBlockImplExtension.java +++ b/src/main/java/org/jastadd/tooling/aspect/psi/impl/JastAddAspectJavaImplExtension.java @@ -2,15 +2,13 @@ package org.jastadd.tooling.aspect.psi.impl; import com.intellij.extapi.psi.ASTWrapperPsiElement; import com.intellij.lang.ASTNode; -import com.intellij.psi.LiteralTextEscaper; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiLanguageInjectionHost; -import org.jastadd.tooling.aspect.psi.JastAddAspectJavaBlockExtension; +import com.intellij.psi.*; +import org.jastadd.tooling.aspect.psi.JastAddAspectJavaExtension; import org.jetbrains.annotations.NotNull; -public class JastAddAspectJavaBlockImplExtension extends ASTWrapperPsiElement implements JastAddAspectJavaBlockExtension { +public class JastAddAspectJavaImplExtension extends ASTWrapperPsiElement implements JastAddAspectJavaExtension { - public JastAddAspectJavaBlockImplExtension(@NotNull ASTNode node) { + public JastAddAspectJavaImplExtension(@NotNull ASTNode node) { super(node); } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 43ea39d..93ed476 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -67,7 +67,7 @@ <lang.parserDefinition language="JastAddAspect" implementationClass="org.jastadd.tooling.aspect.parser.AspectParserDefinition"/> - <languageInjector implementation="org.jastadd.tooling.aspect.JavaBlockLanguageInjector"/> + <languageInjector implementation="org.jastadd.tooling.aspect.JavaLanguageInjector"/> <lang.syntaxHighlighterFactory language="JastAddAspect" implementationClass="org.jastadd.tooling.aspect.AspectSyntaxHighlighterFactory"/> -- GitLab