~ubuntu-branches/ubuntu/oneiric/weka/oneiric

« back to all changes in this revision

Viewing changes to .pc/java_cup.patch/src/main/java/weka/filters/unsupervised/instance/subsetbyexpression/Parser.java

  • Committer: Bazaar Package Importer
  • Author(s): Soeren Sonnenburg
  • Date: 2010-04-23 22:33:11 UTC
  • Revision ID: james.westby@ubuntu.com-20100423223311-ctmj7n1pqeppqy2a
Tags: 3.6.0-3
* Bump Standards-Version to 3.8.4 (no changes required).
* Switch to dpkg-source 3.0 (quilt) format.
* Track only stable releases in watch file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
//----------------------------------------------------
 
3
// The following code was generated by CUP v0.11a beta 20060608
 
4
// Thu Jun 19 13:14:21 NZST 2008
 
5
//----------------------------------------------------
 
6
 
 
7
/*
 
8
 * STANDARD ML OF NEW JERSEY COPYRIGHT NOTICE, LICENSE AND DISCLAIMER.
 
9
 * 
 
10
 * Copyright (c) 1989-1998 by Lucent Technologies
 
11
 * 
 
12
 * Permission to use, copy, modify, and distribute this software and its
 
13
 * documentation for any purpose and without fee is hereby granted, provided
 
14
 * that the above copyright notice appear in all copies and that both the
 
15
 * copyright notice and this permission notice and warranty disclaimer appear
 
16
 * in supporting documentation, and that the name of Lucent Technologies, Bell
 
17
 * Labs or any Lucent entity not be used in advertising or publicity pertaining
 
18
 * to distribution of the software without specific, written prior permission.
 
19
 *
 
20
 * Lucent disclaims all warranties with regard to this software, including all
 
21
 * implied warranties of merchantability and fitness. In no event shall Lucent
 
22
 * be liable for any special, indirect or consequential damages or any damages
 
23
 * whatsoever resulting from loss of use, data or profits, whether in an action
 
24
 * of contract, negligence or other tortious action, arising out of or in
 
25
 * connection with the use or performance of this software. 
 
26
 *
 
27
 * Taken from this URL:
 
28
 * http://www.smlnj.org/license.html
 
29
 * 
 
30
 * This license is compatible with the GNU GPL (see section "Standard ML of New
 
31
 * Jersey Copyright License"):
 
32
 * http://www.gnu.org/licenses/license-list.html#StandardMLofNJ
 
33
 */
 
34
 
 
35
/*
 
36
 * Copyright 1996-1999 by Scott Hudson, Frank Flannery, C. Scott Ananian
 
37
 */
 
38
 
 
39
package weka.filters.unsupervised.instance.subsetbyexpression;
 
40
 
 
41
import weka.core.*;
 
42
import weka.core.parser.java_cup.runtime.*;
 
43
import java.io.*;
 
44
import java.util.*;
 
45
 
 
46
/** CUP v0.11a beta 20060608 generated parser.
 
47
  * @version Thu Jun 19 13:14:21 NZST 2008
 
48
  */
 
