lsym_unary_op.c revision 1.5 1 1.5 rillig /* $NetBSD: lsym_unary_op.c,v 1.5 2022/04/24 10:36:37 rillig Exp $ */
2 1.1 rillig
3 1.1 rillig /*
4 1.1 rillig * Tests for the token lsym_unary_op, which represents a unary operator.
5 1.1 rillig *
6 1.1 rillig * In an expression, a unary operator is written without blank next to its
7 1.1 rillig * argument.
8 1.1 rillig *
9 1.1 rillig * In a type name, the "unary operator" '*' represents the derivation of a
10 1.1 rillig * pointer type.
11 1.1 rillig */
12 1.1 rillig
13 1.4 rillig //indent input
14 1.3 rillig void
15 1.3 rillig unary_operators(void)
16 1.3 rillig {
17 1.3 rillig /* In the order of appearance in C11 6.5. */
18 1.3 rillig function(a++, a--, ++a, --a, &a, *a, +a, -a, ~a, !a);
19 1.3 rillig }
20 1.4 rillig //indent end
21 1.1 rillig
22 1.4 rillig //indent run-equals-input
23 1.5 rillig
24 1.5 rillig
25 1.5 rillig /*
26 1.5 rillig * The unary operators '+' and '-' can occur in long chains. In these chains,
27 1.5 rillig * adjacent '+' must not be merged to '++' since that would be a different
28 1.5 rillig * token. The same applies to '&', but that case is irrelevant in practice
29 1.5 rillig * since the address of an address cannot be taken.
30 1.5 rillig */
31 1.5 rillig //indent input
32 1.5 rillig int var=+3;
33 1.5 rillig int mixed=+-+-+-+-+-+-+-+-+-+-+-+-+-3;
34 1.5 rillig int count=~-~-~-~-~-~-~-~-~-~-~-~-~-3;
35 1.5 rillig int same = + + + + + - - - - - 3;
36 1.5 rillig //indent end
37 1.5 rillig
38 1.5 rillig //indent run -di0
39 1.5 rillig int var = +3;
40 1.5 rillig int mixed = +-+-+-+-+-+-+-+-+-+-+-+-+-3;
41 1.5 rillig int count = ~-~-~-~-~-~-~-~-~-~-~-~-~-3;
42 1.5 rillig int same = + + + + +- - - - -3;
43 1.5 rillig //indent end
44 1.5 rillig
45 1.5 rillig
46 1.5 rillig /*
47 1.5 rillig * A special kind of unary operator is '->', which additionally suppresses the
48 1.5 rillig * next space.
49 1.5 rillig */
50 1.5 rillig //indent input
51 1.5 rillig int var = p -> member;
52 1.5 rillig //indent end
53 1.5 rillig
54 1.5 rillig //indent run -di0
55 1.5 rillig int var = p->member;
56 1.5 rillig //indent end
57