Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
VIATRA2/Examples/VTCL/ASM
Abstract State Machines
Abstract state machines (ASMs) provide a high-level means for assembling complex transformation programs.
ASM functions
ASM functions provide a non-persistent map to store values. Each ASM function needs to be declared prior to its first use. Initial values can also be set when defining an ASM function. The values stored at a certain location of an ASM function can be updated using the update ASM construct (see later).
machine asmFuns { asmfunction team / 2 { (1, "real") = "Casillas"; (7, "real") = "Raul"; // Any values are allowed to be used in the untyped version (7.1, 6) = 2; } }
In the new (upcoming) VIATRA2 version, types can also be defined for ASM functions as follows.
// Import is needed if types are intended to be used by local names import datatypes; machine asmFuns { asmfunction team(Integer, datatypes.String) : String { // FQNs can always be used for defining types (1, "real") = "Casillas"; (7, "real") = "Raul"; // The following initialization would be a type error // (7.1, 6) = 2; } rule main() = seq { update team(1, "mu") = "van der sar"; } }