49
public class Parser extends weka.core.parser.java_cup.runtime.lr_parser {
 
50
 
 
51
  /** Default constructor. */
 
52
  public Parser() {super();}
 
53
 
 
54
  /** Constructor which sets the default scanner. */
 
55
  public Parser(weka.core.parser.java_cup.runtime.Scanner s) {super(s);}
 
56
 
 
57
  /** Constructor which sets the default scanner. */
 
58
  public Parser(weka.core.parser.java_cup.runtime.Scanner s, weka.core.parser.java_cup.runtime.SymbolFactory sf) {super(s,sf);}
 
59
 
 
60
  /** Production table. */
 
61
  protected static final short _production_table[][] = 
 
62
    unpackFromStrings(new String[] {
 
63
    "\000\046\000\002\002\004\000\002\002\004\000\002\002" +
 
64
    "\003\000\002\003\003\000\002\007\003\000\002\007\003" +
 
65
    "\000\002\007\003\000\002\007\005\000\002\007\005\000" +
 
66
    "\002\007\005\000\002\007\005\000\002\007\005\000\002" +
 
67
    "\007\005\000\002\007\004\000\002\007\005\000\002\007" +
 
68
    "\005\000\002\007\005\000\002\007\006\000\002\004\003" +
 
69
    "\000\002\004\003\000\002\004\005\000\002\004\003\000" +
 
70
    "\002\004\003\000\002\005\005\000\002\005\005\000\002" +
 
71
    "\005\005\000\002\005\005\000\002\006\006\000\002\006" +
 
72
    "\006\000\002\006\006\000\002\006\006\000\002\006\006" +
 
73
    "\000\002\006\006\000\002\006\006\000\002\006\006\000" +
 
74
    "\002\006\006\000\002\006\010\000\002\006\006" });
 
75
 
 
76
  /** Access to production table. */
 
77
  public short[][] production_table() {return _production_table;}
 
78
 
 
79
  /** Parse-action table. */
 
80
  protected static final short[][] _action_table = 
 
81
    unpackFromStrings(new String[] {
 
82
    "\000\142\000\050\005\016\007\033\014\026\015\012\016" +
 
83
    "\020\017\021\020\004\021\006\022\034\023\014\024\015" +
 
84
    "\025\011\026\017\027\013\030\031\036\010\042\024\043" +
 
85
    "\022\044\007\001\002\000\004\005\142\001\002\000\024" +
 
86
    "\010\045\011\043\012\046\013\044\031\110\032\106\033" +
 
87
    "\107\034\104\035\105\001\002\000\004\005\137\001\002" +
 
88
    "\000\030\006\uffee\010\uffee\011\uffee\012\uffee\013\uffee\031" +
 
89
    "\uffee\032\uffee\033\uffee\034\uffee\035\uffee\041\135\001\002" +
 
90
    "\000\050\005\016\007\033\014\026\015\012\016\020\017" +
 
91
    "\021\020\004\021\006\022\034\023\014\024\015\025\011" +
 
92
    "\026\017\027\013\030\031\036\010\042\024\043\022\044" +
 
93
    "\007\001\002\000\004\005\127\001\002\000\004\005\124" +
 
94
    "\001\002\000\060\002\ufffc\005\ufffc\006\ufffc\007\ufffc\014" +
 
95
    "\ufffc\015\ufffc\016\ufffc\017\ufffc\020\ufffc\021\ufffc\022\ufffc" +
 
96
    "\023\ufffc\024\ufffc\025\ufffc\026\ufffc\027\ufffc\030\ufffc\036" +
 
97
    "\ufffc\037\ufffc\040\ufffc\042\ufffc\043\ufffc\044\ufffc\001\002" +
 
98
    "\000\004\005\121\001\002\000\004\005\116\001\002\000" +
 
99
    "\050\005\016\007\033\014\026\015\012\016\020\017\021" +
 
100
    "\020\004\021\006\022\034\023\014\024\015\025\011\026" +
 
101
    "\017\027\013\030\031\036\010\042\024\043\022\044\007" +
 
102
    "\001\002\000\004\005\076\001\002\000\004\005\073\001" +
 
103
    "\002\000\004\005\070\001\002\000\060\002\ufffd\005\ufffd" +
 
104
    "\006\ufffd\007\ufffd\014\ufffd\015\ufffd\016\ufffd\017\ufffd\020" +
 
105
    "\ufffd\021\ufffd\022\ufffd\023\ufffd\024\ufffd\025\ufffd\026\ufffd" +
 
106
    "\027\ufffd\030\ufffd\036\ufffd\037\ufffd\040\ufffd\042\ufffd\043" +
 
107
    "\ufffd\044\ufffd\001\002\000\052\002\uffff\005\uffff\007\uffff" +
 
108
    "\014\uffff\015\uffff\016\uffff\017\uffff\020\uffff\021\uffff\022" +
 
109
    "\uffff\023\uffff\024\uffff\025\uffff\026\uffff\027\uffff\030\uffff" +
 
110
    "\036\uffff\042\uffff\043\uffff\044\uffff\001\002\000\104\002" +
 
111
    "\uffef\004\uffef\005\uffef\006\uffef\007\uffef\010\uffef\011\uffef" +
 
112
    "\012\uffef\013\uffef\014\uffef\015\uffef\016\uffef\017\uffef\020" +
 
113
    "\uffef\021\uffef\022\uffef\023\uffef\024\uffef\025\uffef\026\uffef" +
 
114
    "\027\uffef\030\uffef\031\uffef\032\uffef\033\uffef\034\uffef\035" +
 
115
    "\uffef\036\uffef\037\uffef\040\uffef\042\uffef\043\uffef\044\uffef" +
 
116
    "\001\002\000\104\002\uffeb\004\uffeb\005\uffeb\006\uffeb\007" +
 
117
    "\uffeb\010\uffeb\011\uffeb\012\uffeb\013\uffeb\014\uffeb\015\uffeb" +
 
118
    "\016\uffeb\017\uffeb\020\uffeb\021\uffeb\022\uffeb\023\uffeb\024" +
 
119
    "\uffeb\025\uffeb\026\uffeb\027\uffeb\030\uffeb\031\uffeb\032\uffeb" +
 
120
    "\033\uffeb\034\uffeb\035\uffeb\036\uffeb\037\uffeb\040\uffeb\042" +
 
121
    "\uffeb\043\uffeb\044\uffeb\001\002\000\004\005\065\001\002" +
 
122
    "\000\052\002\064\005\016\007\033\014\026\015\012\016" +
 
123
    "\020\017\021\020\004\021\006\022\034\023\014\024\015" +
 
124
    "\025\011\026\017\027\013\030\031\036\010\042\024\043" +
 
125
    "\022\044\007\001\002\000\056\002\ufffe\005\ufffe\007\ufffe" +
 
126
    "\014\ufffe\015\ufffe\016\ufffe\017\ufffe\020\ufffe\021\ufffe\022" +
 
127
    "\ufffe\023\ufffe\024\ufffe\025\ufffe\026\ufffe\027\ufffe\030\ufffe" +
 
128
    "\036\ufffe\037\057\040\060\042\ufffe\043\ufffe\044\ufffe\001" +
 
129
    "\002\000\060\002\ufffb\005\ufffb\006\ufffb\007\ufffb\014\ufffb" +
 
130
    "\015\ufffb\016\ufffb\017\ufffb\020\ufffb\021\ufffb\022\ufffb\023" +
 
131
    "\ufffb\024\ufffb\025\ufffb\026\ufffb\027\ufffb\030\ufffb\036\ufffb" +
 
132
    "\037\ufffb\040\ufffb\042\ufffb\043\ufffb\044\ufffb\001\002\000" +
 
133
    "\104\002\uffec\004\uffec\005\uffec\006\uffec\007\uffec\010\uffec" +
 
134
    "\011\uffec\012\uffec\013\uffec\014\uffec\015\uffec\016\uffec\017" +
 
135
    "\uffec\020\uffec\021\uffec\022\uffec\023\uffec\024\uffec\025\uffec" +
 
136
    "\026\uffec\027\uffec\030\uffec\031\uffec\032\uffec\033\uffec\034" +
 
137
    "\uffec\035\uffec\036\uffec\037\uffec\040\uffec\042\uffec\043\uffec" +
 
138
    "\044\uffec\001\002\000\004\005\054\001\002\000\004\005" +
 
139
    "\035\001\002\000\036\005\040\014\026\015\012\016\020" +
 
140
    "\017\021\020\004\021\006\022\034\023\014\024\015\025" +
 
141
    "\011\026\017\042\024\044\036\001\002\000\104\002\uffee" +
 
142
    "\004\uffee\005\uffee\006\uffee\007\uffee\010\uffee\011\uffee\012" +
 
143
    "\uffee\013\uffee\014\uffee\015\uffee\016\uffee\017\uffee\020\uffee" +
 
144
    "\021\uffee\022\uffee\023\uffee\024\uffee\025\uffee\026\uffee\027" +
 
145
    "\uffee\030\uffee\031\uffee\032\uffee\033\uffee\034\uffee\035\uffee" +
 
146
    "\036\uffee\037\uffee\040\uffee\042\uffee\043\uffee\044\uffee\001" +
 
147
    "\002\000\014\006\053\010\045\011\043\012\046\013\044" +
 
148
    "\001\002\000\036\005\040\014\026\015\012\016\020\017" +
 
149
    "\021\020\004\021\006\022\034\023\014\024\015\025\011" +
 
150
    "\026\017\042\024\044\036\001\002\000\014\006\042\010" +
 
151
    "\045\011\043\012\046\013\044\001\002\000\104\002\uffed" +
 
152
    "\004\uffed\005\uffed\006\uffed\007\uffed\010\uffed\011\uffed\012" +
 
153
    "\uffed\013\uffed\014\uffed\015\uffed\016\uffed\017\uffed\020\uffed" +
 
154
    "\021\uffed\022\uffed\023\uffed\024\uffed\025\uffed\026\uffed\027" +
 
155
    "\uffed\030\uffed\031\uffed\032\uffed\033\uffed\034\uffed\035\uffed" +
 
156
    "\036\uffed\037\uffed\040\uffed\042\uffed\043\uffed\044\uffed\001" +
 
157
    "\002\000\036\005\040\014\026\015\012\016\020\017\021" +
 
158
    "\020\004\021\006\022\034\023\014\024\015\025\011\026" +
 
159
    "\017\042\024\044\036\001\002\000\036\005\040\014\026" +
 
160
    "\015\012\016\020\017\021\020\004\021\006\022\034\023" +
 
161
    "\014\024\015\025\011\026\017\042\024\044\036\001\002" +
 
162
    "\000\036\005\040\014\026\015\012\016\020\017\021\020" +
 
163
    "\004\021\006\022\034\023\014\024\015\025\011\026\017" +
 
164
    "\042\024\044\036\001\002\000\036\005\040\014\026\015" +
 
165
    "\012\016\020\017\021\020\004\021\006\022\034\023\014" +
 
166
    "\024\015\025\011\026\017\042\024\044\036\001\002\000" +
 
167
    "\104\002\uffe8\004\uffe8\005\uffe8\006\uffe8\007\uffe8\010\uffe8" +
 
168
    "\011\uffe8\012\uffe8\013\uffe8\014\uffe8\015\uffe8\016\uffe8\017" +
 
169
    "\uffe8\020\uffe8\021\uffe8\022\uffe8\023\uffe8\024\uffe8\025\uffe8" +
 
170
    "\026\uffe8\027\uffe8\030\uffe8\031\uffe8\032\uffe8\033\uffe8\034" +
 
171
    "\uffe8\035\uffe8\036\uffe8\037\uffe8\040\uffe8\042\uffe8\043\uffe8" +
 
172
    "\044\uffe8\001\002\000\104\002\uffe9\004\uffe9\005\uffe9\006" +
 
173
    "\uffe9\007\uffe9\010\uffe9\011\uffe9\012\046\013\044\014\uffe9" +
 
174
    "\015\uffe9\016\uffe9\017\uffe9\020\uffe9\021\uffe9\022\uffe9\023" +
 
175
    "\uffe9\024\uffe9\025\uffe9\026\uffe9\027\uffe9\030\uffe9\031\uffe9" +
 
176
    "\032\uffe9\033\uffe9\034\uffe9\035\uffe9\036\uffe9\037\uffe9\040" +
 
177
    "\uffe9\042\uffe9\043\uffe9\044\uffe9\001\002\000\104\002\uffe7" +
 
178
    "\004\uffe7\005\uffe7\006\uffe7\007\uffe7\010\uffe7\011\uffe7\012" +
 
179
    "\uffe7\013\uffe7\014\uffe7\015\uffe7\016\uffe7\017\uffe7\020\uffe7" +
 
180
    "\021\uffe7\022\uffe7\023\uffe7\024\uffe7\025\uffe7\026\uffe7\027" +
 
181
    "\uffe7\030\uffe7\031\uffe7\032\uffe7\033\uffe7\034\uffe7\035\uffe7" +
 
182
    "\036\uffe7\037\uffe7\040\uffe7\042\uffe7\043\uffe7\044\uffe7\001" +
 
183
    "\002\000\104\002\uffea\004\uffea\005\uffea\006\uffea\007\uffea" +
 
184
    "\010\uffea\011\uffea\012\046\013\044\014\uffea\015\uffea\016" +
 
185
    "\uffea\017\uffea\020\uffea\021\uffea\022\uffea\023\uffea\024\uffea" +
 
186
    "\025\uffea\026\uffea\027\uffea\030\uffea\031\uffea\032\uffea\033" +
 
187
    "\uffea\034\uffea\035\uffea\036\uffea\037\uffea\040\uffea\042\uffea" +
 
188
    "\043\uffea\044\uffea\001\002\000\104\002\uffe0\004\uffe0\005" +
 
189
    "\uffe0\006\uffe0\007\uffe0\010\uffe0\011\uffe0\012\uffe0\013\uffe0" +
 
190
    "\014\uffe0\015\uffe0\016\uffe0\017\uffe0\020\uffe0\021\uffe0\022" +
 
191
    "\uffe0\023\uffe0\024\uffe0\025\uffe0\026\uffe0\027\uffe0\030\uffe0" +
 
192
    "\031\uffe0\032\uffe0\033\uffe0\034\uffe0\035\uffe0\036\uffe0\037" +
 
193
    "\uffe0\040\uffe0\042\uffe0\043\uffe0\044\uffe0\001\002\000\004" +
 
194
    "\044\055\001\002\000\004\006\056\001\002\000\060\002" +
 
195
    "\ufff0\005\ufff0\006\ufff0\007\ufff0\014\ufff0\015\ufff0\016\ufff0" +
 
196
    "\017\ufff0\020\ufff0\021\ufff0\022\ufff0\023\ufff0\024\ufff0\025" +
 
197
    "\ufff0\026\ufff0\027\ufff0\030\ufff0\036\ufff0\037\ufff0\040\ufff0" +
 
198
    "\042\ufff0\043\ufff0\044\ufff0\001\002\000\050\005\016\007" +
 
199
    "\033\014\026\015\012\016\020\017\021\020\004\021\006" +
 
200
    "\022\034\023\014\024\015\025\011\026\017\027\013\030" +
 
201
    "\031\036\010\042\024\043\022\044\007\001\002\000\050" +
 
202
    "\005\016\007\033\014\026\015\012\016\020\017\021\020" +
 
203
    "\004\021\006\022\034\023\014\024\015\025\011\026\017" +
 
204
    "\027\013\030\031\036\010\042\024\043\022\044\007\001" +
 
205
    "\002\000\060\002\ufff2\005\ufff2\006\ufff2\007\ufff2\014\ufff2" +
 
206
    "\015\ufff2\016\ufff2\017\ufff2\020\ufff2\021\ufff2\022\ufff2\023" +
 
207
    "\ufff2\024\ufff2\025\ufff2\026\ufff2\027\ufff2\030\ufff2\036\ufff2" +
 
208
    "\037\ufff2\040\ufff2\042\ufff2\043\ufff2\044\ufff2\001\002\000" +
 
209
    "\060\002\ufff3\005\ufff3\006\ufff3\007\ufff3\014\ufff3\015\ufff3" +
 
210
    "\016\ufff3\017\ufff3\020\ufff3\021\ufff3\022\ufff3\023\ufff3\024" +
 
211
    "\ufff3\025\ufff3\026\ufff3\027\ufff3\030\ufff3\036\ufff3\037\ufff3" +
 
212
    "\040\ufff3\042\ufff3\043\ufff3\044\ufff3\001\002\000\052\002" +
 
213
    "\001\005\001\007\001\014\001\015\001\016\001\017\001" +
 
214
    "\020\001\021\001\022\001\023\001\024\001\025\001\026" +
 
215
    "\001\027\001\030\001\036\001\042\001\043\001\044\001" +
 
216
    "\001\002\000\004\002\000\001\002\000\036\005\040\014" +
 
217
    "\026\015\012\016\020\017\021\020\004\021\006\022\034" +
 
218
    "\023\014\024\015\025\011\026\017\042\024\044\036\001" +
 
219
    "\002\000\014\006\067\010\045\011\043\012\046\013\044" +
 
220
    "\001\002\000\104\002\uffe6\004\uffe6\005\uffe6\006\uffe6\007" +
 
221
    "\uffe6\010\uffe6\011\uffe6\012\uffe6\013\uffe6\014\uffe6\015\uffe6" +
 
222
    "\016\uffe6\017\uffe6\020\uffe6\021\uffe6\022\uffe6\023\uffe6\024" +
 
223
    "\uffe6\025\uffe6\026\uffe6\027\uffe6\030\uffe6\031\uffe6\032\uffe6" +
 
224
    "\033\uffe6\034\uffe6\035\uffe6\036\uffe6\037\uffe6\040\uffe6\042" +
 
225
    "\uffe6\043\uffe6\044\uffe6\001\002\000\036\005\040\014\026" +
 
226
    "\015\012\016\020\017\021\020\004\021\006\022\034\023" +
 
227
    "\014\024\015\025\011\026\017\042\024\044\036\001\002" +
 
228
    "\000\014\006\072\010\045\011\043\012\046\013\044\001" +
 
229
    "\002\000\104\002\uffe3\004\uffe3\005\uffe3\006\uffe3\007\uffe3" +
 
230
    "\010\uffe3\011\uffe3\012\uffe3\013\uffe3\014\uffe3\015\uffe3\016" +
 
231
    "\uffe3\017\uffe3\020\uffe3\021\uffe3\022\uffe3\023\uffe3\024\uffe3" +
 
232
    "\025\uffe3\026\uffe3\027\uffe3\030\uffe3\031\uffe3\032\uffe3\033" +
 
233
    "\uffe3\034\uffe3\035\uffe3\036\uffe3\037\uffe3\040\uffe3\042\uffe3" +
 
234
    "\043\uffe3\044\uffe3\001\002\000\036\005\040\014\026\015" +
 
235
    "\012\016\020\017\021\020\004\021\006\022\034\023\014" +
 
236
    "\024\015\025\011\026\017\042\024\044\036\001\002\000" +
 
237
    "\014\006\075\010\045\011\043\012\046\013\044\001\002" +
 
238
    "\000\104\002\uffe4\004\uffe4\005\uffe4\006\uffe4\007\uffe4\010" +
 
239
    "\uffe4\011\uffe4\012\uffe4\013\uffe4\014\uffe4\015\uffe4\016\uffe4" +
 
240
    "\017\uffe4\020\uffe4\021\uffe4\022\uffe4\023\uffe4\024\uffe4\025" +
 
241
    "\uffe4\026\uffe4\027\uffe4\030\uffe4\031\uffe4\032\uffe4\033\uffe4" +
 
242
    "\034\uffe4\035\uffe4\036\uffe4\037\uffe4\040\uffe4\042\uffe4\043" +
 
243
    "\uffe4\044\uffe4\001\002\000\036\005\040\014\026\015\012" +
 
244
    "\016\020\017\021\020\004\021\006\022\034\023\014\024" +
 
245
    "\015\025\011\026\017\042\024\044\036\001\002\000\014" +
 
246
    "\006\100\010\045\011\043\012\046\013\044\001\002\000" +
 
247
    "\104\002\uffdc\004\uffdc\005\uffdc\006\uffdc\007\uffdc\010\uffdc" +
 
248
    "\011\uffdc\012\uffdc\013\uffdc\014\uffdc\015\uffdc\016\uffdc\017" +
 
249
    "\uffdc\020\uffdc\021\uffdc\022\uffdc\023\uffdc\024\uffdc\025\uffdc" +
 
250
    "\026\uffdc\027\uffdc\030\uffdc\031\uffdc\032\uffdc\033\uffdc\034" +
 
251
    "\uffdc\035\uffdc\036\uffdc\037\uffdc\040\uffdc\042\uffdc\043\uffdc" +
 
252
    "\044\uffdc\001\002\000\026\006\042\010\045\011\043\012" +
 
253
    "\046\013\044\031\110\032\106\033\107\034\104\035\105" +
 
254
    "\001\002\000\010\006\103\037\057\040\060\001\002\000" +
 
255
    "\060\002\ufff5\005\ufff5\006\ufff5\007\ufff5\014\ufff5\015\ufff5" +
 
256
    "\016\ufff5\017\ufff5\020\ufff5\021\ufff5\022\ufff5\023\ufff5\024" +
 
257
    "\ufff5\025\ufff5\026\ufff5\027\ufff5\030\ufff5\036\ufff5\037\ufff5" +
 
258
    "\040\ufff5\042\ufff5\043\ufff5\044\ufff5\001\002\000\036\005" +
 
259
    "\040\014\026\015\012\016\020\017\021\020\004\021\006" +
 
260
    "\022\034\023\014\024\015\025\011\026\017\042\024\044" +
 
261
    "\036\001\002\000\036\005\040\014\026\015\012\016\020" +
 
262
    "\017\021\020\004\021\006\022\034\023\014\024\015\025" +
 
263
    "\011\026\017\042\024\044\036\001\002\000\036\005\040" +
 
264
    "\014\026\015\012\016\020\017\021\020\004\021\006\022" +
 
265
    "\034\023\014\024\015\025\011\026\017\042\024\044\036" +
 
266
    "\001\002\000\036\005\040\014\026\015\012\016\020\017" +
 
267
    "\021\020\004\021\006\022\034\023\014\024\015\025\011" +
 
268
    "\026\017\042\024\044\036\001\002\000\036\005\040\014" +
 
269
    "\026\015\012\016\020\017\021\020\004\021\006\022\034" +
 
270
    "\023\014\024\015\025\011\026\017\042\024\044\036\001" +
 
271
    "\002\000\070\002\ufffa\005\ufffa\006\ufffa\007\ufffa\010\045" +
 
272
    "\011\043\012\046\013\044\014\ufffa\015\ufffa\016\ufffa\017" +
 
273
    "\ufffa\020\ufffa\021\ufffa\022\ufffa\023\ufffa\024\ufffa\025\ufffa" +
 
274
    "\026\ufffa\027\ufffa\030\ufffa\036\ufffa\037\ufffa\040\ufffa\042" +
 
275
    "\ufffa\043\ufffa\044\ufffa\001\002\000\070\002\ufff8\005\ufff8" +
 
276
    "\006\ufff8\007\ufff8\010\045\011\043\012\046\013\044\014" +
 
277
    "\ufff8\015\ufff8\016\ufff8\017\ufff8\020\ufff8\021\ufff8\022\ufff8" +
 
278
    "\023\ufff8\024\ufff8\025\ufff8\026\ufff8\027\ufff8\030\ufff8\036" +
 
279
    "\ufff8\037\ufff8\040\ufff8\042\ufff8\043\ufff8\044\ufff8\001\002" +
 
280
    "\000\070\002\ufff9\005\ufff9\006\ufff9\007\ufff9\010\045\011" +
 
281
    "\043\012\046\013\044\014\ufff9\015\ufff9\016\ufff9\017\ufff9" +
 
282
    "\020\ufff9\021\ufff9\022\ufff9\023\ufff9\024\ufff9\025\ufff9\026" +
 
283
    "\ufff9\027\ufff9\030\ufff9\036\ufff9\037\ufff9\040\ufff9\042\ufff9" +
 
284
    "\043\ufff9\044\ufff9\001\002\000\070\002\ufff6\005\ufff6\006" +
 
285
    "\ufff6\007\ufff6\010\045\011\043\012\046\013\044\014\ufff6" +
 
286
    "\015\ufff6\016\ufff6\017\ufff6\020\ufff6\021\ufff6\022\ufff6\023" +
 
287
    "\ufff6\024\ufff6\025\ufff6\026\ufff6\027\ufff6\030\ufff6\036\ufff6" +
 
288
    "\037\ufff6\040\ufff6\042\ufff6\043\ufff6\044\ufff6\001\002\000" +
 
289
    "\070\002\ufff7\005\ufff7\006\ufff7\007\ufff7\010\045\011\043" +
 
290
    "\012\046\013\044\014\ufff7\015\ufff7\016\ufff7\017\ufff7\020" +
 
291
    "\ufff7\021\ufff7\022\ufff7\023\ufff7\024\ufff7\025\ufff7\026\ufff7" +
 
292
    "\027\ufff7\030\ufff7\036\ufff7\037\ufff7\040\ufff7\042\ufff7\043" +
 
293
    "\ufff7\044\ufff7\001\002\000\036\005\040\014\026\015\012" +
 
294
    "\016\020\017\021\020\004\021\006\022\034\023\014\024" +
 
295
    "\015\025\011\026\017\042\024\044\036\001\002\000\014" +
 
296
    "\006\120\010\045\011\043\012\046\013\044\001\002\000" +
 
297
    "\104\002\uffde\004\uffde\005\uffde\006\uffde\007\uffde\010\uffde" +
 
298
    "\011\uffde\012\uffde\013\uffde\014\uffde\015\uffde\016\uffde\017" +
 
299
    "\uffde\020\uffde\021\uffde\022\uffde\023\uffde\024\uffde\025\uffde" +
 
300
    "\026\uffde\027\uffde\030\uffde\031\uffde\032\uffde\033\uffde\034" +
 
301
    "\uffde\035\uffde\036\uffde\037\uffde\040\uffde\042\uffde\043\uffde" +
 
302
    "\044\uffde\001\002\000\036\005\040\014\026\015\012\016" +
 
303
    "\020\017\021\020\004\021\006\022\034\023\014\024\015" +
 
304
    "\025\011\026\017\042\024\044\036\001\002\000\014\006" +
 
305
    "\123\010\045\011\043\012\046\013\044\001\002\000\104" +
 
306
    "\002\uffdf\004\uffdf\005\uffdf\006\uffdf\007\uffdf\010\uffdf\011" +
 
307
    "\uffdf\012\uffdf\013\uffdf\014\uffdf\015\uffdf\016\uffdf\017\uffdf" +
 
308
    "\020\uffdf\021\uffdf\022\uffdf\023\uffdf\024\uffdf\025\uffdf\026" +
 
309
    "\uffdf\027\uffdf\030\uffdf\031\uffdf\032\uffdf\033\uffdf\034\uffdf" +
 
310
    "\035\uffdf\036\uffdf\037\uffdf\040\uffdf\042\uffdf\043\uffdf\044" +
 
311
    "\uffdf\001\002\000\036\005\040\014\026\015\012\016\020" +
 
312
    "\017\021\020\004\021\006\022\034\023\014\024\015\025" +
 
313
    "\011\026\017\042\024\044\036\001\002\000\014\006\126" +
 
314
    "\010\045\011\043\012\046\013\044\001\002\000\104\002" +
 
315
    "\uffe5\004\uffe5\005\uffe5\006\uffe5\007\uffe5\010\uffe5\011\uffe5" +
 
316
    "\012\uffe5\013\uffe5\014\uffe5\015\uffe5\016\uffe5\017\uffe5\020" +
 
317
    "\uffe5\021\uffe5\022\uffe5\023\uffe5\024\uffe5\025\uffe5\026\uffe5" +
 
318
    "\027\uffe5\030\uffe5\031\uffe5\032\uffe5\033\uffe5\034\uffe5\035" +
 
319
    "\uffe5\036\uffe5\037\uffe5\040\uffe5\042\uffe5\043\uffe5\044\uffe5" +
 
320
    "\001\002\000\036\005\040\014\026\015\012\016\020\017" +
 
321
    "\021\020\004\021\006\022\034\023\014\024\015\025\011" +
 
322
    "\026\017\042\024\044\036\001\002\000\014\004\131\010" +
 
323
    "\045\011\043\012\046\013\044\001\002\000\036\005\040" +
 
324
    "\014\026\015\012\016\020\017\021\020\004\021\006\022" +
 
325
    "\034\023\014\024\015\025\011\026\017\042\024\044\036" +
 
326
    "\001\002\000\014\006\133\010\045\011\043\012\046\013" +
 
327
    "\044\001\002\000\104\002\uffdd\004\uffdd\005\uffdd\006\uffdd" +
 
328
    "\007\uffdd\010\uffdd\011\uffdd\012\uffdd\013\uffdd\014\uffdd\015" +
 
329
    "\uffdd\016\uffdd\017\uffdd\020\uffdd\021\uffdd\022\uffdd\023\uffdd" +
 
330
    "\024\uffdd\025\uffdd\026\uffdd\027\uffdd\030\uffdd\031\uffdd\032" +
 
331
    "\uffdd\033\uffdd\034\uffdd\035\uffdd\036\uffdd\037\uffdd\040\uffdd" +
 
332
    "\042\uffdd\043\uffdd\044\uffdd\001\002\000\060\002\ufff4\005" +
 
333
    "\ufff4\006\ufff4\007\ufff4\014\ufff4\015\ufff4\016\ufff4\017\ufff4" +
 
334
    "\020\ufff4\021\ufff4\022\ufff4\023\ufff4\024\ufff4\025\ufff4\026" +
 
335
    "\ufff4\027\ufff4\030\ufff4\036\ufff4\037\ufff4\040\ufff4\042\ufff4" +
 
336
    "\043\ufff4\044\ufff4\001\002\000\004\045\136\001\002\000" +
 
337
    "\060\002\ufff1\005\ufff1\006\ufff1\007\ufff1\014\ufff1\015\ufff1" +
 
338
    "\016\ufff1\017\ufff1\020\ufff1\021\ufff1\022\ufff1\023\ufff1\024" +
 
339
    "\ufff1\025\ufff1\026\ufff1\027\ufff1\030\ufff1\036\ufff1\037\ufff1" +
 
340
    "\040\ufff1\042\ufff1\043\ufff1\044\ufff1\001\002\000\036\005" +
 
341
    "\040\014\026\015\012\016\020\017\021\020\004\021\006" +
 
342
    "\022\034\023\014\024\015\025\011\026\017\042\024\044" +
 
343
    "\036\001\002\000\014\006\141\010\045\011\043\012\046" +
 
344
    "\013\044\001\002\000\104\002\uffe1\004\uffe1\005\uffe1\006" +
 
345
    "\uffe1\007\uffe1\010\uffe1\011\uffe1\012\uffe1\013\uffe1\014\uffe1" +
 
346
    "\015\uffe1\016\uffe1\017\uffe1\020\uffe1\021\uffe1\022\uffe1\023" +
 
347
    "\uffe1\024\uffe1\025\uffe1\026\uffe1\027\uffe1\030\uffe1\031\uffe1" +
 
348
    "\032\uffe1\033\uffe1\034\uffe1\035\uffe1\036\uffe1\037\uffe1\040" +
 
349
    "\uffe1\042\uffe1\043\uffe1\044\uffe1\001\002\000\036\005\040" +
 
350
    "\014\026\015\012\016\020\017\021\020\004\021\006\022" +
 
351
    "\034\023\014\024\015\025\011\026\017\042\024\044\036" +
 
352
    "\001\002\000\014\006\144\010\045\011\043\012\046\013" +
 
353
    "\044\001\002\000\104\002\uffe2\004\uffe2\005\uffe2\006\uffe2" +
 
354
    "\007\uffe2\010\uffe2\011\uffe2\012\uffe2\013\uffe2\014\uffe2\015" +
 
355
    "\uffe2\016\uffe2\017\uffe2\020\uffe2\021\uffe2\022\uffe2\023\uffe2" +
 
356
    "\024\uffe2\025\uffe2\026\uffe2\027\uffe2\030\uffe2\031\uffe2\032" +
 
357
    "\uffe2\033\uffe2\034\uffe2\035\uffe2\036\uffe2\037\uffe2\040\uffe2" +
 
358
    "\042\uffe2\043\uffe2\044\uffe2\001\002" });
 
359
 
 
360
  /** Access to parse-action table. */
 
361
  public short[][] action_table() {return _action_table;}
 
362
 
 
363
  /** <code>reduce_goto</code> table. */
 
364
  protected static final short[][] _reduce_table = 
 
365
    unpackFromStrings(new String[] {
 
366
    "\000\142\000\016\002\026\003\022\004\004\005\031\006" +
 
367
    "\024\007\027\001\001\000\002\001\001\000\002\001\001" +
 
368
    "\000\002\001\001\000\002\001\001\000\012\004\004\005" +
 
369
    "\031\006\024\007\133\001\001\000\002\001\001\000\002" +
 
370
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 
371
    "\001\000\012\004\100\005\031\006\024\007\101\001\001" +
 
372
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 
373
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
 
374
    "\001\001\000\002\001\001\000\014\003\062\004\004\005" +
 
375
    "\031\006\024\007\027\001\001\000\002\001\001\000\002" +
 
376
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 
377
    "\001\000\010\004\036\005\031\006\024\001\001\000\002" +
 
378
    "\001\001\000\002\001\001\000\010\004\040\005\031\006" +
 
379
    "\024\001\001\000\002\001\001\000\002\001\001\000\010" +
 
380
    "\004\051\005\031\006\024\001\001\000\010\004\050\005" +
 
381
    "\031\006\024\001\001\000\010\004\047\005\031\006\024" +
 
382
    "\001\001\000\010\004\046\005\031\006\024\001\001\000" +
 
383
    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
 
384
    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
 
385
    "\001\000\002\001\001\000\012\004\004\005\031\006\024" +
 
386
    "\007\061\001\001\000\012\004\004\005\031\006\024\007" +
 
387
    "\060\001\001\000\002\001\001\000\002\001\001\000\002" +
 
388
    "\001\001\000\002\001\001\000\010\004\065\005\031\006" +
 
389
    "\024\001\001\000\002\001\001\000\002\001\001\000\010" +
 
390
    "\004\070\005\031\006\024\001\001\000\002\001\001\000" +
 
391
    "\002\001\001\000\010\004\073\005\031\006\024\001\001" +
 
392
    "\000\002\001\001\000\002\001\001\000\010\004\076\005" +
 
393
    "\031\006\024\001\001\000\002\001\001\000\002\001\001" +
 
394
    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
 
395
    "\010\004\114\005\031\006\024\001\001\000\010\004\113" +
 
396
    "\005\031\006\024\001\001\000\010\004\112\005\031\006" +
 
397
    "\024\001\001\000\010\004\111\005\031\006\024\001\001" +
 
398
    "\000\010\004\110\005\031\006\024\001\001\000\002\001" +
 
399
    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
 
400
    "\000\002\001\001\000\010\004\116\005\031\006\024\001" +
 
401
    "\001\000\002\001\001\000\002\001\001\000\010\004\121" +
 
402
    "\005\031\006\024\001\001\000\002\001\001\000\002\001" +
 
403
    "\001\000\010\004\124\005\031\006\024\001\001\000\002" +
 
404
    "\001\001\000\002\001\001\000\010\004\127\005\031\006" +
 
405
    "\024\001\001\000\002\001\001\000\010\004\131\005\031" +
 
406
    "\006\024\001\001\000\002\001\001\000\002\001\001\000" +
 
407
    "\002\001\001\000\002\001\001\000\002\001\001\000\010" +
 
408
    "\004\137\005\031\006\024\001\001\000\002\001\001\000" +
 
409
    "\002\001\001\000\010\004\142\005\031\006\024\001\001" +
 
410
    "\000\002\001\001\000\002\001\001" });
 
411
 
 
412
  /** Access to <code>reduce_goto</code> table. */
 
413
  public short[][] reduce_table() {return _reduce_table;}
 
414
 
 
415
  /** Instance of action encapsulation class. */
 
416
  protected CUP$Parser$actions action_obj;
 
417
 
 
418
  /** Action encapsulation object initializer. */
 
419
  protected void init_actions()
 
420
    {
 
421
      action_obj = new CUP$Parser$actions(this);
 
422
    }
 
423
 
 
424
  /** Invoke a user supplied parse action. */
 
425
  public weka.core.parser.java_cup.runtime.Symbol do_action(
 
426
    int                        act_num,
 
427
    weka.core.parser.java_cup.runtime.lr_parser parser,
 
428
    java.util.Stack            stack,
 
429
    int                        top)
 
430
    throws java.lang.Exception
 
431
  {
 
432
    /* call code in generated class */
 
433
    return action_obj.CUP$Parser$do_action(act_num, parser, stack, top);
 
434
  }
 
435
 
 
436
  /** Indicates start state. */
 
437
  public int start_state() {return 0;}
 
438
  /** Indicates start production. */
 
439
  public int start_production() {return 1;}
 
440
 
 
441
  /** <code>EOF</code> Symbol index. */
 
442
  public int EOF_sym() {return 0;}
 
443
 
 
444
  /** <code>error</code> Symbol index. */
 
445
  public int error_sym() {return 1;}
 
446
 
 
447
 
 
448
 
 
449
  /** variable - value relation. */
 
450
  protected HashMap m_Symbols = new HashMap();
 
451
 
 
452
  /** attribute - attribute-type (constants from weka.core.Attribute) relation. */
 
453
  protected Hashtable<String,Integer> m_AttributeTypes = new Hashtable<String,Integer>();
 
454
 
 
455
  /** for storing the result of the expression. */
 
456
  protected Boolean m_Result = null;
 
457
 
 
458
  /**
 
459
   * Sets the variable - value relation to use.
 
460
   * 
 
461
   * @param value the variable-value relation
 
462
   */
 
463
  public void setSymbols(HashMap value) {
 
464
    m_Symbols = value;
 
465
  }
 
466
 
 
467
  /**
 
468
   * Returns the current variable - value relation in use.
 
469
   * 
 
470
   * @return the variable-value relation
 
471
   */
 
472
  public HashMap getSymbols() {
 
473
    return m_Symbols;
 
474
  }
 
475
 
 
476
  /**
 
477
   * Sets the attribute - attribute-type relation to use.
 
478
   * 
 
479
   * @param value the att - att-type relation
 
480
   */
 
481
  public void setAttributeTypes(Hashtable value) {
 
482
    m_AttributeTypes = value;
 
483
  }
 
484
 
 
485
  /**
 
486
   * Returns the current attribute - attribute-type relation in use.
 
487
   * 
 
488
   * @return the att - att-type relation
 
489
   */
 
490
  public Hashtable getAttributeTypes() {
 
491
    return m_AttributeTypes;
 
492
  }
 
493
 
 
494
  /**
 
495
   * Sets the result of the evaluation.
 
496
   * 
 
497
   * @param value the result
 
498
   */
 
499
  public void setResult(Boolean value) {
 
500
    m_Result = value;
 
501
  }
 
502
 
 
503
  /**
 
504
   * Returns the result of the evaluation.
 
505
   * 
 
506
   * @return the result
 
507
   */
 
508
  public Boolean getResult() {
 
509
    return m_Result;
 
510
  }
 
511
 
 
512
  /**
 
513
   * Returns either a String object for nominal attributes or a Double for numeric
 
514
   * ones. For all other attribute types this method throws an Exception.
 
515
   * It also returns a Double object in case of a missing value (for all
 
516
   * attribute types!).
 
517
   * 
 
518
   * @param instance the instance to work on
 
519
   * @param index the index of the attribute to return
 
520
   * @return the converted value
 
521
   */
 
522
  public static Object getValue(Instance instance, int index) {
 
523
    if (instance.isMissing(index))
 
524
      return new Double(Instance.missingValue());
 
525
    else if (instance.attribute(index).isNominal())
 
526
      return new String(instance.stringValue(index));
 
527
    else if (instance.attribute(index).isNumeric())
 
528
      return new Double(instance.value(index));
 
529
    else
 
530
      throw new IllegalArgumentException(
 
531
          "Unhandled attribute type '" + instance.attribute(index).type() + "'!");
 
532
  }
 
533
 
 
534
  /**
 
535
   * Filters the input dataset against the provided expression.
 
536
   *
 
537
   * @param expression the expression used for filtering
 
538
   * @param input the input data
 
539
   * @return the filtered data
 
540
   * @throws Exception if parsing fails
 
541
   */
 
542
  public static Instances filter(String expression, Instances input) throws Exception {
 
543
    // setup output
 
544
    Instances output = new Instances(input, 0);
 
545
    
 
546
    // setup attribute - attribute-type relation
 
547
    Hashtable<String,Integer> attTypes = new Hashtable<String,Integer>();
 
548
    for (int i = 0; i < input.numAttributes(); i++)
 
549
       attTypes.put("ATT" + (i+1), input.attribute(i).type());
 
550
    if (input.classIndex() > -1)
 
551
      attTypes.put("CLASS", input.classAttribute().type());
 
552
    
 
553
    // filter dataset
 
554
    SymbolFactory sf = new DefaultSymbolFactory();
 
555
    HashMap symbols = new HashMap();
 
556
    ByteArrayInputStream parserInput = new ByteArrayInputStream(expression.getBytes());
 
557
    for (int i = 0; i < input.numInstances(); i++) {
 
558
      Instance instance = input.instance(i);
 
559
 
 
560
      // setup symbols
 
561
      for (int n = 0; n < instance.numAttributes(); n++) {
 
562
        if (n == instance.classIndex())
 
563
          symbols.put("CLASS", getValue(instance, n));
 
564
        symbols.put("ATT" + (n+1), getValue(instance, n));
 
565
      }
 
566
 
 
567
      // evaluate expression
 
568
      parserInput.reset();
 
569
      Parser parser = new Parser(new Scanner(parserInput,sf), sf);
 
570
      parser.setSymbols(symbols);
 
571
      parser.parse();
 
572
      if (parser.getResult())
 
573
        output.add((Instance) instance.copy());
 
574
    }
 
575
 
 
576
    return output;
 
577
  }
 
578
 
 
579
  /**
 
580
   * Runs the parser from commandline. Takes the following arguments:
 
581
   * <ol>
 
582
   *   <li>expression</li>
 
583
   *   <li>input file</li>
 
584
   *   <li>class index (first|last|num), use 0 to ignore</li>
 
585
   *   <li>output file</li>
 
586
   * </ol>
 
587
   * 
 
588
   * @param args the commandline arguments
 
589
   * @throws Exception if something goes wrong
 
590
   */
 
591
  public static void main(String args[]) throws Exception {
 
592
    // get expression
 
593
    String expression = args[0];
 
594
 
 
595
    // read input data
 
596
    BufferedReader reader = new BufferedReader(new FileReader(args[1]));
 
597
    Instances input = new Instances(reader);
 
598
    reader.close();
 
599
    if (args[2].equals("first"))
 
600
      input.setClassIndex(0);
 
601
    else if (args[2].equals("last"))
 
602
      input.setClassIndex(input.numAttributes() - 1);
 
603
    else
 
604
      input.setClassIndex(Integer.parseInt(args[2]) - 1);
 
605
 
 
606
    // process dataset
 
607
    Instances output = filter(expression, input);
 
608
 
 
609
    // save output file
 
610
    BufferedWriter writer = new BufferedWriter(new FileWriter(args[3]));
 
611
    writer.write(new Instances(output, 0).toString());
 
612
    writer.newLine();
 
613
    for (int i = 0; i < output.numInstances(); i++) {
 
614
      writer.write(output.instance(i).toString());
 
615
      writer.newLine();
 
616
    }
 
617
    writer.flush();
 
618
    writer.close();
 
619
  }
 
620
 
 
621
}
 
