Turned the concretising of action expressions (into values) from a process method into a visitor, I think this is much nicer because now we only define what to do for prefix nodes in which the actual work is done.
Now moved 'get_possible_actions' into a visitor of its own
Made quite a cool class method on visitors which creates the visitor, visits the entity and then returns the result, giving more or less the same convenience to the caller as one geets if the visit is implemented directly in the visited class hierarchy
Even better, with *args I can use the class method 'get_results' for visitors even if they require an argument passed to the constructor, such as an environment
Slight change for the generic visiting and getting the result
Just another use of the new visitor get_results class method to tidy up.
A really good use of the process visitor pattern to define the traversal to retrieve the process names that are used.
It turns out I can apply the same logic to the ProcessPossibleActionsVisitor
Implemented visitors for components (the things that make up the system equation of a PEPA model), again the collection of the used names has been done and is signficantly nicer as a visitor than before as methods on each AST class
Turned get_shared_actions on the component classes into a visitor CompSharedActions, much better, especially since this was mostly implemented for testing purposes
Updated the Initial state builder pattern to use the more generic Visitor pattern components. Is not much better, but if we do this for the others builders then we can get rid of the 'get_builder' methods in the component classes and just rely on the visit methods.
Turned the StateBuilderHelper into a visitor. The actual builders themselves do not need to be visitors.
Turned the UtilisationBuilderHelper into a visitor as well. I think we are now done with visitor refactorings, but of course we can now use these for things such as static analysis of the models
Made the simple alias test a little more interesting by actually using the alias in the system equation. This actually required that I use the alias in the action as well. I think we need a test that requires the aliases to be seen through for states as well.
Added an expected failing test for the awkward alias problem. I'm not sure it is a large problem that we must deal with, but if it ever comes up we could simply have a pass over the PEPA model which removes the simple aliases.
Just added a comment detailing what the StateBuilderHelper is etc.
Added a PEPA test which contains a top rate. We are of course currently failing it.
Minor spelling error in a comment.
Implemented parsing and equality for TopRate which now means that our TopRate test is still failing but at least it is getting further, past the expected actions stage.
My TopRate test was invalid because the T rate activity did not cooperate with anything. I have fixed that now.