1.5      Method of Description and Syntax Notation

(1)   The language is described by means of a context-free syntax together with context-dependent requirements expressed by narrative rules.  The meaning of a construct in the language is defined by means of narrative rules.

(2)   The context-free syntax of the language is described using the variant Backus-Naur Form (BNF) [BNF 1960] as defined herein.

·         Lower case words in courier new font, some containing embedded underlines, are used to denote syntactic categories. A syntactic category is a nonterminal in the grammar. For example:

        component_feature_list

·         Boldface words are used to denote reserved words, for example:

        implementation

·         A vertical line separates alternative items.

        software_category ::= thread | process

·         Square brackets enclose optional items.  Thus the two following rules are equivalent.

        property_association ::= property_name => [ constant ] expression 
        property_association ::= 
            property_name => expression 
          | property_name => constant expression 

·         Curly brackets with a * symbol enclose a repeated item.  The item may appear zero or more times; the repetitions occur from left to right as with an equivalent left-recursive rule.  Thus the two following rules are equivalent.

        declaration_list ::= declaration { declaration }*
        declaration_list ::= declaration 
                         | declaration declaration_list

·         Curly brackets with a + symbol specify a repeated item with one or more occurrences. Thus the two following rules are equivalent.

       declaration_list ::= { declaration }+
       declaration_list ::= declaration { declaration }* 

·         Parentheses (round brackets) enclose several items to group terms. This capability reduces the number of extra rules to be introduced.  Thus, the first rule is equivalent with the latter two.

        property_association ::= identifier ( =>| +=>) property_expression 
        property_association ::= identifier assign property_expression
        assign ::= => | +=>

·         Square brackets, curly brackets, and parentheses may appear as delimiters in the language as well as meta-characters in the grammar.  Square, curly, and parentheses that are delimiters in the language will be written in bold face in grammar rules, for example:

        property_association_list ::= 
            { property_association { ; property_association }*  }

·         The syntax rules may preface the name of a nonterminal with an italicized name to add semantic information.  These italicized prefaces are to be treated as comments and not a part of the grammar definition.  Thus the two following rules are equivalent.

        component ::= identifier : component_classifier ;
        component ::= component_identifier : component_classifier ;

·         A construct is a piece of text (explicit or implicit) that is an instance of a syntactic category, for example:

        My_GPS: thread GPS.dualmode ;

(3)   The syntax description has been developed with an emphasis on an abstract syntax representation to provide clarity to the reader.