622
 
 
623
/** Cup generated class to encapsulate user supplied action code.*/
 
624
class CUP$Parser$actions {
 
625
  private final Parser parser;
 
626
 
 
627
  /** Constructor */
 
628
  CUP$Parser$actions(Parser parser) {
 
629
    this.parser = parser;
 
630
  }
 
631
 
 
632
  /** Method with the actual generated action code. */
 
633
  public final weka.core.parser.java_cup.runtime.Symbol CUP$Parser$do_action(
 
634
    int                        CUP$Parser$act_num,
 
635
    weka.core.parser.java_cup.runtime.lr_parser CUP$Parser$parser,
 
636
    java.util.Stack            CUP$Parser$stack,
 
637
    int                        CUP$Parser$top)
 
638
    throws java.lang.Exception
 
639
    {
 
640
      /* Symbol object for return from actions */
 
641
      weka.core.parser.java_cup.runtime.Symbol CUP$Parser$result;
 
642
 
 
643
      /* select the action based on the action number */
 
644
      switch (CUP$Parser$act_num)
 
645
        {
 
646
          /*. . . . . . . . . . . . . . . . . . . .*/
 
647
          case 37: // funcexpr ::= CEIL LPAREN expr RPAREN 
 
648
            {
 
649
              Double RESULT =null;
 
650
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
651
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
652
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
653
                 RESULT = new Double(Math.ceil(e)); 
 
654
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
655
            }
 
656
          return CUP$Parser$result;
 
657
 
 
658
          /*. . . . . . . . . . . . . . . . . . . .*/
 
659
          case 36: // funcexpr ::= POW LPAREN expr COMMA expr RPAREN 
 
660
            {
 
661
              Double RESULT =null;
 
662
                int baseleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).left;
 
663
                int baseright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)).right;
 
664
                Double base = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-3)).value;
 
