I made one foray into language creation that some folks may find interesting, although I am very much an amateur. I designed a declarative language attempting to mimic the structure of human concepts. The idea was partly to try out this hypothesis that all concepts are reducible to 'types' and 'relations', and to try creating a language based on those two primitives. After coming up with some concept hierarchy, you could use it to generate particular instances of the root concept—the idea being to use it for procedural content generation. Here's some sample code:
Chair:
(legs: Cylinder, seat: Slab, back: Slab)
{
attachment(legs, seat)
attachment(seat, back)
}
TestType1:
OriginType
(
a: unsequence[x: Type2, xor[y: {Type3}(), z: type4]],
b: optional[Fruit], c: >3[pet: Animal], d: 2[Animal(Blah){}]
)
{
constraint1(x, y, z)->recognize->toInt
constraint2(x, z.a.b.c)
constraint3(z, y)
}
I wrote a grammar for the language and generated a parser, and have a design for the runtime on paper—but, the design was rather complex and for various reasons I thought it would be best to build a general purpose data structure visualizer to assist in writing it. That ended up being a quite large project on its own, which I'm still working on (quick demo:
https://www.youtube.com/watch?v=HpxgUVNAhXc ; more info:
http://symbolflux.net/projects/avd).
I also realized recently that my main 'innovations' were already covered by the logic programming paradigm decades ago, so that has discouraged me some. (And I've recently started thinking that machine learning will be better for doing procedural content generation than anything produced by explicit descriptions.)