Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/loopctrl.cfa

    r283876d r9853d9b0  
    1010// Created On       : Wed Aug  8 18:32:59 2018
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug 11 23:04:35 2022
    13 // Update Count     : 160
     12// Last Modified On : Thu Dec 12 17:55:26 2019
     13// Update Count     : 108
    1414//
    1515
    1616#include <fstream.hfa>
    17 
    18 void fred() {
    19         // Test all possible loop syntax.
    20 
    21         int s = 0, c = 10, i = 2;
    22 
    23         for ( c ) { sout | "A"; }                                               sout | nl;
    24         for ( ~= c ) { sout | "B"; }                                    sout | nl;
    25         for ( -~ c ) { sout | "C"; }                                    sout | nl;
    26         for ( -~= c ) { sout | "D"; }                                   sout | nl;
    27 
    28         for ( s ~ c ) { sout | "A"; }                                   sout | nl;
    29         for ( s ~= c ) { sout | "B"; }                                  sout | nl;
    30         for ( s -~ c ) { sout | "C"; }                                  sout | nl;
    31         for ( s -~= c ) { sout | "D"; }                                 sout | nl;
    32 
    33         for ( s ~ c ~ i ) { sout | "A"; }                               sout | nl;
    34         for ( s ~= c ~ i ) { sout | "B"; }                              sout | nl;
    35         for ( s -~ c ~ i ) { sout | "C"; }                              sout | nl;
    36         for ( s -~= c ~ i ) { sout | "D"; }                             sout | nl;
    37 
    38         for ( j; c ) { sout | j; }                                                      sout | nl;
    39         for ( j; ~= c ) { sout | j; }                                   sout | nl;
    40         for ( j; -~ c ) { sout | j; }                                   sout | nl;
    41         for ( j; -~= c ) { sout | j; }                                  sout | nl;
    42 
    43         for ( j; s ~ c ) { sout | j; }                                  sout | nl;
    44         for ( j; s ~= c ) { sout | j; }                                 sout | nl;
    45         for ( j; s -~ c ) { sout | j; }                                 sout | nl;
    46         for ( j; s -~= c ) { sout | j; }                                sout | nl;
    47 
    48         for ( j; s ~ c ~ i ) { sout | j; }                              sout | nl;
    49         for ( j; s ~= c ~ i ) { sout | j; }                             sout | nl;
    50         for ( j; s -~ c ~ i ) { sout | j; }                             sout | nl;
    51         for ( j; s -~= c ~ i ) { sout | j; }                    sout | nl;
    52 
    53         // CANNOT DIRECTLY INITIALIZE INDEX VARIABLE, ONLY SINGLE LOOP INDEX VARIABLE IN DECLARATION
    54 
    55         for ( j; c ) { sout | j; }                                              sout | nl;
    56         for ( int j; c ) { sout | j; }                                  sout | nl;
    57         for ( int j; ~= c ) { sout | j; }                               sout | nl;
    58         for ( int j; -~ c ) { sout | j; }                               sout | nl;
    59         for ( int j; -~= c ) { sout | j; }                              sout | nl;
    60 
    61         for ( int j; s ~ c ) { sout | j; }                              sout | nl;
    62         for ( int j; s ~= c ) { sout | j; }                             sout | nl;
    63         for ( int j; s -~ c ) { sout | j; }                             sout | nl;
    64         for ( int j; s -~= c ) { sout | j; }                    sout | nl;
    65 
    66         for ( int j; s ~ c ~ i ) { sout | j; }                  sout | nl;
    67         for ( int j; s ~= c ~ i ) { sout | j; }                 sout | nl;
    68         for ( int j; s -~ c ~ i ) { sout | j; }                 sout | nl;
    69         for ( int j; s -~= c ~ i ) { sout | j; }                sout | nl;
    70 
    71         for ( j; s ~ @ ) { if ( j == 10 ) break; sout | j; }                            sout | nl;
    72         for ( j; @ -~ s ) { if ( j == -10 ) break; sout | j; }                          sout | nl;
    73         for ( j; s ~ @ ~ i ) { if ( j == 10 ) break; sout | j; }                        sout | nl;
    74         for ( j; @ -~ s ~ i ) { if ( j == -10 ) break; sout | j; }                      sout | nl;
    75         for ( j; s ~ @ ~ @ ) { if ( j == 10 ) break; sout | j; j += 1; }        sout | nl;
    76 
    77         for ( int j; s ~ @ ) { if ( j == 10 ) break; sout | j; j += 1; }        sout | nl;
    78         for ( int j; @ -~ s ) { if ( j == -10 ) break; sout | j; j -= 1; }      sout | nl;
    79         for ( int j; s ~ @ ~ i ) { if ( j == 10 ) break; sout | j; }            sout | nl;
    80         for ( int j; @ -~ s ~ i ) { if ( j == -10 ) break; sout | j; }          sout | nl;
    81         for ( int j; s ~ @ ~ @ ) { if ( j == 10 ) break; sout | j; j += 1; } sout | nl;
    82 
    83         // enum E { A, B, C, D };
    84         // for ( e; A ~= C ) { sout | j; }
    85         // for ( e; A ~= D ) { sout | j; }
    86         // for ( e; A -~= D ~ 2 ) { sout | j; }
    87         // for ( e; E ) { sout | j; }
    88         // for ( e; -~ E ) { sout | j; }
    89 }
    9017
    9118struct S { int i, j; };
     
    10835
    10936int main() {
    110         // Test some loop options.
    111 
    11237        sout | nlOff;                                                                           // turn off auto newline
    11338        while () { sout | "empty"; break; }                                     sout | nl;
     
    11843        for ( 1 ) { sout | "A"; }                                                       sout | nl;
    11944        for ( 10 ) { sout | "A"; }                                                      sout | nl;
    120         for ( ~= 10 ) { sout | "A"; }                                           sout | nl;
     45        for ( = 10 ) { sout | "A"; }                                            sout | nl;
    12146        for ( 1 ~= 10 ~ 2 ) { sout | "B"; }                                     sout | nl;
    122         for ( 1 -~= 10 ~ 2 ) { sout | "C"; }                            sout | nl;
     47        for ( 10 -~= 1 ~ 2 ) { sout | "C"; }                            sout | nl;
    12348        for ( 0.5 ~ 5.5 ) { sout | "D"; }                                       sout | nl;
    124         for ( 0.5 -~ 5.5 ) { sout | "E"; }                                      sout | nl | nl;
     49        for ( 5.5 -~ 0.5 ) { sout | "E"; }                                      sout | nl | nl;
    12550
    12651        for ( i; 10 ) { sout | i; }                                                     sout | nl;
    127         for ( i; ~= 10 ) { sout | i; }                                          sout | nl;
     52        for ( i; = 10 ) { sout | i; }                                           sout | nl;
    12853        for ( i; 1 ~= 10 ~ 2 ) { sout | i; }                            sout | nl;
    129         for ( i; 1 -~= 10 ~ 2 ) { sout | i; }                           sout | nl;
     54        for ( i; 10 -~= 1 ~ 2 ) { sout | i; }                           sout | nl;
    13055        for ( i; 0.5 ~ 5.5 ) { sout | i; }                                      sout | nl;
    131         for ( i; 0.5 -~ 5.5 ) { sout | i; }                                     sout | nl;
     56        for ( i; 5.5 -~ 0.5 ) { sout | i; }                                     sout | nl;
    13257        for ( ui; 2u ~= 10u ~ 2u ) { sout | ui; }                       sout | nl;
    133         for ( ui; 2u -~= 10u ~ 2u ) { sout | ui; }                      sout | nl | nl;
     58        for ( ui; 10u -~= 2u ~ 2u ) { sout | ui; }                      sout | nl | nl;
    13459
    13560        // @ means do nothing
     
    13863                sout | i;
    13964        }                                                                                                       sout | nl;
    140         for ( i; @ -~ 10 ) {
     65        for ( i; 10 -~ @ ) {
    14166          if ( i < 0 ) break;
    14267                sout | i;
     
    15176                i += 1.7;
    15277        }                                                                                                       sout | nl;
    153         for ( i; @ -~ 10 ~ 2 ) {
     78        for ( i; 10 -~ @ ~ 2 ) {
    15479          if ( i < 0 ) break;
    15580                sout | i;
     
    16489        for ( N ) { sout | "N"; }                                                       sout | nl;
    16590        for ( i; N ) { sout | i; }                                                      sout | nl;
    166         for ( i; ~= N ) { sout | i; }                                           sout | nl;
    167         for ( i; -~= N ) { sout | i; }                                          sout | nl | nl;
     91        for ( i; = N ) { sout | i; }                                            sout | nl;
     92        for ( i; N -~ 0 ) { sout | i; }                                         sout | nl | nl;
    16893
    16994        const int start = 3, comp = 10, inc = 2;
    17095        for ( i; start ~ comp ~ inc + 1 ) { sout | i; }         sout | nl | nl;
    171 
    172         for ( i; 10 : j; -5 ~ @ ) { sout | i | j; } sout | nl;
    173         for ( i; 10 : j; @ -~ -5 ) { sout | i | j; } sout | nl;
    174         for ( i; 10 : j; -5 ~ @ ~ 2 ) { sout | i | j; } sout | nl;
    175         for ( i; 10 : j; @ -~ -5 ~ 2 ) { sout | i | j; } sout | nl | nl;
    176 
    177         for ( j; -5 ~ @ : i; 10 ) { sout | i | j; } sout | nl;
    178         for ( j; @ -~ -5 : i; 10 ) { sout | i | j; } sout | nl;
    179         for ( j; -5 ~ @ ~ 2 : i; 10 ) { sout | i | j; } sout | nl;
    180         for ( j; @ -~ -5 ~ 2 : i; 10 ) { sout | i | j; } sout | nl | nl;
    181 
    182         for ( j; @ -~ -5 ~ 2 : i; 10 : k; 1.5 ~ @ ) { sout | i | j | k; } sout | nl;
    183         for ( j; @ -~ -5 ~ 2 : k; 1.5 ~ @ : i; 10 ) { sout | i | j | k; } sout | nl;
    184         for ( k; 1.5 ~ @ : j; @ -~ -5 ~ 2 : i; 10 ) { sout | i | j | k; } sout | nl;
    18596
    18697        for ( S s = (S){0}; s < (S){10,10}; s += (S){1} ) { sout | s; } sout | nl;
     
    192103        for ( s; (S){0} ~= (S){10,10} ~ (S){1} ) { sout | s; } sout | nl;
    193104        sout | nl;
    194         for ( s; (S){0} -~  (S){10,10} ) { sout | s; }           sout | nl;
    195         for ( s; (S){0} -~  (S){10,10} ~ (S){1} ) { sout | s; } sout | nl;
    196         for ( s; (S){0} -~= (S){10,10} ) { sout | s; }           sout | nl;
    197         for ( s; (S){0} -~= (S){10,10} ~ (S){1} ) { sout | s; } sout | nl | nl;
     105        for ( s; (S){10,10} -~ (S){0} ) { sout | s; }            sout | nl;
     106        for ( s; (S){10,10} -~ (S){0} ~ (S){1} ) { sout | s; } sout | nl;
     107        for ( s; (S){10,10} -~= (S){0} ) { sout | s; }           sout | nl;
     108        for ( s; (S){10,10} -~= (S){0} ~ (S){1} ) { sout | s; } sout | nl | nl;
    198109
    199         fred();
     110        for ( i; 10 : j; -5 ~ @ ) { sout | i | j; } sout | nl;
     111        for ( i; 10 : j; -5 -~ @ ) { sout | i | j; } sout | nl;
     112        for ( i; 10 : j; -5 ~ @ ~ 2 ) { sout | i | j; } sout | nl;
     113        for ( i; 10 : j; -5 -~ @ ~ 2 ) { sout | i | j; } sout | nl | nl;
     114
     115        for ( j; -5 ~ @ : i; 10 ) { sout | i | j; } sout | nl;
     116        for ( j; -5 -~ @ : i; 10 ) { sout | i | j; } sout | nl;
     117        for ( j; -5 ~ @ ~ 2 : i; 10 ) { sout | i | j; } sout | nl;
     118        for ( j; -5 -~ @ ~ 2 : i; 10 ) { sout | i | j; } sout | nl | nl;
     119
     120        for ( j; -5 -~ @ ~ 2 : i; 10 : k; 1.5 ~ @ ) { sout | i | j | k; } sout | nl;
     121        for ( j; -5 -~ @ ~ 2 : k; 1.5 ~ @ : i; 10 ) { sout | i | j | k; } sout | nl;
     122        for ( k; 1.5 ~ @ : j; -5 -~ @ ~ 2 : i; 10 ) { sout | i | j | k; } sout | nl;
    200123}
    201124
Note: See TracChangeset for help on using the changeset viewer.