mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2 91177308-0d34-0410-b5e6-96231b3b80d8
68 lines
1.8 KiB
Plaintext
68 lines
1.8 KiB
Plaintext
Date: Tue, 6 Feb 2001 20:27:37 -0600 (CST)
|
|
From: Chris Lattner <sabre@nondot.org>
|
|
To: Vikram S. Adve <vadve@cs.uiuc.edu>
|
|
Subject: Type notation debate...
|
|
|
|
This is the way that I am currently planning on implementing types:
|
|
|
|
Primitive Types:
|
|
type ::= void|bool|sbyte|ubyte|short|ushort|int|uint|long|ulong
|
|
|
|
Method:
|
|
typelist ::= typelisth | /*empty*/
|
|
typelisth ::= type | typelisth ',' type
|
|
type ::= type (typelist)
|
|
|
|
Arrays (without and with size):
|
|
type ::= '[' type ']' | '[' INT ',' type ']'
|
|
|
|
Pointer:
|
|
type ::= type '*'
|
|
|
|
Structure:
|
|
type ::= '{' typelist '}'
|
|
|
|
Packed:
|
|
type ::= '<' INT ',' type '>'
|
|
|
|
Simple examples:
|
|
|
|
[[ %4, int ]] - array of (array of 4 (int))
|
|
[ { int, int } ] - Array of structure
|
|
[ < %4, int > ] - Array of 128 bit SIMD packets
|
|
int (int, [[int, %4]]) - Method taking a 2d array and int, returning int
|
|
|
|
|
|
Okay before you comment, please look at:
|
|
|
|
http://www.research.att.com/~bs/devXinterview.html
|
|
|
|
Search for "In another interview, you defined the C declarator syntax as
|
|
an experiment that failed. However, this syntactic construct has been
|
|
around for 27 years and perhaps more; why do you consider it problematic
|
|
(except for its cumbersome syntax)?" and read that response for me. :)
|
|
|
|
Now with this syntax, his example would be represented as:
|
|
|
|
[ %10, bool (int, int) * ] *
|
|
|
|
vs
|
|
|
|
bool (*(*)[10])(int, int)
|
|
|
|
in C.
|
|
|
|
Basically, my argument for this type construction system is that it is
|
|
VERY simple to use and understand (although it IS different than C, it is
|
|
very simple and straightforward, which C is NOT). In fact, I would assert
|
|
that most programmers TODAY do not understand pointers to member
|
|
functions, and have to look up an example when they have to write them.
|
|
|
|
In my opinion, it is critically important to have clear and concise type
|
|
specifications, because types are going to be all over the programs.
|
|
|
|
Let me know your thoughts on this. :)
|
|
|
|
-Chris
|
|
|