Changes in / [2ad4b49:f77dbc0]
- Location:
- src
- Files:
-
- 2 edited
-
Parser/parser.yy (modified) (4 diffs)
-
tests/sum.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r2ad4b49 rf77dbc0 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Jun 1 17:59:57201813 // Update Count : 34 7612 // Last Modified On : Sat Jun 2 17:18:40 2018 13 // Update Count : 3487 14 14 // 15 15 … … 1331 1331 c_declaration ';' 1332 1332 | cfa_declaration ';' // CFA 1333 | static_assert 1333 | static_assert // C11 1334 1334 ; 1335 1335 … … 1337 1337 STATICASSERT '(' constant_expression ',' string_literal ')' ';' // C11 1338 1338 { $$ = DeclarationNode::newStaticAssert( $3, $5 ); } 1339 | STATICASSERT '(' constant_expression ')' ';' // CFA 1340 { $$ = DeclarationNode::newStaticAssert( $3, build_constantStr( *new string( "" ) ) ); } 1339 1341 1340 1342 // C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and function … … 1881 1883 1882 1884 field_declaration: 1883 cfa_field_declaring_list ';' // CFA, new style field declaration 1885 type_specifier field_declaring_list ';' 1886 { $$ = distAttr( $1, $2 ); } 1887 | EXTENSION type_specifier field_declaring_list ';' // GCC 1888 { distExt( $3 ); $$ = distAttr( $2, $3 ); } // mark all fields in list 1889 | typedef_declaration ';' // CFA 1890 { SemanticError( yylloc, "Typedef in aggregate is currently unimplemented." ); $$ = nullptr; } 1891 | cfa_field_declaring_list ';' // CFA, new style field declaration 1884 1892 | EXTENSION cfa_field_declaring_list ';' // GCC 1885 { 1886 distExt( $2 ); // mark all fields in list 1887 $$ = $2; 1888 } 1889 | type_specifier field_declaring_list ';' 1890 { 1891 $$ = distAttr( $1, $2 ); } 1892 | EXTENSION type_specifier field_declaring_list ';' // GCC 1893 { 1894 distExt( $3 ); // mark all fields in list 1895 $$ = distAttr( $2, $3 ); 1896 } 1897 | static_assert 1893 { distExt( $2 ); $$ = $2; } // mark all fields in list 1894 | cfa_typedef_declaration ';' // CFA 1895 { SemanticError( yylloc, "Typedef in aggregate is currently unimplemented." ); $$ = nullptr; } 1896 | static_assert // C11 1898 1897 ; 1899 1898 -
src/tests/sum.c
r2ad4b49 rf77dbc0 11 11 // Created On : Wed May 27 17:56:53 2015 12 12 // Last Modified By : Peter A. Buhr 13 // Last Modified On : S at Feb 17 11:49:17201814 // Update Count : 27 313 // Last Modified On : Sun Jun 3 19:23:41 2018 14 // Update Count : 278 15 15 // 16 16 … … 18 18 #include <stdlib> 19 19 20 void ?{}( int & c, zero_t ) { c = 0; } 20 void ?{}( int & c, zero_t ) { c = 0; } // not in prelude 21 21 22 22 trait sumable( otype T ) { 23 void ?{}( T &, zero_t ); // constructor from 0 literal23 void ?{}( T &, zero_t ); // 0 literal constructor 24 24 T ?+?( T, T ); // assortment of additions 25 25 T ?+=?( T &, T ); … … 29 29 30 30 forall( otype T | sumable( T ) ) // use trait 31 T sum( unsigned int size, T a[] ) {32 T total = 0; // in stantiate T from 0 by callingconstructor33 for ( unsigned int i = 0; i < size; i += 1 )31 T sum( size_t size, T a[] ) { 32 T total = 0; // initialize by 0 constructor 33 for ( size_t i = 0; i < size; i += 1 ) 34 34 total += a[i]; // select appropriate + 35 35 return total; … … 111 111 for ( int i = 0; i < size; i += 1, v += 1 ) { 112 112 s += (int)v; 113 gs.x[i] = (int)v; // set fi led array in generic type113 gs.x[i] = (int)v; // set field array in generic type 114 114 } // for 115 115 sout | "sum from" | low | "to" | High | "is" 116 | sum( size, gs.x ) | ", check" | (int)s | endl; // add fi led array in generic type116 | sum( size, gs.x ) | ", check" | (int)s | endl; // add field array in generic type 117 117 } // main 118 118
Note:
See TracChangeset
for help on using the changeset viewer.