lsym_binary_op.c revision 1.2 1 1.2 rillig /* $NetBSD: lsym_binary_op.c,v 1.2 2021/11/25 17:46:51 rillig Exp $ */
2 1.1 rillig /* $FreeBSD$ */
3 1.1 rillig
4 1.1 rillig /*
5 1.1 rillig * Tests for the token lsym_binary_op, which represents a binary operator in
6 1.1 rillig * an expression. Examples for binary operators are '>>', '=', '+', '&&'.
7 1.1 rillig *
8 1.1 rillig * Binary operators are surrounded by blanks.
9 1.1 rillig *
10 1.1 rillig * Some tokens like '+', '*' or '&' can be either binary or unary operators,
11 1.1 rillig * with an entirely different meaning.
12 1.1 rillig *
13 1.1 rillig * The token '*' is not only a binary or a unary operator, it is used in types
14 1.1 rillig * as well, to derive a pointer type.
15 1.1 rillig *
16 1.1 rillig * See also:
17 1.1 rillig * lsym_postfix_op.c for postfix unary operators
18 1.1 rillig * lsym_unary_op.c for prefix unary operators
19 1.1 rillig * lsym_colon.c for ':'
20 1.1 rillig * lsym_question.c for '?'
21 1.1 rillig * lsym_comma.c for ','
22 1.1 rillig * C99 6.4.6 "Punctuators"
23 1.1 rillig */
24 1.1 rillig
25 1.1 rillig #indent input
26 1.1 rillig // TODO: add input
27 1.1 rillig #indent end
28 1.1 rillig
29 1.1 rillig #indent run-equals-input
30 1.2 rillig
31 1.2 rillig
32 1.2 rillig /*
33 1.2 rillig * If a '*' is immediately followed by another '*', they still form separate
34 1.2 rillig * operators. The first is a binary operator, the second is unary.
35 1.2 rillig */
36 1.2 rillig #indent input
37 1.2 rillig int var = expr**ptr;
38 1.2 rillig #indent end
39 1.2 rillig
40 1.2 rillig #indent run -di0
41 1.2 rillig int var = expr * *ptr;
42 1.2 rillig #indent end
43