Re: pre-defined type names are not keywords

From: Silas McDermott <silas@cadence.com>
Date: Tue Aug 05 2014 - 14:50:28 PDT
Which reminds me of my favorite e code example ever:

struct struct {
  struct;
};

Try THAT in a different language!

- Silas.



[cid:7A9D8E86-E187-4A82-8C4C-5ABC5493C8B8]



Silas McDermott   |   AE Director   |   Systems and Advanced Verification

 P: 503.970.2916        www.cadence.com<http://www.cadence.com/>









From: Yuri Tsoglin <yurit@cadence.com<mailto:yurit@cadence.com>>
Date: Tuesday, August 5, 2014 at 1:53 PM
To: Cristian Amitroaie <cristian@amiq.com<mailto:cristian@amiq.com>>
Cc: "ieee1647@eda.org<mailto:ieee1647@eda.org>" <ieee1647@eda.org<mailto:ieee1647@eda.org>>
Subject: RE: pre-defined type names are not keywords

Apparently yes, e_core is mentioned in Annex D.
Here it is, I am quoting:


D.2.5 Reserved type names
One set of types in e is considered essential or core, e.g., int, string, and sys. No reasonable e program
would assign the name of any of those types to a user-defined type. Core types are declared under a special
package called e_core. Within the name space model, e_core type names are reserved. Unlike other type
names, they cannot be used in another package. For more information, see D.3.3.


D.3.3 e_core types
The set of types declared in the built-in package e_core is privileged. Unlike all other types, the names of the
e_core types remain unique, even if they have been added by user extension. When a user tries to define a
type using the name of an e_core type, an error is reported. However, these names are not reserved
keywords; they can be used as identifiers in any other context (variable names, method names, and so on).
The e_core types are: int, uint, byte, bit, bool, string, sys, global, base_struct, any_struct, any_unit, and
event_port.


BTW, it seems that the above list of e_core types is incomplete. For example, “real” is missing.

Also, there are no “reserved keywords” in e in general.
Even keywords which are not e_core type names, are such only in the sense that each one of them has a special meaning in a certain context. But no one of them is reserved, and they may also be used in other contexts.
For example, the word “struct” can be used to define a struct (and in this sense it is a keyword), but it is also allowed to be a name of a type, field, variable, method, and anything else.

Thanks,
Yuri.







-----Original Message-----
From: Cristian Amitroaie [mailto:cristian@amiq.com]
Sent: Tuesday, August 05, 2014 23:07
To: Yuri Tsoglin
Cc: ieee1647@eda.org<mailto:ieee1647@eda.org>
Subject: Re: pre-defined type names are not keywords



Hi Yuri,



I think it makes sense.



The question is weather we want users to be able to redefine "int" for

example... BTW, is "e_core" in the standard?



Thanks,

Cristian



On Sunday 03 August 2014 07:29:56 pm Yuri Tsoglin wrote:

> Hi,

>

> I think we should remove type names such as "int", "string", or "sys", from

> the keywords table (section 4.1.5.3 in the current LRM).

>

> These words are just type names, which happen to belong to the "e_core"

> package. In this sense, they are not different from any other pre-defined

> types, which may belong to other packages (e.g. rf_manager or

> any_sequence_driver).

>

> Does this make sense?

>

> Thanks,

> Yuri.

>

>

>

>

> [cid:image002.jpg@01CFAF50.EA6C8A20<mailto:image002.jpg@01CFAF50.EA6C8A20>]

>

> Yuri Tsoglin | e Language team, Specman RnD

>

> P: 972.3.9004305 M: 972.54.6468177 F: 972.3.9004001

> www.cadence.com<http://www.cadence.com>





--
This message has been scanned for viruses and
dangerous content by MailScanner<http://www.mailscanner.info/>, and is
believed to be clean.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



BD663043-4AFE-48EB-9CBA-64301986C32A[21].png
D4C90DE5-13CD-4800-AE1F-854FDD32151B[21].png
43A1A259-22E3-4724-A265-E149B34BC8E5[21].png
Received on Tue Aug 5 14:51:26 2014

This archive was generated by hypermail 2.1.8 : Tue Aug 05 2014 - 14:51:29 PDT