1 1.2 rillig /* $NetBSD: stmt_if.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ 2 1.1 rillig # 3 "stmt_if.c" 3 1.1 rillig 4 1.1 rillig /* 5 1.1 rillig * Test parsing of 'if' statements. 6 1.1 rillig */ 7 1.1 rillig 8 1.1 rillig void println(const char *); 9 1.1 rillig 10 1.1 rillig void 11 1.1 rillig dangling_else(int x) 12 1.1 rillig { 13 1.1 rillig if (x > 0) 14 1.1 rillig if (x > 10) 15 1.1 rillig println("> 10"); 16 1.1 rillig /* This 'else' is bound to the closest unfinished 'if'. */ 17 1.1 rillig else 18 1.1 rillig println("> 0"); 19 1.1 rillig /* 20 1.1 rillig * If the above 'else' were bound to the other 'if', the next 'else' 21 1.1 rillig * would have no corresponding 'if', resulting in a syntax error. 22 1.1 rillig */ 23 1.1 rillig else 24 1.1 rillig println("not positive"); 25 1.2 rillig /* expect+1: error: syntax error 'else' [249] */ 26 1.1 rillig else 27 1.1 rillig println("syntax error"); 28 1.1 rillig } 29