[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.technology.ldt] Project similar to LDT

Hi All,
I was creating a language building framwork when I came across the LDT project. I will describe what I have been aiming


for, and why and maybe you can tell me any of:
1. If you have any ciriticisms / comments about my project?
2. If there is anything that already exists that might help me?
3. If there is any way we could work together?


I am using XSD to desribe my language model. The main reason for this is there is lots of support for parsing and transforming XSD/XML, and it is self describing.


My immediate goals are:
1. To automatically generate a form based editor that respects any language I have defined in an XSD.


2. To ensure the form based editor minimises (eliminates if possible) any syntax errors in the program. I.e. the code should always be as syntactially correct as possible even as it is being written.

3. To be able to customise the form based editor's interface by using a UI preferences document. For example, if the visibility if a member is to be filled in on the form based editor, the graphical component that does this could be a drop down list or a radio button set. Likewise, the component could be present next to the code where the method name appears, or in a propery pane, or a dialog box. This is only an example, but for each element of the schema that models the language, a certain representation of that element in the form can specified in an associated document. I call this dcoument the "xsd to ui mapping document".

4. To create a semantic information document for the language. This document would (for exmaple) define a link between a variable usage and the field/parameter/local declaration of that variable. This information could then also be used when generating forms that not only validate code but to aid in code entry. For example, if a variable was entered and it did not match any variable that was in scope, the editor could suggest the creation of such a variable. Likewise, if a variable's name were changed, the editor could automatically do a "refactoring"-style rename of that variable in all locations where it was semantically linked. All of these things are already present in eclipse but the key point is that the editor could automatically figure out where there is a semantic problem as suggest automatic fixes (within the constraints of the xsd to ui mapping document). These semantic links would be stored in the "language semantics document".

Benefits (aside form those listed above):
1. It is possible for code in the program to be freed of certain constraints - for example, the need for keywords dissapears,


so they can be used as identifiers.

2. As XSD is self describing, the same infrastructure that is used for writing programs can be used for creating the languages themselves. Likewise the "xsd to ui mapping" and "language semantics" documents could be edited using the same infrastucture.

3. Individual developers can customise the ui mapping document to their wishes. This could given the different (potentially VERY different) view of the same code that is being edited.

One of my long term goals is to create a language that compiles to Java bytecode where all programming types are XSD types.

This will have various uses:
1. The form based editor can ensure that any literals conform to the XSD of the data types. The program could be in its own right a powereful data repository that could be used instead of (or linked to - see next point) a database.


2. Mapping the data types to a database can also generate the appropriate constraints in the database. Reverse mapping of an existing database will also preserve much more (all?) of the data typing/constraint information that is defined in the database schema.

3. Creation of platform independent validating UIs. The data type information and the xsd to ui mapping document could generate web+javascript, Swing, SWT, XUL or any other type/description of widgets that are data-type aware and can validate data or ensure invalid data is never entered. These widgets could form a "custom palette" of UI components used to build the application interface.

Regards
Richard Davies

Skills Matter
richard.davies at skillsmatter.com