665
                int exponentleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
666
                int exponentright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
667
                Double exponent = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
668
                 RESULT = new Double(Math.pow(base, exponent)); 
 
669
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-5)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
670
            }
 
671
          return CUP$Parser$result;
 
672
 
 
673
          /*. . . . . . . . . . . . . . . . . . . .*/
 
674
          case 35: // funcexpr ::= FLOOR LPAREN expr RPAREN 
 
675
            {
 
676
              Double RESULT =null;
 
677
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
678
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
679
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
680
                 RESULT = new Double(Math.floor(e)); 
 
681
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
682
            }
 
683
          return CUP$Parser$result;
 
684
 
 
685
          /*. . . . . . . . . . . . . . . . . . . .*/
 
686
          case 34: // funcexpr ::= RINT LPAREN expr RPAREN 
 
687
            {
 
688
              Double RESULT =null;
 
689
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
690
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
691
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
692
                 RESULT = new Double(Math.rint(e)); 
 
693
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
694
            }
 
695
          return CUP$Parser$result;
 
696
 
 
697
          /*. . . . . . . . . . . . . . . . . . . .*/
 
698
          case 33: // funcexpr ::= TAN LPAREN expr RPAREN 
 
699
            {
 
700
              Double RESULT =null;
 
701
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
702
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
703
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
704
                 RESULT = new Double(Math.tan(e)); 
 
705
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
706
            }
 
