@madielfilho please have a look at the changes and let me know if you could approve the pull request. I'll then merge it later in the week when changes to the CSP generators are ready to be merged as well.
Substantial changes to the textual plug-in to revise use of $ expressions in RoboSim:
RoboSim.xtext:
I've promoted SimRefExp to the grammar rule Atomic, and made
expression attributes use the rule CallExp. Otherwise it would not be
possible to type $e!f($d), for example, without use of parenthesis
$e!(f($d)). Although this is known to cause a warning regarding an
ambiguous parsing decision for '(' I believe it aligns the language
better with that of RoboChart.
Remove unused 'send' from OutputCommunication.
Redefined overriding of rule BasicStatement to eliminate constructs in
the language that are not supported in RoboSim like Wait.
RoboSimExtensions.xtend:
Implemented additional methods to calculate inputs/outputs.
RoboSimTypeProvider.xtend:
Added treatment of Assignable with SimVarRef to type-checker,
otherwise would be unable to type '$x = e'.
RoboSimScopeProvider.xtend:
Tightened scopes of input/outputs variables, events and operation
calls. This ensures examples, even in the test suite, are well defined.
Not having this functionality can easily lead to problems with the
generated semantics without an obvious explanation as to why it fails.
Handled scopes for SimVarRef, and eliminated global scoping rule, so
as to prevent misuse with interfaces outside of components.
RoboSimValidator.xtend:
Implemented basic checking that inputs/outputs of operations are
satisfied transitively by state machines and operations in the context
of each SimControllerDef. Again, not having this implemented can easily
lead to ill models being constructed.
@madielfilho please have a look at the changes and let me know if you could approve the pull request. I'll then merge it later in the week when changes to the CSP generators are ready to be merged as well.
Substantial changes to the textual plug-in to revise use of $ expressions in RoboSim:
RoboSim.xtext:
RoboSimExtensions.xtend:
RoboSimTypeProvider.xtend:
RoboSimScopeProvider.xtend:
RoboSimValidator.xtend: