1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
import java.util.Map;
import java.util.HashMap;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
public class Expressions
{
private static final XPathExpression XPE_GET_LEFT, XPE_GET_RIGHT;
static
{
XPE_GET_LEFT = XMLManager.compile_or_die("./left");
XPE_GET_RIGHT = XMLManager.compile_or_die("./right");
}
private static enum Operator
{
/* From GHDL's ./src/vhdl/nodes_meta.adb */
IDENTITY("identity_operator", false), /* assuming it means "+ number" */
NEGATION("negation_operator", false), /* assuming it means "- number" */
ABSOLUTE("absolute_operator", false),
NOT("not_operator", false),
CONDITION("condition_operator", true), /* FIXME: what's this? */
/* Flattens vectors using an operator. */
REDUCTION_AND("reduction_and_operator", false),
REDUCTION_OR("reduction_or_operator", false),
REDUCTION_NAND("reduction_nand_operator", false),
REDUCTION_NOR("reduction_nor_operator", false),
REDUCTION_XOR("reduction_xor_operator", false),
REDUCTION_XNOR("reduction_xnor_operator", false),
AND("and_operator", true),
OR("or_operator", true),
NAND("nand_operator", true),
NOR("nor_operator", true),
XOR("xor_operator", true),
XNOR("xnor_operator", true),
EQUALITY("equality_operator", true),
INEQUALITY("inequality_operator", true),
LESS_THAN("less_than_operator", true),
LESS_THAN_OR_EQUAL("less_than_or_equal_operator", true),
GREATER_THAN("greater_than_operator", true),
GREATER_THAN_OR_EQUAL("greater_than_or_equal_operator", true),
/* FIXME: What are those? */
MATCH_EQUALITY("match_equality_operator", true),
MATCH_INEQUALITY("match_inequality_operator", true),
MATCH_LESS_THAN("match_less_than_operator", true),
MATCH_LESS_THAN_OR_EQUAL("match_less_than_or_equal_operator", true),
MATCH_GREATER_THAN("match_greater_than_operator", true),
MATCH_GREATER_THAN_OR_EQUAL("match_greater_than_or_equal_operator", true),
/* Called using "logical array OP integer", apparently. */
SLL("sll_operator", true),
SLA("sla_operator", true),
SRL("srl_operator", true),
SRA("sra_operator", true),
ROL("rol_operator", true),
ROR("ror_operator", true),
ADDITION("addition_operator", true),
SUBSTRACTION("substraction_operator", true),
CONCATENATION("concatenation_operator", true),
MULTIPLICATION("multiplication_operator", true),
DIVISION("division_operator", true),
MODULUS("modulus_operator", true),
REMAINDER("remainder_operator", true),
EXPONENTIATION("exponentiation_operator", true);
/** Static **************************************************************/
private static final Map<String, Operator> FROM_TAG;
static
{
final Operator operators[];
FROM_TAG = new HashMap<String, Operator>();
operators = Operator.class.getEnumConstants(); /* We Java now... */
for (final Operator op: operators)
{
FROM_TAG.put(op.tag, op);
}
}
/** Non-Static **********************************************************/
private final String tag;
private final boolean is_binary;
private Operator
(
final String tag,
final boolean is_binary
)
{
this.tag = tag;
this.is_binary = is_binary;
}
}
/***************************************************************************/
}
|