707
          return CUP$Parser$result;
 
708
 
 
709
          /*. . . . . . . . . . . . . . . . . . . .*/
 
710
          case 32: // funcexpr ::= COS LPAREN expr RPAREN 
 
711
            {
 
712
              Double RESULT =null;
 
713
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
714
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
715
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
716
                 RESULT = new Double(Math.cos(e)); 
 
717
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
718
            }
 
719
          return CUP$Parser$result;
 
720
 
 
721
          /*. . . . . . . . . . . . . . . . . . . .*/
 
722
          case 31: // funcexpr ::= SIN LPAREN expr RPAREN 
 
723
            {
 
724
              Double RESULT =null;
 
725
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
726
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
727
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
728
                 RESULT = new Double(Math.sin(e)); 
 
729
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
730
            }
 
731
          return CUP$Parser$result;
 
732
 
 
733
          /*. . . . . . . . . . . . . . . . . . . .*/
 
734
          case 30: // funcexpr ::= EXP LPAREN expr RPAREN 
 
735
            {
 
736
              Double RESULT =null;
 
737
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
738
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
739
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
740
                 RESULT = new Double(Math.exp(e)); 
 
741
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
742
            }
 
743
          return CUP$Parser$result;
 
744
 
 
745
          /*. . . . . . . . . . . . . . . . . . . .*/
 
