Home | History | Annotate | Line # | Download | only in indent
lsym_unary_op.c revision 1.7
      1  1.7  rillig /* $NetBSD: lsym_unary_op.c,v 1.7 2023/05/23 06:18:00 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.6  rillig  *
     12  1.6  rillig  * See also:
     13  1.6  rillig  *	lsym_binary_op.c
     14  1.6  rillig  *	lsym_postfix_op.c
     15  1.6  rillig  *	C11 6.4.6 "Punctuators"
     16  1.6  rillig  *	C11 6.5 "Expressions"
     17  1.1  rillig  */
     18  1.1  rillig 
     19  1.4  rillig //indent input
     20  1.3  rillig void
     21  1.3  rillig unary_operators(void)
     22  1.3  rillig {
     23  1.3  rillig 	/* In the order of appearance in C11 6.5. */
     24  1.3  rillig 	function(a++, a--, ++a, --a, &a, *a, +a, -a, ~a, !a);
     25  1.3  rillig }
     26  1.4  rillig //indent end
     27  1.1  rillig 
     28  1.4  rillig //indent run-equals-input
     29  1.5  rillig 
     30  1.5  rillig 
     31  1.5  rillig /*
     32  1.5  rillig  * The unary operators '+' and '-' can occur in long chains.  In these chains,
     33  1.5  rillig  * adjacent '+' must not be merged to '++' since that would be a different
     34  1.5  rillig  * token.  The same applies to '&', but that case is irrelevant in practice
     35  1.5  rillig  * since the address of an address cannot be taken.
     36  1.5  rillig  */
     37  1.5  rillig //indent input
     38  1.5  rillig int var=+3;
     39  1.5  rillig int mixed=+-+-+-+-+-+-+-+-+-+-+-+-+-3;
     40  1.5  rillig int count=~-~-~-~-~-~-~-~-~-~-~-~-~-3;
     41  1.5  rillig int same = + + + + + - - - - - 3;
     42  1.5  rillig //indent end
     43  1.5  rillig 
     44  1.5  rillig //indent run -di0
     45  1.5  rillig int var = +3;
     46  1.5  rillig int mixed = +-+-+-+-+-+-+-+-+-+-+-+-+-3;
     47  1.5  rillig int count = ~-~-~-~-~-~-~-~-~-~-~-~-~-3;
     48  1.5  rillig int same = + + + + +- - - - -3;
     49  1.5  rillig //indent end
     50  1.5  rillig 
     51  1.5  rillig 
     52  1.5  rillig /*
     53  1.5  rillig  * A special kind of unary operator is '->', which additionally suppresses the
     54  1.5  rillig  * next space.
     55  1.5  rillig  */
     56  1.5  rillig //indent input
     57  1.5  rillig int var = p -> member;
     58  1.5  rillig //indent end
     59  1.5  rillig 
     60  1.5  rillig //indent run -di0
     61  1.5  rillig int var = p->member;
     62  1.5  rillig //indent end
     63  1.6  rillig 
     64  1.6  rillig 
     65  1.6  rillig //indent input
     66  1.6  rillig void
     67  1.6  rillig unary_operators(void)
     68  1.6  rillig {
     69  1.6  rillig 	++prefix_increment;
     70  1.6  rillig 	--prefix_decrement;
     71  1.6  rillig 	int *address = &lvalue;
     72  1.6  rillig 	int dereferenced = *address;
     73  1.6  rillig 	int positive = +number;
     74  1.6  rillig 	int negative = -number;
     75  1.6  rillig 	bool negated = !condition;
     76  1.6  rillig }
     77  1.6  rillig //indent end
     78  1.6  rillig 
     79  1.6  rillig //indent run-equals-input -di0
     80  1.7  rillig 
     81  1.7  rillig 
     82  1.7  rillig //indent input
     83  1.7  rillig {
     84  1.7  rillig sbuf_t *sb = *(sbuf_t **)sp;
     85  1.7  rillig }
     86  1.7  rillig //indent end
     87  1.7  rillig 
     88  1.7  rillig //indent run -di0
     89  1.7  rillig {
     90  1.7  rillig // $ FIXME: Wrong spacing between the '*'.
     91  1.7  rillig // $ FIXME: Wrong spacing after the cast.
     92  1.7  rillig 	sbuf_t *sb = *(sbuf_t * *) sp;
     93  1.7  rillig }
     94  1.7  rillig //indent end
     95