📄️ What is Gramble?
Gramble is a programming language for linguistic programming: building tools that create or respond to human language words and sentences. It's meant to be easier to read and write, so that people can make linguistic programs in their languages without necessarily having to have a degree in computer science.
📄️ Linguistic programs as databases
A Gramble program is a way of specifying a linguistic database in an efficient manner, without having to list out every possible entry. This is useful for very complex languages like Swahili or Kanyen'keha (in which there are millions of possible verb forms), or for syntactic phenomena like sentences (where we can't possibly list every possible sentence), or for procedures like Romanization where you want to produce a Roman-alphabet version of any user input, even if it's not a word you've ever seen before.
📄️ A simple Gramble program
Enter Gramble
📄️ Adding more fields
The program in on the previous page only had one field, text. It's not very useful with just one field!
📄️ From transducer to database
Let's go one further -- not just transducing from an input to an output, but expressing a database with multiple "fields".
📄️ Flat vs. nested
The previous examples used a structure where we define each morpheme (e.g. that the root can be "call" or "jump", that the suffix can be "s" or "ing" or "ed", etc.) and then at the end we concatenate all the morphemes together. Let's call that a "flat" structure. (You might also call it a "templatic" structure, but I'm going to avoid that term here because it can mean a lot of things. You might be modeling a language that linguists say has "templatic morphology", but you might not want to structure your grammar that way.)
📄️ Circumfixes
When word formation requires you do add both a prefix and suffix at the same time, that's sometimes called a circumfix. The existence of circumfixes in English are debatable, but consider something like "enliven": there's a root "live" and then an "en- -en" surrounding it. This one isn't the greatest example because we can also say this was formed "live -> liven -> enliven", but there are languages where this step-by-step approach doesn't work, where BOTH affixes have to be put on together or else the word is meaningless, or where their presence together has a different meaning contribution than you'd predict from their individual meanings.