MeFoSyLoMa CNRS Iniria
QR Code
Last modified
June 28, 2016

Aug 17, 2018
Symmetric Nets Grammar


For questions regarding the syntax, please contact Maximilien Colange, Fabrice Kordon, or Yann Thierry-Mieg.

The presentation of the syntax is divided in four parts:

A precise (and formal) definition can be found here for Symmetric Nets :

Wikipedia also offers some useful basic definitions.

Grammar: Basic Elements

The grammar is presented as a Backus-Naur form.

First of all, let us define some elements of the grammar:

any sequence of numeric character
any sequence of numeric character which value > 0
any sequence of numeric character which value ≥ 0
any sequence of character starting with a non numeric character
<Integer> .. <Integer>

Keywords are presented like this ; they are case insensitive.

Grammar for the Declaration Attribute

This attribute allows one to declare color types. There are several possibilities in the implementation of Symmetric Nets :


Declaration of Color Classes (Basic Color Types)

class <ListClassDeclarations>
<ClassDeclaration> |
<ListClassDeclarations> <ClassDeclarations>
<ListClassNames> is [circular] <ClassDescription>;
<ClassIdentifier> |
<ListClassNames> <ClassIdentifier>
<interval> | [<ListElements>]
<Identifier> |
<ListElements>, <Identifier>

Declaration of Color Domains (Composition of Color Classes)

domain <ListDomainDeclarations>
<DomainDeclaration> |
<ListDomainDeclarations> <DomainDeclaration>
<ListDomainNames> is <ProductDefinition>;
<DomainIdentifier> |
<ListDomainNames> <DomainIdentifier>
<Component> |
<ComponentList>, <Component>
<ClassIdentifier> |
<DomainIdentifier> |

Declaration of variables

var <ListVariableDeclarations>
<VariableDeclaration> |
<ListVariableDeclarations> <VariableDeclaration>
<ListVariableNames> in Component;
<VariableIdentifier> |
<ListVariableNames>, <VariableIdentifier>

Grammar for Arc Valuations

<ListElementaryExpr> |
<ElementaryExpression> |
<ElementaryExpression> + <ElementaryExpression> |
<ElementaryExpression> - <ElementaryExpression>
<ElementaryProduct> |
<PositiveInteger> * <ElementaryProduct>
<<ListProdElements> >
<ListProdElements> |
<ListProdElements>, <ProdElement>
<ElementaryExpression> |
<VariableIdentifier> |
<ClassIdentifier>.<LitteralValue> |
<VariableIdentifier>++<PositiveInteger> |
<VariableIdentifier>--<PositiveInteger> |
<Integer> | <Identifier>

Grammar for Transition Guards

true | false | [ <Guard> ]
not <Guard> |
(<Guard>) |
<Guard> and <Guard> |
<Guard> or <Guard> |
<GuardOperand> <RelOperation> <GuardOperand>
<VarClassElement> |
= | <> | < | > | <= | >=
included | strictincluded

Grammar for Place Marking

<Marking> |
<InitialMarking> <Marking>
<ElementaryProduct> |
<PositiveInteger> * <ElementaryProduct>