|
ASSL Meta Grammar |
ASSL is a declarative specification language for autonomic systems (ASs) with well-defined semantics. The language provides a powerful formal
notation that enriches the underlying logic with modern programming language concepts and constructs such as inheritance, modularity,
type system, and high abstract expressiveness. As a formal language, ASSL defines a neutral (i.e., implementation-independent) representation
for ASs described as a set of interacting autonomic elements.
The picture shows a generic meta-grammar in Extended Backus-Naur Form (BNF) for ASSL. It presents syntax rules for specifying
ASSL tiers. Note that this meta-grammar is an abstraction of the ASSL grammar, which cannot be presented here due to the complex structure of
the ASSL specification model, where each tier has its own syntax and semantic rules. As shown in the grammar above, an ASSL tier is syntactically
specified with an ASSL tier identifier, an optional name and a content block bordered by curly braces. Moreover,
we distinguish two syntactical types of tier: single tiers (Tier) and group tiers (GroupTier), where the latter comprise a set of single
tiers. Each single tier has an optional name (TierName) and comprises a set of special tier clauses (TierClause) and optional
data (Data). The latter is a set of data declarations and statements. Data declarations could be:
- type declarations;
- variable declarations;
- collection declarations.
Statements could be:
- loop statements;
- assignment statements;
- if-then-else statements;
- collection statements.
Statements can comprise Boolean and numeric expressions. In addition, although not shown in the grammar above, note that
identifiers participating in ASSL expressions are either simple, consisting of a single identifier, or qualified, consisting of a sequence of identifiers
separated by "." tokens.
|