746
          case 29: // funcexpr ::= LOG LPAREN expr RPAREN 
 
747
            {
 
748
              Double RESULT =null;
 
749
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
750
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
751
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
752
                 RESULT = new Double(Math.log(e)); 
 
753
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
754
            }
 
755
          return CUP$Parser$result;
 
756
 
 
757
          /*. . . . . . . . . . . . . . . . . . . .*/
 
758
          case 28: // funcexpr ::= SQRT LPAREN expr RPAREN 
 
759
            {
 
760
              Double RESULT =null;
 
761
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
762
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
763
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
764
                 RESULT = new Double(Math.sqrt(e)); 
 
765
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
766
            }
 
767
          return CUP$Parser$result;
 
768
 
 
769
          /*. . . . . . . . . . . . . . . . . . . .*/
 
770
          case 27: // funcexpr ::= ABS LPAREN expr RPAREN 
 
771
            {
 
772
              Double RESULT =null;
 
773
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
774
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
775
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
776
                 RESULT = new Double(Math.abs(e)); 
 
777
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("funcexpr",4, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
778
            }
 
779
          return CUP$Parser$result;
 
780
 
 
781
          /*. . . . . . . . . . . . . . . . . . . .*/
 
782
          case 26: // opexpr ::= expr DIVISION expr 
 
783
            {
 
784
              Double RESULT =null;
 
785
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
786
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
787
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
788
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
789
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
790
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
791
                 RESULT = new Double(l.doubleValue() / r.doubleValue()); 
 
792
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("opexpr",3, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
793
            }
 
794
          return CUP$Parser$result;
 
795
 
 
796
          /*. . . . . . . . . . . . . . . . . . . .*/
 
797
          case 25: // opexpr ::= expr TIMES expr 
 
798
            {
 
799
              Double RESULT =null;
 
800
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
801
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
802
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
803
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
804
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
805
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
806
                 RESULT = new Double(l.doubleValue() * r.doubleValue()); 
 
807
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("opexpr",3, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
808
            }
 
809
          return CUP$Parser$result;
 
810
 
 
811
          /*. . . . . . . . . . . . . . . . . . . .*/
 
812
          case 24: // opexpr ::= expr MINUS expr 
 
813
            {
 
814
              Double RESULT =null;
 
815
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
816
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
817
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
818
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
819
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
820
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
821
                 RESULT = new Double(l.doubleValue() - r.doubleValue()); 
 
822
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("opexpr",3, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
823
            }
 
824
          return CUP$Parser$result;
 
825
 
 
826
          /*. . . . . . . . . . . . . . . . . . . .*/
 
827
          case 23: // opexpr ::= expr PLUS expr 
 
828
            {
 
829
              Double RESULT =null;
 
830
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
831
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
832
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
833
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
834
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
835
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
836
                 RESULT = new Double(l.doubleValue() + r.doubleValue()); 
 
837
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("opexpr",3, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
838
            }
 
839
          return CUP$Parser$result;
 
840
 
 
841
          /*. . . . . . . . . . . . . . . . . . . .*/
 
842
          case 22: // expr ::= funcexpr 
 
843
            {
 
844
              Double RESULT =null;
 
845
                int fleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
846
                int fright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
847
                Double f = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
848
                 RESULT = f; 
 
849
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr",2, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
850
            }
 
851
          return CUP$Parser$result;
 
852
 
 
853
          /*. . . . . . . . . . . . . . . . . . . .*/
 
854
          case 21: // expr ::= opexpr 
 
855
            {
 
856
              Double RESULT =null;
 
857
                int oleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
858
                int oright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
859
                Double o = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
860
                 RESULT = o; 
 
861
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr",2, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
862
            }
 
863
          return CUP$Parser$result;
 
864
 
 
865
          /*. . . . . . . . . . . . . . . . . . . .*/
 
866
          case 20: // expr ::= LPAREN expr RPAREN 
 
867
            {
 
868
              Double RESULT =null;
 
869
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
870
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
871
                Double e = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
872
                 RESULT = e; 
 
873
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr",2, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
874
            }
 
875
          return CUP$Parser$result;
 
876
 
 
877
          /*. . . . . . . . . . . . . . . . . . . .*/
 
878
          case 19: // expr ::= ATTRIBUTE 
 
879
            {
 
880
              Double RESULT =null;
 
881
                int aleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
882
                int aright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
883
                String a = (String)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
884
                 if (parser.getSymbols().containsKey(a)) 
 
885
                     RESULT = (Double) parser.getSymbols().get(a); 
 
886
                   else 
 
887
                     throw new IllegalStateException("Unknown symbol '" + a + "'!"); 
 
888
                
 
889
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr",2, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
890
            }
 
891
          return CUP$Parser$result;
 
892
 
 
893
          /*. . . . . . . . . . . . . . . . . . . .*/
 
894
          case 18: // expr ::= NUMBER 
 
895
            {
 
896
              Double RESULT =null;
 
897
                int nleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
898
                int nright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
899
                Double n = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
900
                 RESULT = n; 
 
901
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("expr",2, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
902
            }
 
903
          return CUP$Parser$result;
 
904
 
 
905
          /*. . . . . . . . . . . . . . . . . . . .*/
 
906
          case 17: // boolexpr ::= ISMISSING LPAREN ATTRIBUTE RPAREN 
 
907
            {
 
908
              Boolean RESULT =null;
 
909
                int aleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
910
                int aright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
911
                String a = (String)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
912
                 if (parser.getSymbols().containsKey(a)) 
 
913
                     RESULT = (parser.getSymbols().get(a) instanceof Double) && Instance.isMissingValue((Double) parser.getSymbols().get(a));
 
914
                   else 
 
915
                     throw new IllegalStateException("Unknown symbol '" + a + "'!"); 
 
916
                
 
917
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-3)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
918
            }
 
919
          return CUP$Parser$result;
 
920
 
 
921
          /*. . . . . . . . . . . . . . . . . . . .*/
 
922
          case 16: // boolexpr ::= ATTRIBUTE IS STRING 
 
923
            {
 
924
              Boolean RESULT =null;
 
925
                int aleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
926
                int aright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
927
                String a = (String)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
928
                int sleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
929
                int sright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
930
                String s = (String)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
931
                 if (parser.getSymbols().containsKey(a)) 
 
932
                     RESULT = (parser.getSymbols().get(a) instanceof String) && ((String) parser.getSymbols().get(a)).equals(s);
 
933
                   else 
 
934
                     throw new IllegalStateException("Unknown symbol '" + a + "'!"); 
 
935
                
 
936
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
937
            }
 
938
          return CUP$Parser$result;
 
939
 
 
940
          /*. . . . . . . . . . . . . . . . . . . .*/
 
941
          case 15: // boolexpr ::= boolexpr OR boolexpr 
 
942
            {
 
943
              Boolean RESULT =null;
 
944
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
945
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
946
                Boolean l = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
947
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
948
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
949
                Boolean r = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
950
                 RESULT = l || r; 
 
951
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
952
            }
 
953
          return CUP$Parser$result;
 
954
 
 
955
          /*. . . . . . . . . . . . . . . . . . . .*/
 
956
          case 14: // boolexpr ::= boolexpr AND boolexpr 
 
957
            {
 
958
              Boolean RESULT =null;
 
959
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
960
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
961
                Boolean l = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
962
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
963
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
964
                Boolean r = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
965
                 RESULT = l && r; 
 
966
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
967
            }
 
968
          return CUP$Parser$result;
 
969
 
 
970
          /*. . . . . . . . . . . . . . . . . . . .*/
 
971
          case 13: // boolexpr ::= NOT boolexpr 
 
972
            {
 
973
              Boolean RESULT =null;
 
974
                int bleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
975
                int bright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
976
                Boolean b = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
977
                 RESULT = !b; 
 
978
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
979
            }
 
980
          return CUP$Parser$result;
 
981
 
 
982
          /*. . . . . . . . . . . . . . . . . . . .*/
 
983
          case 12: // boolexpr ::= LPAREN boolexpr RPAREN 
 
984
            {
 
985
              Boolean RESULT =null;
 
986
                int bleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
987
                int bright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
988
                Boolean b = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
989
                 RESULT = b; 
 
990
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
991
            }
 
992
          return CUP$Parser$result;
 
993
 
 
994
          /*. . . . . . . . . . . . . . . . . . . .*/
 
995
          case 11: // boolexpr ::= expr EQ expr 
 
996
            {
 
997
              Boolean RESULT =null;
 
998
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
999
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
1000
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
1001
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1002
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1003
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1004
                 RESULT = new Boolean(l.doubleValue() == r.doubleValue()); 
 
1005
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1006
            }
 
1007
          return CUP$Parser$result;
 
1008
 
 
1009
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1010
          case 10: // boolexpr ::= expr GE expr 
 
1011
            {
 
1012
              Boolean RESULT =null;
 
1013
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
1014
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
1015
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
1016
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1017
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1018
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1019
                 RESULT = new Boolean(l.doubleValue() >= r.doubleValue()); 
 
1020
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1021
            }
 
1022
          return CUP$Parser$result;
 
1023
 
 
1024
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1025
          case 9: // boolexpr ::= expr GT expr 
 
1026
            {
 
1027
              Boolean RESULT =null;
 
1028
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
1029
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
1030
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
1031
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1032
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1033
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1034
                 RESULT = new Boolean(l.doubleValue() > r.doubleValue()); 
 
1035
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1036
            }
 
1037
          return CUP$Parser$result;
 
1038
 
 
1039
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1040
          case 8: // boolexpr ::= expr LE expr 
 
1041
            {
 
1042
              Boolean RESULT =null;
 
1043
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
1044
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
1045
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
1046
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1047
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1048
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1049
                 RESULT = new Boolean(l.doubleValue() <= r.doubleValue()); 
 
1050
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1051
            }
 
1052
          return CUP$Parser$result;
 
1053
 
 
1054
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1055
          case 7: // boolexpr ::= expr LT expr 
 
1056
            {
 
1057
              Boolean RESULT =null;
 
1058
                int lleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).left;
 
1059
                int lright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)).right;
 
1060
                Double l = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-2)).value;
 
1061
                int rleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1062
                int rright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1063
                Double r = (Double)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1064
                 RESULT = new Boolean(l.doubleValue() < r.doubleValue()); 
 
1065
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-2)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1066
            }
 
