1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.millscript.millscript.syntax;
22
23 import org.millscript.millscript.expr.AndAbsentExpr;
24 import org.millscript.millscript.expr.Expr;
25
26 /**
27 * This class implements <code>&&</code> syntax.
28 *
29 * <p>
30 * <code><expr> && <expr></code>
31 * </p>
32 *
33 * <p>
34 * The expression on the right hand side will only be executed if the left hand
35 * side returns not <code>null</code>, e.g. it is equivalent to writing:
36 * <code>if x /== absent then y else absent endif</code>
37 * </p>
38 *
39 * @see AndAbsentExpr
40 */
41 public final class AndAbsentSyntax extends SimplePostfixSyntax {
42
43 /**
44 * Returns an {@link AndAbsentExpr} for the parsed syntax. The left and
45 * right hand side expressions are parsed generically in {@link
46 * SimplePostfixSyntax}
47 *
48 * @param lhs expression returning any value
49 * @param rhs expression to be executed if the <code>lhs</code> is not
50 * <code>null</code>
51 * @return an {@link AndAbsentExpr} for parsed expression
52 */
53 @Override
54 public AndAbsentExpr simple( final Expr lhs, final Expr rhs ) {
55 return new AndAbsentExpr( lhs, rhs );
56 }
57
58 }