BNF Symmetric Nets with Bags

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:

  • The declaration attribute,
  • The arc valuation attribute,
  • The transition guards attribute,
  • The place marking attribute.

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

Grammar: Basic Elements

The grammar is presented as a Backus-Naur form.

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

        <Integer> ::= any sequence of numeric character
<PositiveInteger> ::= any sequence of numeric character which value > 0
 <NaturalInteger> ::= any sequence of numeric character which value ≥ 0
      <Identifier> ::= any sequence of character starting with a non numeric character
       <Interval> ::= <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 with Bags :

  • Basic types (integer ranges or enumerations),
  • cartesian product of these types,
  • bags of these types.

Please note that bag-types can be part of cartesian products. There is also the possibility to define explicit equivalence classes.

<Declaration> ::= <ClassSection>
                  [<EquivalenceSection>]
                  [<DomainDeclaration>]
                  <VariableSection>

Declaration of Color Classes (Basic Color Types)

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

Declaration of Equivalence in Color Classes

    <EquivalenceSection> ::= equivalence <ListEquivDeclarations>
 <ListEquivDeclarations> ::= <EquivDeclaration> |
                             <ListEquivDeclarations> <EquivDeclaration>
      <EquivDeclaration> ::= in <ClassIdentifier> : <ListInterval>;
          <ListInterval> ::= <NamedInterval> |
                             <ListInterval>, <NamedInterval>
         <NamedInterval> ::= <Identifier> is <IntervalDefinition>
     <IntervalDefinition> ::= <interval> | Integer

Declaration of Color Domains (Composition of Color Classes)

Declaration of variables

Grammar for Arc Valuations

Grammar for Transition Guards

Grammar for Place Marking