1067
          return CUP$Parser$result;
 
1068
 
 
1069
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1070
          case 6: // boolexpr ::= FALSE 
 
1071
            {
 
1072
              Boolean RESULT =null;
 
1073
                 RESULT = new Boolean(false); 
 
1074
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1075
            }
 
1076
          return CUP$Parser$result;
 
1077
 
 
1078
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1079
          case 5: // boolexpr ::= TRUE 
 
1080
            {
 
1081
              Boolean RESULT =null;
 
1082
                 RESULT = new Boolean(true); 
 
1083
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1084
            }
 
1085
          return CUP$Parser$result;
 
1086
 
 
1087
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1088
          case 4: // boolexpr ::= BOOLEAN 
 
1089
            {
 
1090
              Boolean RESULT =null;
 
1091
                int bleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1092
                int bright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1093
                Boolean b = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1094
                 RESULT = b; 
 
1095
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr",5, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1096
            }
 
1097
          return CUP$Parser$result;
 
1098
 
 
1099
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1100
          case 3: // boolexpr_part ::= boolexpr 
 
1101
            {
 
1102
              Object RESULT =null;
 
1103
                int eleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).left;
 
1104
                int eright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()).right;
 
1105
                Boolean e = (Boolean)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.peek()).value;
 
1106
                 parser.setResult(e); 
 
