KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > google > gwt > dev > jjs > ast > JBinaryOperator


1 /*
2  * Copyright 2007 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */

16 package com.google.gwt.dev.jjs.ast;
17
18 /**
19  * For precedence indices, see the Java Programming Language, 4th Edition, p.
20  * 750, Table 2. I just numbered the table top to bottom as 0 through 14. Lower
21  * number means higher precedence.
22  */

23 public class JBinaryOperator {
24
25   public static final JBinaryOperator MUL = new JBinaryOperator("*", 3);
26   public static final JBinaryOperator DIV = new JBinaryOperator("/", 3);
27   public static final JBinaryOperator MOD = new JBinaryOperator("%", 3);
28   public static final JBinaryOperator ADD = new JBinaryOperator("+", 4);
29   public static final JBinaryOperator SUB = new JBinaryOperator("-", 4);
30
31   public static final JBinaryOperator SHL = new JBinaryOperator("<<", 5);
32   public static final JBinaryOperator SHR = new JBinaryOperator(">>", 5);
33   public static final JBinaryOperator SHRU = new JBinaryOperator(">>>", 5);
34
35   public static final JBinaryOperator LT = new JBinaryOperator("<", 6);
36   public static final JBinaryOperator LTE = new JBinaryOperator("<=", 6);
37   public static final JBinaryOperator GT = new JBinaryOperator(">", 6);
38   public static final JBinaryOperator GTE = new JBinaryOperator(">=", 6);
39
40   public static final JBinaryOperator EQ = new JBinaryOperator("==", 7);
41   public static final JBinaryOperator NEQ = new JBinaryOperator("!=", 7);
42
43   public static final JBinaryOperator BIT_AND = new JBinaryOperator("&", 8);
44
45   public static final JBinaryOperator BIT_XOR = new JBinaryOperator("^", 9);
46
47   public static final JBinaryOperator BIT_OR = new JBinaryOperator("|", 10);
48
49   public static final JBinaryOperator AND = new JBinaryOperator("&&", 11);
50
51   public static final JBinaryOperator OR = new JBinaryOperator("||", 12);
52
53   // Don't renumber ASG precs without checking implementation of isAssignment()
54
public static final JBinaryOperator ASG = new JBinaryOperator("=", 14);
55   public static final JBinaryOperator ASG_ADD = new JBinaryOperator("+=", 14);
56   public static final JBinaryOperator ASG_SUB = new JBinaryOperator("-=", 14);
57   public static final JBinaryOperator ASG_MUL = new JBinaryOperator("*=", 14);
58   public static final JBinaryOperator ASG_DIV = new JBinaryOperator("/=", 14);
59   public static final JBinaryOperator ASG_MOD = new JBinaryOperator("%=", 14);
60   public static final JBinaryOperator ASG_SHL = new JBinaryOperator("<<=", 14);
61   public static final JBinaryOperator ASG_SHR = new JBinaryOperator(">>=", 14);
62   public static final JBinaryOperator ASG_SHRU = new JBinaryOperator(">>>=", 14);
63   public static final JBinaryOperator ASG_BIT_AND = new JBinaryOperator("&=",
64       14);
65   public static final JBinaryOperator ASG_BIT_OR = new JBinaryOperator("|=", 14);
66   public static final JBinaryOperator ASG_BIT_XOR = new JBinaryOperator("^=",
67       14);
68
69   private final char[] symbol;
70   private final int precedence;
71
72   private JBinaryOperator(String JavaDoc symbol, int precedence) {
73     this.symbol = symbol.toCharArray();
74     this.precedence = precedence;
75   }
76
77   public int getPrecedence() {
78     return precedence;
79   }
80
81   public char[] getSymbol() {
82     return symbol;
83   }
84
85   public boolean isAssignment() {
86     /*
87      * Beware, flaky! Maybe I should have added Yet Another Field to
88      * BinaryOperator?
89      */

90     return (precedence == ASG.getPrecedence());
91   }
92
93   public String JavaDoc toString() {
94     return new String JavaDoc(getSymbol());
95   }
96
97 }
98
Popular Tags