ProjectIt — A Projectional Editor for the Web
ProjectIt is a Language Workbench (…in the making , so please let us know if you find anything not yet correct). It is a tool for creating mini-languages, which are also known as Domain Specific Languages (DSLs). ProjectIt is able to generate an integrated set of editor, scoper, typer, and validator for your mini-language from a small set of definitions. Together we call this the work environment for your language.
Upcoming: ProjectIt will change its name to Freon
Because the nature of this project has changed from a tool to create a projectional editor to a tool to create a DSL, it was decided to change the name of the project. In the future, this tool will be called ‘Freon’.
If you want to know why this name was chosen, please read Name Change.
The Core Framework
On top of the core framework there are five generators, each of which generates part of the work environment for your mini-language:
- The language structure defines all the concepts, properties, and relationships in the language.
- The editor defines how a model in the language looks like on the screen. It also defines what editing commands can be used to change the model.
- The scoper defines how names that refer to other elements are being resolved.
- The typer defines what the type of an element is.
- The validator defines what a correct model looks like and wil provide errors whenever a model breaks these rules.
Why Is ProjectIt As It Is?
Currently, ProjectIt does not support the creation of debuggers, interpreters, generators, and such. Indeed, we have a (large) wish list of extra features that we would like to implement in the future.
In some cases, like e.g. code generators, we think that integration with existing tools is the best solution. In other cases we plan to provide ProjectIt components for specific functionality. Given time, we hope to realize many of these extra items.
If you want to know why we have chosen this development route, read our statement on the philosophy behind the tool.
What Are You: a Language Engineer or a User?
We assume that people who want to use ProjectIt know at least the basics of making mini-languages. For instance, the terms metamodel, abstract syntax tree, scope, concrete syntax, parsing, etc., should be familiar. When we address the ProjectIt user we call him, or her a language engineer. The people that will be using the generated work environment are simply called users.
Welcome, Language Engineer
So welcome, language engineer, to the world of ProjectIt. This website is meant for you. It explains how ProjectIt can help you in creating a language and building a work environment for it. Please, browse through all the subjects. As a start, you could ..
- .. find out what projectional editing is.
- .. see how you can install and use ProjectIt.
- .. find out how to define a language and its editor, etc. in the tutorials.
- .. dive deeper into the structure of the generated code.
- .. get to know more about the meta-code of ProjectIt.
Have fun! If you have questions that are not answered in this documentation, please email us at info AT projectit.org.