This is a demonstration of ANTLRv4 library for IntelliJ plugins, which makes it easy to create plugins for IntelliJ-based IDEs based on an ANTLRv4 grammar.
Make sure the Gradle plugin is installed in your IDE, go to File -> Open, select the build.gradle file
and choose Open as Project.
If you already imported the project when it was not based on Gradle, then choose the option to delete the existing project and reimport it.
Once the IDE is done downloading dependencies and refreshing the project, you can use the Gradle tool window
and use the following Tasks:
build > assembleto build the projectintellij > runIdeto run the plugin in a sandboxed instance
The build is based on Gradle, and uses the gradle-intellij-plugin, which makes it easy to:
- pull dependencies, especially the IntelliJ SDK and
antlr4-intellij-adaptor - build and run tests in a CI environment on different versions of the SDK
- generate lexers & parsers from your grammars, thanks to the ANTLR plugin for Gradle
- publish plugins to the JetBrains Plugins Repository
- configure the project for occasional contributors 🙂
PSI nodes defined in the plugin extend ANTLRPsiNode and IdentifierDefSubtree, which automatically
makes them PsiNameIdentifierOwners.
Errors are shown by SampleExternalAnnotator, which makes use of org.antlr.intellij.adaptor.xpath.XPath to
detect references to unknown functions.
SampleParserDefinition uses several handy classes from the adaptor library:
PSIElementTypeFactoryto generateIElementTypes from tokens and rules defined in your ANTLRv4 grammarANTLRLexerAdaptorto bind generated lexers to acom.intellij.lexer.LexerANTLRParserAdaptorto bind generated parsers to acom.intellij.lang.PsiParser
WARNING. Turn on Dragon speech recognition for Mac and do a rename. GUI deadlocks. Every time. Turn off dragon. No problem ever. See JetBrains forum.
