Creating a new structure language
Hi,
I'm trying to create new languages in MPS that can be used instead of the core languages (found in jetbrains.mps.lang.*).
At the moment I have created a simple replacement for the structure language that allows for defining concepts. The language has a concept called Type that extends ConceptDeclaration, and another concept, Attribute, for defining properties of the Type. The Type concept seems to be working, but I have not found a way for my Attribute to be used instead of the PropertyDeclaration that is defined in MPS' AbstractConceptDeclaration.
If I define a concept with a property using my own structure language I end up with an error on the property: "Error: property 'name' is already declared in null". The error seems to originate from check_PropertyDeclaration that is part of jetbrains.mps.lang.structure's typesystem. If I have a collection of PropertyDeclaration in my structure language, how do I actually turn them into properties in the languages I define using my language?
Also, I wanted to experiment using the structure language that is found in MPS, but have not found any way to do this. All of the core languages seems to be read-only, and I haven't found a way to copy languages. Is there a way to copy languages in MPS?
Any tips on how to proceed are very much appreciated. Thanks!
Example project: MyBaseLanguages.zip (190KB)
I'm trying to create new languages in MPS that can be used instead of the core languages (found in jetbrains.mps.lang.*).
At the moment I have created a simple replacement for the structure language that allows for defining concepts. The language has a concept called Type that extends ConceptDeclaration, and another concept, Attribute, for defining properties of the Type. The Type concept seems to be working, but I have not found a way for my Attribute to be used instead of the PropertyDeclaration that is defined in MPS' AbstractConceptDeclaration.
If I define a concept with a property using my own structure language I end up with an error on the property: "Error: property 'name' is already declared in null". The error seems to originate from check_PropertyDeclaration that is part of jetbrains.mps.lang.structure's typesystem. If I have a collection of PropertyDeclaration in my structure language, how do I actually turn them into properties in the languages I define using my language?
Also, I wanted to experiment using the structure language that is found in MPS, but have not found any way to do this. All of the core languages seems to be read-only, and I haven't found a way to copy languages. Is there a way to copy languages in MPS?
Any tips on how to proceed are very much appreciated. Thanks!
Example project: MyBaseLanguages.zip (190KB)
Please sign in to leave a comment.
Just only have to set override to true and make a null check.
Bear in mind that this approach only removes the error. If you want to check if the property is already declared you have to somehow write a correct findPropertyDeclaration method for your attributes.