After using the flow editor a bit, some of the more annoying errors became pretty obvious, so it’s time for a new update (well, full install again) to the flow editor. Besides the more obvious bug fixes, I’ve also introduced some new functionality, notably:
- shortcuts ‘N’ & ‘ctrl+N’: add/insert a new neuron.
- shortcut ‘R’: toggle ’selection Required’ for current option/loop. This is an important feature that I missed (in gene this was no problem since you could use an empty condition which is not possible here). The problem is this: sometimes,
an option or loop has to require at least 1 selection between a part (so you can’t skip the condition or flow), sometimes this is not required. To allow a distinction between the 2, an extra ‘attribute’ is attached to the conditional (the loop or option), much the same as how a selection between loop and option is done. - I changed the layout from wrap-panel to horizontal stack-panel, which is more logical to work with.
Note: I have updated the table on the first post about the flow editor so it contains the new shortcuts.
I will probably also have to implement a new statement type, to allow for grouping ery soon. It’s not really needed for defining the flows, but I think it can be useful later on, during the parsing. For instance, the expression: (verb "ing") means that you are expecting a verb, with ing behind (standing, listening,…). You don’t need the brackets to define it, but it makes more sense while parsing, if the grouping statement has an attribute attached to it that indicates how it needs to be interpreted.
I have also noticed a ‘logical’ error in the way that I implemented keyboard navigation: some keys have been reversed. So when you are on an item inside a part and need to get to that part, use the left arrow instead of the right. Being able to select
a part is important to continue adding items at the end again when you have added a conditional like in the next image. It’s annoying, but fuck it, this is one for later on.
![]()
I’m also not yet very happy with the deletion functionality. As it is at the moment, you can remove or delete. Removing simply takes away the reference to a neuron in a list, deleting, will remove the neuron from the brain. This is annoying, cause you usually want to remove statics and delete conditionals and parts. If you want to remove an entire condition, you need to first delete all the parts separately. A better scheme would be as that of the code editor, which will check for this type of situation. Again, this is a minor thing, so I will add it to the feature list. At the moment, there are more important things to do though.
A bit more interesting, I have also began work on an English grammar definition. Here’s a screenshot of a part:
![]()
It’s off course not a definition that covers the complete language, but I think it should be enough to build a natural language interface, which should be interesting. I’m certain I missed a bunch, I still need to define adverb handling (which will be treated in a pre parser, a bit like how comments are handled in more traditional parsers) and the scanner also needs commencing. And expect some shuffling around and updates as I implement the parser for this definition. At this stage, extra attributes will probably be added, to handle more semantically oriented parsing. I have no idea how long this is going to take me, but I expect some issues with the debugger, so I might be out for a week or 2 for the next update.