The diagram below is an “abstracted SDL” – or simplified SDL if you like – it is a flowchart with SDL heritage that is a very good way of writing a visual specification assuming you have a tool that support it. This is at core in PLD. This exact example send a message and wait for responce. It performs an operation that in this case send a message out, PLDState will wait until a selected event happens etc. The direction and bar colors on operations and events is just presentation issues – in fact this is only a drawing tool as we speak as parameters for code generation is missing yet.
Events are key to PLD! The example above use a SDLState that “Wait for an event”, but you can add this event tree to any symbol that has multiple events. The event symbol will only accept one input line and pick an available event from the connected symbol – in this case a PLDState that list the events it is waiting for.
This last diagram use a switch symbol to indicate that we select one of many conditions. Unlike PLDState that will wait for an event this executes directly without delay and is an elegant way of drawing complex if/selections. This is modified SDL behavior and a very effective way to draw a complex if, elseif or switch.
One of the reasons I call this “PLD” is because it is a graphical language with heritage from Flow-Charts, SDL and UML, but it is a separate standard so we get to find symbols and ways to precent them. Nothing is written in stone yet as it comes down to what works and what does not.
PLDState and PLDSwitch is very similar in the sence they have a dynamic event/condition list – the difference is that state will wait until one is true, while switch will not as it is designet to make a selection “now”. Other symbols can use the same tree, but events will be a static list base on availble events.