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.ApplyExpr;
24 import org.millscript.millscript.expr.Expr;
25
26 /**
27 * This class implements parenthesis syntax. The open parenthesis character can
28 * be both prefix and postfix. In the postfix form, you are applying a function,
29 * while in prefix form you are writing a simple expression.
30 *
31 * <dl>
32 * <dt>Postfix: Function application</dt>
33 * <dd><code>E( E' )</code></dd>
34 * <dt>Prefix: Simple expression</dt>
35 * <dd><code>( E )</code></dd>
36 * </dl>
37 *
38 * @see ApplyExpr
39 */
40 public final class ParenSyntax extends BothfixSyntax {
41
42 /**
43 * The matching close parenthesis character.
44 */
45 static final String CLOSE = ")".intern();
46
47 /**
48 * @see org.millscript.millscript.syntax.PostfixSyntaxInterface#postfix(java.lang.String, int, org.millscript.millscript.expr.Expr, org.millscript.millscript.syntax.Parser)
49 */
50 @Override
51 public ApplyExpr postfix( final String sym, final int prec, final Expr lhs, final Parser parser ) {
52
53
54
55 return new ApplyExpr( lhs, parser.readStmntsTo( ")" ) );
56 }
57
58 /**
59 * @see org.millscript.millscript.syntax.PrefixSyntaxInterface#prefix(java.lang.String, org.millscript.millscript.syntax.Parser)
60 */
61 @Override
62 public Expr prefix( final String sym, final Parser parser ) {
63
64 return parser.readStmntsTo( ")" );
65 }
66
67 }