1 1.10 rillig /* $NetBSD: lsym_do.c,v 1.10 2023/06/05 09:41:40 rillig Exp $ */ 2 1.1 rillig 3 1.1 rillig /* 4 1.1 rillig * Tests for the token lsym_do, which represents the keyword 'do' that starts 5 1.1 rillig * a 'do-while' loop. 6 1.1 rillig * 7 1.1 rillig * See also: 8 1.1 rillig * psym_do.c 9 1.1 rillig * psym_do_stmt.c 10 1.1 rillig * C11 6.8.5 "Iteration statements" 11 1.1 rillig * C11 6.8.5.2 "The 'do' statement" 12 1.1 rillig */ 13 1.1 rillig 14 1.3 rillig //indent input 15 1.4 rillig void 16 1.4 rillig function(void) 17 1.4 rillig { 18 1.4 rillig do stmt();while(cond); 19 1.4 rillig } 20 1.3 rillig //indent end 21 1.1 rillig 22 1.4 rillig //indent run 23 1.4 rillig void 24 1.4 rillig function(void) 25 1.4 rillig { 26 1.4 rillig do 27 1.4 rillig stmt(); 28 1.4 rillig while (cond); 29 1.4 rillig } 30 1.4 rillig //indent end 31 1.5 rillig 32 1.5 rillig 33 1.5 rillig //indent input 34 1.5 rillig void 35 1.5 rillig else_do(int i) 36 1.5 rillig { 37 1.5 rillig if (i > 0) return; else do {} while (0); 38 1.5 rillig } 39 1.5 rillig //indent end 40 1.5 rillig 41 1.5 rillig //indent run 42 1.5 rillig void 43 1.5 rillig else_do(int i) 44 1.5 rillig { 45 1.5 rillig if (i > 0) 46 1.5 rillig return; 47 1.5 rillig else 48 1.5 rillig do { 49 1.5 rillig } while (0); 50 1.5 rillig } 51 1.5 rillig //indent end 52 1.6 rillig 53 1.6 rillig 54 1.6 rillig //indent input 55 1.6 rillig void 56 1.6 rillig variants(void) 57 1.6 rillig { 58 1.6 rillig do stmt(); while (0); 59 1.6 rillig 60 1.6 rillig do { stmt(); } while (0); 61 1.6 rillig 62 1.6 rillig do /* comment */ stmt(); while (0); 63 1.6 rillig 64 1.6 rillig while (0) do {} while (0); 65 1.6 rillig } 66 1.6 rillig //indent end 67 1.6 rillig 68 1.6 rillig //indent run 69 1.6 rillig void 70 1.6 rillig variants(void) 71 1.6 rillig { 72 1.6 rillig do 73 1.6 rillig stmt(); 74 1.6 rillig while (0); 75 1.6 rillig 76 1.6 rillig do { 77 1.6 rillig stmt(); 78 1.6 rillig } while (0); 79 1.6 rillig 80 1.6 rillig do /* comment */ 81 1.6 rillig stmt(); 82 1.6 rillig while (0); 83 1.6 rillig 84 1.6 rillig while (0) 85 1.6 rillig do { 86 1.6 rillig } while (0); 87 1.6 rillig } 88 1.6 rillig //indent end 89 1.7 rillig 90 1.7 rillig //indent run -bl 91 1.7 rillig void 92 1.7 rillig variants(void) 93 1.7 rillig { 94 1.7 rillig do 95 1.7 rillig stmt(); 96 1.7 rillig while (0); 97 1.7 rillig 98 1.7 rillig do 99 1.7 rillig { 100 1.7 rillig stmt(); 101 1.7 rillig } while (0); 102 1.7 rillig 103 1.7 rillig do /* comment */ 104 1.7 rillig stmt(); 105 1.7 rillig while (0); 106 1.7 rillig 107 1.7 rillig while (0) 108 1.7 rillig do 109 1.7 rillig { 110 1.7 rillig } while (0); 111 1.7 rillig } 112 1.7 rillig //indent end 113 1.8 rillig 114 1.8 rillig 115 1.8 rillig /* Ensure that the 'do' starts a line. */ 116 1.8 rillig //indent input 117 1.8 rillig { 118 1.8 rillig /* */ do {} while (false); 119 1.8 rillig 120 1.8 rillig word do {} while (false); 121 1.8 rillig 122 1.8 rillig label: do {} while (false); 123 1.8 rillig } 124 1.8 rillig //indent end 125 1.8 rillig 126 1.8 rillig //indent run 127 1.8 rillig { 128 1.9 rillig /* */ 129 1.8 rillig do { 130 1.8 rillig } while (false); 131 1.8 rillig 132 1.8 rillig word 133 1.8 rillig do { 134 1.10 rillig } while (false); 135 1.8 rillig 136 1.8 rillig label: do { 137 1.8 rillig } while (false); 138 1.8 rillig } 139 1.8 rillig //indent end 140 1.8 rillig 141 1.10 rillig //indent run-equals-prev-output -sob 142