PAMOJA is a Java-based component framework providing support for grammar-aware engineering (GAE) in an integrated development environment (IDE). It provides a coherent set of components and wizards that deal with transformation of language terms from a concrete textual form to abstract syntax trees (ASTs) and the converse transformation from abstract to concrete. PAMOJA offers easier incorporation of GAE tasks, such as scanning, parsing, tree building, and formatting, in general IDEs (like NetBeans and Eclipse) so that they can be used in the construction of all kinds of software applications – other than compilers- that do some language processing as a necessary but subordinate task. The main development styles supported by PAMOJA are drag-and-drop functionality and wizards commonly found in modern IDEs.
In the PAMOJA project we are investigating the development of GAE applications by consciously applying CBSD techniques. Applications range from language front-ends to general software which needs to incorporate GAE processing.
Please note that PAMOJA is a research project and while we do endeavor to create useful and quality software components, there may be bugs and missing functionality. We advise users to use them with caution for "serious" work. We otherwise make no guarantees about the features or performance of PAMOJA.
Jackline Ssanyu
[email protected] [email protected]
PAMOJA components have been packaged in a JAR and the wizards as NBM modules.
Type | Download |
---|---|
PAMOJA components | JAR |
Parser generator wizard | NBM |
SignatureAPI generator wizard | NBM |
An overview of PAMOJA's capabilities, installation instructions and an example usage can be found in the User Manual. PAMOJA has been used to develop non-trivial applications. PAMOJA's API documentation can be found in the javadoc.
PAMOJA is being used to develop a couple of non-trivial applications:
- HybridEditor - A text/structure editor component which can be adapted to a programming language
- Compiler Lab toolset - A toolset to support in the teaching of courses on language processing