Last change
on this file since 08e0d65 was
fd54fef,
checked in by Michael Brooks <mlbrooks@…>, 4 years ago
|
Converting the project to use the new syntax for otype, dtype and ttytpe.
Changed prelude (gen), libcfa and test suite to use it. Added a simple deprecation rule of the old syntax to the parser; we might wish to support both syntaxes "officially," like with an extra CLI switch, but this measure should serve as a simple reminder for our team to try the new syntax.
|
-
Property mode set to
100644
|
File size:
874 bytes
|
Line | |
---|
1 | context addable( T ) { |
---|
2 | T ?+?( T,T ); |
---|
3 | T ?=?( T*, T); |
---|
4 | }; |
---|
5 | |
---|
6 | otype List1( T | addable( T ) ) = struct { T data; List1( T ) *next; } *; |
---|
7 | typedef List1( int ) ListOfIntegers; |
---|
8 | //List1( int ) li; |
---|
9 | ListOfIntegers li; |
---|
10 | int f( List1( int ) ( (*g ))( int ) ); |
---|
11 | [int] h( * List1( int ) p ); // new declaration syntax |
---|
12 | |
---|
13 | struct( T ) S2 { T i; }; // actual definition |
---|
14 | struct( int ) S3 v1, *p; // expansion and instantiation |
---|
15 | struct( T )( int ) S24 { T i; } v2; // actual definition, expansion and instantiation |
---|
16 | struct( T )( int ) { T i; } v2; // anonymous actual definition, expansion and instantiation |
---|
17 | |
---|
18 | struct( T | addable( T ) ) node { T data; struct( T ) node *next; }; |
---|
19 | otype List( T ) = struct( T ) node *; |
---|
20 | List( int ) my_list; |
---|
21 | |
---|
22 | otype Complex | addable( Complex ); |
---|
23 | |
---|
24 | int main() { |
---|
25 | (struct( int ) node)my_list; |
---|
26 | } |
---|
27 | |
---|
28 | // Local Variables: // |
---|
29 | // tab-width: 4 // |
---|
30 | // End: // |
---|
Note: See
TracBrowser
for help on using the repository browser.