| Date: Thu, 8 Feb 2001 14:31:05 -0600 (CST) |
| From: Chris Lattner <sabre@nondot.org> |
| To: Vikram S. Adve <vadve@cs.uiuc.edu> |
| Subject: RE: Type notation debate... |
| |
| > Arrays (without and with size): |
| > type ::= '[' type ']' | '[' INT ',' type ']'. |
| > |
| > The arrays with size lists the dimensions and the type in a single list. |
| > That is just too confusing: |
| |
| > [10, 40, int] |
| > This seems to be a 3-D array where the third dimension is something strange. |
| > It is too confusing to have a list of 3 things, some of which are dimensions |
| > and one is a type. |
| |
| The above grammar indicates that there is only one integer parameter, ie |
| the upper bound. The lower bound is always implied to be zero, for |
| several reasons: |
| |
| * As a low level VM, we want to expose addressing computations |
| explicitly. Since the lower bound must always be known in a high level |
| language statically, the language front end can do the translation |
| automatically. |
| * This fits more closely with what Java needs, ie what we need in the |
| short term. Java arrays are always zero based. |
| |
| If a two element list is too confusing, I would recommend an alternate |
| syntax of: |
| |
| type ::= '[' type ']' | '[' INT 'x' type ']'. |
| |
| For example: |
| [12 x int] |
| [12x int] |
| [ 12 x [ 4x int ]] |
| |
| Which is syntactically nicer, and more explicit. |
| |
| > Either of the following would be better: |
| > array [10, 40] of int |
| |
| I considered this approach for arrays in general (ie array of int/ array |
| of 12 int), but found that it made declarations WAY too long. Remember |
| that because of the nature of llvm, you get a lot of types strewn all over |
| the program, and using the 'typedef' like facility is not a wonderful |
| option, because then types aren't explicit anymore. |
| |
| I find this email interesting, because you contradict the previous email |
| you sent, where you recommend that we stick to C syntax.... |
| |
| -Chris |
| |