RE: [$ieee-1850] IEEE 1850 PSL LRM draft 5....

From: Erich Marschner <erichm_at_.....>
Date: Thu Mar 17 2005 - 11:51:59 PST
Harry,

The nonterminal Identifier is a special case in all languages, PSL included.  An 'Identifier' is a lexical item that has a specific lexical structure in each language.  Lexical structure (sequence of characters) and syntactic structure (sequence of tokens) are different, because syntactic tokens are separated by white space, whereas characters in a lexical element are not.  Although some languages attempt to use pseudo-syntactic productions to represent lexical structure of Identifiers and other lexical elements, this practice stretches the meaning of the notation used for syntactic productions to the breaking point.  In fact, in many languages, the lexical structure of 'Identifier' is not given in a pseudo-syntax production, but rather in some other form (e.g., an English description).

In PSL, section 4.2.1 defines what PSL Identifiers consist of:

    Identifiers in PSL consist of an alphabetic character, followed by zero or more 
    alphanumeric characters; each subsequent alphanumeric character may optionally be 
    preceded by a single underscore character.

In Verilog 2001, Identifiers are similarly described in English:

    2.7 Identifiers, keywods, and system names

    An identifier is used to give an object a unique name so it can be referenced. 
    An identifier is either a simple identifier or an escaped identifier (see 2.7.1). 
    A simple identifier shall be any sequence of letters, digits, dollar signs ($), 
    and underscore characters (_).

The Verilog 2001 LRM does define identifer in the syntax summary, as
   
    identifier ::=
      simple_identifier
    | escaped_identifer

but apparently this production is not in the body of the LRM; only the description in 2.7 appears.  The body of the LRM does contain a pseudo-syntax production for simple_identifier:

    simple_identifier ::= [ a-zA-Z_ ] { [ a-zA_Z0-9_$ ] }

but note that this definition uses a different interpretation for square braces than in other productions - here they mean "any character in this set" rather than "optionally".  This is an illustration of how the notation used for syntax productions is often contorted when it is applied to defining lexical structure.

In VHDL, the LRM does something similar, but ultimately gives up trying to use syntax productions at the point where it needs to refer to allowable characters.  

In short, I think the PSL LRM defines PSL Identifiers sufficiently in 4.2.1, and that we should avoid the complications involved in trying to represent the lexical structure of an Identifier with syntactic productions.

Note, by the way, that all references to PSL_Identifier should have the PSL prefix italicized.  The same applies to all references to VHDL_Identifier, Verilog_Identifier, etc.

Regards,

Erich

| -----Original Message-----
| From: owner-ieee-1850@eda.org 
| [mailto:owner-ieee-1850@eda.org] On Behalf Of Harry D. Foster
| Sent: Thursday, March 17, 2005 12:00 PM
| To: Cindy Eisner
| Cc: ieee-1850@eda.org
| Subject: Re: [$ieee-1850] IEEE 1850 PSL LRM draft 5....
| 
| >
| > harry,
| >
| >> Also, I would appreciate a good review of Annex A, the BNF.  I'm 
| >> worried about its accuracy.
| >
| > the definition of PSL_Identifier seems to be missing.  (i 
| can't take 
| > credit for being so observant:  i happened to be going over 
| some old 
| > emails and found such a comment from klaus from quite some 
| time ago - 
| > it seems that it still has not been addressed.)
| >
| > cindy.
| >
| 
| Yes--very good.   This problem is not limited to Annex A, but occurs 
| all over the
| informal semantics, wherever PSL_Identifier occurs.
| 
| Can someone give me a proposal I can edit in throughout the text?
| 
| Thanks
| 
| -Harry
| 
| 
| 
Received on Thu Mar 17 11:52:10 2005

This archive was generated by hypermail 2.1.8 : Thu Mar 17 2005 - 11:52:26 PST