Menu

Identifiers

In Dezyne identifiers are used to denote objects like interfaces, components, events, user defined types, variables, etc. A keyword cannot be used as an identifier and identifiers are case-sensitive.

An identifier starts with a letter, which can be followed by further letters, digits, or underscores. Following are legal identifiers:

Alarm, turn_on, VAL_123

Scoping

In order to properly refer to types and objects defined in a context different from the current one, that context has to be included in the name of such a type or object. This is done using a 'dot notation', like in MyInterface.MyType. Possible dot constructs are:

  • MyEnumType.MyEnumValue denotes an enumeration value, where MyEnumType denotes its enumeration type defined in the current context.

  • SomeInterface.MyEnumType denotes an enumeration type defined in the context of interface SomeInterface.

  • SomeInterface.MyEnumType.MyEnumValue denotes an enumeration value, where SomeInterface.MyEnumType denotes its enumeration type defined in the context of interface SomeInterface.

  • myPort.myEvent denotes an event defined in the context of some interface MyInterface of which port myPort is an instance.

  • MyInstance.myPort denotes a port defined in the context of some component MyComponent of which MyInstance is an instance.

  • MyNamespace.MyName denotes an object named MyName, such as a component, interface, enumeration value defined in a namespace MyNamespace. Since namespaces can be nested, long names can be constructed, like MyNamespace1.MyNamespace2.MyNamespace2.MyInterface.MyEnumType.MyEnumValue.

Where appropriate in the sections below, examples will be given to illustrate this notation.

Keywords

The following list shows the keywords in Dezyne. These keywords may not be used as constant or variable or any other identifier names.

behaviour       blocking        bool            component
else            extern          external        enum
false           if              illegal         import
inevitable      injected        inout           interface
in              namespace       on              optional
otherwise       out             provides        reply
requires        return          subint          system
true

Comments

Dezyne supports single-line and multi-line comments very similar to C++. Multi-line comments may be nested. All characters available inside any comment are ignored by the Dezyne compiler.

component Alarm {
  /* This is an example of multi-line comment.
   * The line below is ignored also:
   * interface IA
   */
  provides IAlarm ia; // a single-line comment
}
Enjoy this article? Don't forget to share.