DSL Auto-completion

The project consists in building a web service that provides autocompletion for a DSL (domain specific language) implemented in the context of an ongoing research project. The DSL is implemented in smalltalk and its purpose is to enable developers to express constraints on their application. Here is a simple example of how such a constrain might look like:

This text is analyzed by a parser and later transformed into an object model that expresses the same information in a more convenient way. This final data structure is then exposed to multiple consumers. Each consumer declares an accepted grammar, which describes the structure of the rules that it is able to process.

The idea is to build an autocompletion algorithm that offers hints based on the grammar specification of the existing consumer modules.

For example, if a consumer declares that it supports rules having the following properties:

rule type ’.. cannot ..’

subject of type ’Component’

one or more predicates of type ’DependOn’ (with argument of type ’Component’)