1107
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr_part",1, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1108
            }
 
1109
          return CUP$Parser$result;
 
1110
 
 
1111
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1112
          case 2: // boolexpr_list ::= boolexpr_part 
 
1113
            {
 
1114
              Object RESULT =null;
 
1115
 
 
1116
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr_list",0, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1117
            }
 
1118
          return CUP$Parser$result;
 
1119
 
 
1120
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1121
          case 1: // $START ::= boolexpr_list EOF 
 
1122
            {
 
1123
              Object RESULT =null;
 
1124
                int start_valleft = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).left;
 
1125
                int start_valright = ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)).right;
 
1126
                Object start_val = (Object)((weka.core.parser.java_cup.runtime.Symbol) CUP$Parser$stack.elementAt(CUP$Parser$top-1)).value;
 
1127
                RESULT = start_val;
 
1128
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("$START",0, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1129
            }
 
1130
          /* ACCEPT */
 
1131
          CUP$Parser$parser.done_parsing();
 
1132
          return CUP$Parser$result;
 
1133
 
 
1134
          /*. . . . . . . . . . . . . . . . . . . .*/
 
1135
          case 0: // boolexpr_list ::= boolexpr_list boolexpr_part 
 
1136
            {
 
1137
              Object RESULT =null;
 
1138
 
 
1139
              CUP$Parser$result = parser.getSymbolFactory().newSymbol("boolexpr_list",0, ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.elementAt(CUP$Parser$top-1)), ((weka.core.parser.java_cup.runtime.Symbol)CUP$Parser$stack.peek()), RESULT);
 
1140
            }
 
1141
          return CUP$Parser$result;
 
1142
 
 
1143
          /* . . . . . .*/
 
1144
          default:
 
1145
            throw new Exception(
 
1146
               "Invalid action number found in internal parse table");
 
1147
 
 
1148
        }
 
1149
    }
 
1150
}
 
1151