IDEs for the rest of us
New! 16 December 2009: Runtime support and IMP-based IDEs for ANTLR and JavaCC are on the way! Stay tuned!
New! 28 October 2009: Slides from the IMP talk at OOPSLA 2009 are available on the Documentation page.
New! 22 October 2009: A new software engineering course at the University of Amsterdam is using the Rascal analysis language (built on the IMP PDB) and its IMP-based IDE. Some day, we hope to distribute Rascal with IMP.
New! 25 March 2009: IMP Tutorial slides from EclipseCon 2009 are available on the Documentation page.
Isn't it a shame that so many languages still don't enjoy full-featured IDE support?
Building a new programming language that needs an IDE?
Can't afford to spend months learning the Eclipse APIs to implement an IDE from scratch?
Tried to extend or re-purpose an existing Eclipse IDE but gave up in frustration?
If you answered yes to any of the above, you're not alone, but there's good news:
IMP is here to help!
IMP is intended to radically simplify and speed the IDE development process.
Want to use ANTLR, JavaCC, LPG, SDF, or a hand-rolled parser? Go ahead!
Want to use top-down, bottom-up, or even scannerless parsing techniques? No problem!
IMP interfaces keep you focused on the stuff you know best: your language, and your models. Almost all of the complexities of Eclipse are hidden from you.
IMP doesn't force you to use EMF, or its own ASTs (abstract syntax trees). Languages vary so much in structure and semantics that this just doesn't make sense.
Already have a compiler front-end? Don't reinvent the wheel! Use it!
You won't get frustrated because IMP forces you to implement features in a particular order, or makes you implement everything before you get to see your IDE in action! You can be up and running in minutes or hours, not weeks!
Is your language object-oriented? functional? declarative? a DSL? No problem!
IMP-based IDEs already exist for a wide variety of languages like Java, grammar specifications, COBOL, stream processing, and DSLs. IMP is being used for languages from tiny DSLs to full-featured general-purpose programming languages.
We support syntax highlighting, outlines, quick outlines, source code folding, content assist, hover help, editor annotations, incremental building, you name it.
Now, building a state-of-the-art Eclipse IDE for a new programming language is difficult, no question about it, and a lot of this work is inevitable. It requires a deep understanding of the language's structure and semantics.
Still, a significant portion of IDE development embodies common themes and code structures, and requires extensive knowledge of Eclipse API's, that have nothing to do with your language, and thus represent a great opportunity for code and knowledge reuse in the form of a runtime and meta-tooling framework.
IMP is an ongoing project, begun at IBM Watson Research, to develop this kind of support for Eclipse.
We've used IMP to create DSLs (domain-specific languages) that assist in various aspects of IDE development, for example:
The LPG, PrefSpecs, and Box IDEs are included in the IMP release.
The X10 IDE is available, along with the X10 compiler, runtime and examples, from http://x10-lang.org/.
The latest IMP release is targeted to work with Eclipse versions 3.2, 3.3, 3.4, and 3.5.
Note: The Java-hosted support, however, depends on the JDT, which made a breaking API change (they fixed a typo in the name of the method JavaCore.setComplianceOptions()) at Eclipse 3.3 (or was it 3.4?), which broke backward compatibility for that feature. If you don't need this feature, then IMP should work with earlier Eclipse versions.
Please let us know if you have any problems, especially with more recent versions of Eclipse.