File Coverage

blib/lib/Lingua/Shakespeare.pm
Criterion Covered Total %
statement 622 1099 56.6
branch 51 102 50.0
condition 30 55 54.5
subroutine 11 20 55.0
pod 0 14 0.0
total 714 1290 55.3


line stmt bran cond sub pod time code
1             # 1 "y.tab.pl"
2             #pragma GCC set_debug_pwd "/Volumes/gbarr/Desktop/spl-1.2.1/Lingua-Shakespear"
3             # 1 ""
4             # 1 ""
5             # 1 "y.tab.pl"
6             #$yysccsid = "@(#)yaccpar 1.8 (Berkeley) 01/20/91 (Perl 2.0 12/31/92)";
7             # 2 "Shakespeare.y"
8             package Lingua::Shakespeare;
9              
10             $VERSION = "1.00";
11              
12 6     6   41 use strict;
  6         42  
  6         261  
13 6     6   110153 use Filter::Util::Call;
  6         36446  
  6         153872  
14              
15             my ($yychar, $yyerrflag, $yynerrs, $yyn, @yyss, $yyssp, $yystate, @yyvs, $yyvsp);
16             my ($yylval, $yys, $yym, $yyval, %yystate, $yydebug, $yylineno, $output);
17              
18             my ($num_errors, $num_warnings, @token, $current_act, $current_scene);
19              
20             sub import {
21 6     6   49 filter_add({});
22 6         7134 $yylineno = (caller)[2]+1;
23 6         110 1;
24             }
25              
26 0     0   0 sub unimport { filter_del() }
27              
28             my $preamble = <<'PREAMBLE';
29             require Lingua::Shakespeare::Play;
30             my ($comp1, $comp2);
31             my $play = Lingua::Shakespeare::Play->new;
32             $|=1;
33             PREAMBLE
34              
35             sub varname {
36 398     398 0 939 (my $name = lc shift) =~ tr/ /_/;
37 398         1327 '$' . $name;
38             }
39              
40 583     583 0 2688 sub set_line { "#line $yylineno\n" }
41             # 39 "y.tab.pl"
42             sub constARTICLE () { 257 }
43             sub constBE () { 258 }
44             sub constCHARACTER () { 259 }
45             sub constFIRST_PERSON () { 260 }
46             sub constFIRST_PERSON_POSSESSIVE () { 261 }
47             sub constFIRST_PERSON_REFLEXIVE () { 262 }
48             sub constNEGATIVE_ADJECTIVE () { 263 }
49             sub constNEGATIVE_COMPARATIVE () { 264 }
50             sub constNEGATIVE_NOUN () { 265 }
51             sub constNEUTRAL_ADJECTIVE () { 266 }
52             sub constNEUTRAL_NOUN () { 267 }
53             sub constNOTHING () { 268 }
54             sub constPOSITIVE_ADJECTIVE () { 269 }
55             sub constPOSITIVE_COMPARATIVE () { 270 }
56             sub constPOSITIVE_NOUN () { 271 }
57             sub constSECOND_PERSON () { 272 }
58             sub constSECOND_PERSON_POSSESSIVE () { 273 }
59             sub constSECOND_PERSON_REFLEXIVE () { 274 }
60             sub constTHIRD_PERSON_POSSESSIVE () { 275 }
61             sub constCOLON () { 276 }
62             sub constCOMMA () { 277 }
63             sub constEXCLAMATION_MARK () { 278 }
64             sub constLEFT_BRACKET () { 279 }
65             sub constPERIOD () { 280 }
66             sub constQUESTION_MARK () { 281 }
67             sub constRIGHT_BRACKET () { 282 }
68             sub constAND () { 283 }
69             sub constAS () { 284 }
70             sub constENTER () { 285 }
71             sub constEXEUNT () { 286 }
72             sub constEXIT () { 287 }
73             sub constHEART () { 288 }
74             sub constIF_NOT () { 289 }
75             sub constIF_SO () { 290 }
76             sub constLESS () { 291 }
77             sub constLET_US () { 292 }
78             sub constLISTEN_TO () { 293 }
79             sub constMIND () { 294 }
80             sub constMORE () { 295 }
81             sub constNOT () { 296 }
82             sub constOPEN () { 297 }
83             sub constPROCEED_TO () { 298 }
84             sub constRECALL () { 299 }
85             sub constREMEMBER () { 300 }
86             sub constRETURN_TO () { 301 }
87             sub constSPEAK () { 302 }
88             sub constTHAN () { 303 }
89             sub constTHE_CUBE_OF () { 304 }
90             sub constTHE_DIFFERENCE_BETWEEN () { 305 }
91             sub constTHE_FACTORIAL_OF () { 306 }
92             sub constTHE_PRODUCT_OF () { 307 }
93             sub constTHE_QUOTIENT_BETWEEN () { 308 }
94             sub constTHE_REMAINDER_OF_THE_QUOTIENT_BETWEEN () { 309 }
95             sub constTHE_SQUARE_OF () { 310 }
96             sub constTHE_SQUARE_ROOT_OF () { 311 }
97             sub constTHE_SUM_OF () { 312 }
98             sub constTWICE () { 313 }
99             sub constWE_MUST () { 314 }
100             sub constWE_SHALL () { 315 }
101             sub constACT_ROMAN () { 316 }
102             sub constSCENE_ROMAN () { 317 }
103             sub constROMAN_NUMBER () { 318 }
104             sub constNONMATCH () { 319 }
105             sub constYYERRCODE () { 256 }
106             my @yylhs = ( -1,
107             0, 1, 1, 2, 2, 2, 3, 3, 3, 4,
108             4, 4, 4, 4, 5, 5, 5, 6, 6, 7,
109             7, 8, 8, 9, 9, 10, 10, 11, 11, 12,
110             12, 12, 12, 12, 13, 13, 14, 14, 14, 14,
111             14, 14, 14, 14, 14, 15, 15, 15, 16, 16,
112             17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
113             17, 17, 17, 18, 18, 18, 19, 19, 19, 20,
114             20, 20, 21, 21, 22, 22, 22, 23, 23, 23,
115             24, 24, 24, 25, 26, 26, 27, 27, 28, 28,
116             28, 28, 28, 29, 29, 29, 30, 30, 30, 31,
117             31, 32, 32, 32, 32, 33, 33, 33, 33, 34,
118             35, 35, 35, 36, 36, 36, 37, 38, 38, 38,
119             38, 39, 39, 39, 40, 40, 40, 41, 41, 42,
120             42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
121             42, 43, 43, 44, 44, 45, 45, 45, 45, 45,
122             45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
123             45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
124             45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
125             45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
126             45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
127             45, 45, 46, 47, 47, 48, 48, 48, 48, 48,
128             49, 49, 49, 49, 49, 49, 50, 50, 50, 50,
129             50, 50, 50, 50, 50,
130             );
131             my @yylen = ( 2,
132             1, 2, 2, 4, 4, 4, 1, 1, 1, 1,
133             1, 1, 1, 1, 4, 4, 4, 1, 2, 3,
134             3, 1, 1, 1, 1, 2, 1, 1, 1, 2,
135             2, 2, 2, 1, 1, 1, 4, 4, 4, 4,
136             3, 4, 4, 4, 3, 3, 3, 3, 2, 2,
137             3, 4, 4, 3, 3, 4, 4, 4, 4, 3,
138             4, 4, 3, 3, 3, 3, 2, 2, 2, 1,
139             1, 1, 1, 1, 3, 3, 3, 1, 2, 2,
140             1, 2, 2, 1, 1, 1, 2, 2, 3, 2,
141             3, 3, 3, 1, 2, 2, 1, 2, 2, 1,
142             1, 1, 1, 1, 1, 5, 5, 5, 5, 1,
143             3, 3, 3, 3, 3, 3, 2, 1, 1, 2,
144             2, 4, 4, 4, 1, 3, 3, 1, 2, 4,
145             3, 5, 4, 4, 4, 3, 3, 5, 5, 5,
146             5, 1, 1, 1, 2, 1, 1, 1, 1, 1,
147             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
148             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
149             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
150             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
151             1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
152             1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
153             1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
154             2, 4, 4, 4, 2,
155             );
156             my @yydefred = ( 0,
157             0, 146, 147, 148, 149, 150, 151, 152, 153, 154,
158             155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
159             165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
160             175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
161             185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
162             195, 196, 197, 198, 199, 200, 201, 202, 0, 0,
163             0, 144, 0, 0, 0, 18, 0, 0, 0, 0,
164             142, 143, 110, 203, 35, 36, 145, 0, 0, 0,
165             0, 0, 0, 19, 0, 0, 0, 3, 0, 2,
166             0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
167             0, 0, 0, 0, 118, 119, 0, 16, 17, 15,
168             6, 5, 4, 0, 0, 0, 0, 0, 0, 0,
169             0, 120, 121, 124, 123, 122, 0, 0, 0, 29,
170             28, 70, 0, 0, 0, 0, 0, 71, 72, 0,
171             211, 212, 0, 0, 0, 213, 214, 215, 128, 0,
172             216, 125, 0, 0, 45, 0, 0, 0, 0, 0,
173             41, 0, 0, 0, 73, 74, 68, 0, 0, 217,
174             102, 0, 103, 34, 104, 0, 105, 0, 206, 10,
175             207, 11, 12, 13, 208, 209, 14, 210, 0, 218,
176             219, 0, 0, 0, 0, 0, 84, 0, 100, 0,
177             101, 205, 81, 204, 97, 0, 0, 0, 88, 87,
178             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
179             0, 69, 67, 0, 0, 0, 129, 42, 0, 37,
180             0, 38, 44, 40, 43, 39, 78, 94, 0, 0,
181             0, 0, 0, 0, 85, 86, 24, 27, 25, 30,
182             31, 32, 33, 0, 0, 225, 221, 0, 0, 0,
183             0, 137, 0, 0, 0, 0, 82, 83, 99, 0,
184             98, 136, 131, 0, 0, 0, 112, 113, 111, 115,
185             116, 114, 0, 0, 0, 127, 126, 66, 64, 65,
186             55, 60, 51, 63, 54, 21, 20, 0, 9, 8,
187             7, 0, 96, 80, 79, 95, 26, 50, 49, 0,
188             0, 0, 0, 0, 0, 0, 135, 0, 134, 0,
189             133, 130, 0, 0, 57, 59, 62, 53, 56, 58,
190             61, 52, 47, 48, 46, 107, 224, 223, 222, 220,
191             108, 109, 106, 141, 140, 139, 138, 132,
192             );
193             my @yydgoto = ( 59,
194             69, 70, 302, 189, 66, 67, 158, 95, 243, 244,
195             140, 190, 74, 105, 245, 246, 141, 142, 143, 144,
196             167, 106, 247, 202, 203, 248, 145, 60, 249, 204,
197             205, 191, 146, 75, 147, 148, 88, 107, 89, 149,
198             150, 151, 76, 96, 62, 63, 206, 192, 152, 193,
199             );
200             my @yysindex = ( 74,
201             -210, 0, 0, 0, 0, 0, 0, 0, 0, 0,
202             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
203             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
205             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206             0, 0, 0, 0, 0, 0, 0, 0, 0, -209,
207             265, 0, -165, -157, -211, 0, -235, -224, -156, -156,
208             0, 0, 0, 0, 0, 0, 0, -254, -215, 138,
209             138, 138, -156, 0, 138, 138, -150, 0, -138, 0,
210             -156, -157, -156, 0, 136, 328, 136, 136, 136, -169,
211             138, 138, -102, -214, 0, 0, -138, 0, 0, 0,
212             0, 0, 0, 136, -11, -197, -142, -81, 43, -113,
213             50, 0, 0, 0, 0, 0, -42, 392, 715, 0,
214             0, 0, -107, -10, 202, 412, -8, 0, 0, -201,
215             0, 0, -237, -234, -225, 0, 0, 0, 0, -197,
216             0, 0, -42, -197, 0, -30, -79, -25, -1, -229,
217             0, 8, 25, 137, 0, 0, 0, -151, 599, 0,
218             0, 599, 0, 0, 0, 599, 0, 599, 0, 0,
219             0, 0, 0, 0, 0, 0, 0, 0, 470, 0,
220             0, 490, -128, 30, -7, 215, 0, 599, 0, 424,
221             0, 0, 0, 0, 0, -220, -117, -206, 0, 0,
222             140, -78, 140, 15, -20, -226, -14, -14, 140, 140,
223             140, 0, 0, 140, 16, 33, 0, 0, 38, 0,
224             53, 0, 0, 0, 0, 0, 0, 0, -104, -99,
225             -16, -160, -238, 702, 0, 0, 0, 0, 0, 0,
226             0, 0, 0, 199, -213, 0, 0, 702, 548, 140,
227             702, 0, 645, 399, 568, 215, 0, 0, 0, 424,
228             0, 0, 0, 140, 140, 403, 0, 0, 0, 0,
229             0, 0, 140, 140, 414, 0, 0, 0, 0, 0,
230             0, 0, 0, 0, 0, 0, 0, 257, 0, 0,
231             0, -227, 0, 0, 0, 0, 0, 0, 0, 263,
232             702, 702, 626, 263, 263, 263, 0, 140, 0, 140,
233             0, 0, 140, 432, 0, 0, 0, 0, 0, 0,
234             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235             0, 0, 0, 0, 0, 0, 0, 0,
236             );
237             my @yyrindex = ( 0,
238             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
239             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
241             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243             0, 0, 0, 0, 0, 0, 0, 0, 0, 292,
244             0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
245             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
246             0, 0, 10, 0, 0, 0, 0, 0, 0, 0,
247             11, 12, 13, 0, 0, -5, 0, 0, 0, 0,
248             0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
249             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
250             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
251             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
252             0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
253             0, 0, 3, 5, 0, 0, 0, 0, 0, 0,
254             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
256             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
257             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
258             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
259             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
260             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
261             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
264             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
265             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
267             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
268             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
269             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
272             0, 0, 0, 0, 0, 0, 0, 0,
273             );
274             my @yygindex = ( 0,
275             237, 0, 0, 0, 176, 484, -114, 654, 0, 411,
276             0, -111, 671, 499, 158, 0, 0, 0, 0, 0,
277             463, 501, 0, -181, 0, 367, 0, 0, 0, -184,
278             0, 0, 0, 40, 0, 0, 540, 0, 0, -103,
279             533, 0, -186, 4, -59, 0, 537, 0, 266, -136,
280             );
281             sub constYYTABLESIZE () { 1015 }
282             my @yytable = ( 214,
283             77, 77, 76, 61, 75, 162, 117, 262, 90, 93,
284             92, 91, 89, 269, 267, 271, 268, 308, 219, 273,
285             64, 222, 80, 65, 277, 279, 280, 282, 334, 284,
286             224, 85, 288, 289, 290, 272, 77, 291, 293, 295,
287             92, 118, 312, 65, 81, 64, 227, 229, 65, 275,
288             227, 86, 255, 231, 217, 257, 335, 71, 127, 72,
289             128, 68, 225, 165, 309, 82, 166, 285, 226, 313,
290             119, 120, 121, 317, 129, 218, 319, 322, 220, 221,
291             68, 276, 260, 264, 268, 269, 112, 325, 326, 328,
292             78, 130, 131, 65, 132, 133, 329, 330, 332, 134,
293             68, 135, 136, 237, 137, 101, 68, 310, 71, 238,
294             72, 73, 237, 153, 296, 128, 138, 139, 238, 80,
295             103, 314, 316, 239, 318, 102, 320, 258, 324, 129,
296             240, 344, 239, 345, 241, 237, 346, 348, 212, 240,
297             104, 238, 159, 241, 242, 160, 130, 131, 207, 132,
298             133, 298, 77, 116, 134, 239, 135, 136, 299, 137,
299             87, 300, 240, 303, 301, 208, 241, 242, 161, 304,
300             274, 138, 139, 117, 337, 338, 340, 278, 2, 3,
301             4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
302             14, 15, 16, 17, 18, 19, 20, 229, 21, 71,
303             155, 72, 230, 231, 22, 23, 24, 25, 26, 27,
304             28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
305             38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
306             48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
307             58, 127, 84, 128, 125, 209, 305, 215, 263, 169,
308             22, 228, 306, 172, 84, 165, 232, 129, 166, 77,
309             174, 76, 210, 75, 216, 176, 71, 178, 72, 73,
310             281, 292, 22, 283, 22, 22, 239, 132, 133, 77,
311             233, 76, 134, 75, 135, 136, 169, 137, 294, 234,
312             172, 1, 71, 71, 72, 72, 160, 174, 156, 138,
313             139, 157, 176, 83, 178, 163, 235, 71, 164, 72,
314             71, 297, 72, 239, 91, 93, 77, 77, 76, 76,
315             75, 75, 117, 117, 90, 93, 92, 91, 89, 1,
316             2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
317             12, 13, 14, 15, 16, 17, 18, 19, 20, 336,
318             21, 261, 265, 341, 342, 343, 22, 23, 24, 25,
319             26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
320             36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
321             46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
322             56, 57, 58, 94, 2, 3, 4, 5, 6, 7,
323             8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
324             18, 19, 20, 71, 21, 72, 73, 71, 236, 72,
325             22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
326             32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
327             42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
328             52, 53, 54, 55, 56, 57, 58, 211, 2, 3,
329             4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
330             14, 15, 16, 17, 18, 19, 20, 196, 21, 197,
331             266, 311, 286, 287, 22, 23, 24, 25, 26, 27,
332             28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
333             38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
334             48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
335             58, 2, 3, 4, 5, 6, 7, 8, 9, 10,
336             11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
337             333, 21, 71, 73, 72, 73, 79, 22, 23, 24,
338             25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
339             35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
340             45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
341             55, 56, 57, 58, 2, 3, 4, 5, 6, 7,
342             8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
343             18, 19, 20, 259, 21, 122, 223, 123, 307, 90,
344             22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
345             32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
346             42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
347             52, 53, 54, 55, 56, 57, 58, 168, 169, 154,
348             170, 171, 172, 173, 321, 0, 0, 0, 327, 174,
349             0, 0, 0, 175, 176, 177, 178, 213, 169, 331,
350             170, 171, 172, 173, 0, 0, 71, 0, 72, 174,
351             71, 0, 72, 175, 176, 177, 178, 347, 0, 270,
352             199, 71, 200, 72, 201, 179, 180, 181, 182, 183,
353             184, 185, 186, 187, 188, 250, 0, 0, 251, 71,
354             0, 72, 252, 0, 253, 179, 180, 181, 182, 183,
355             184, 185, 186, 187, 188, 254, 169, 0, 170, 171,
356             172, 173, 0, 0, 97, 98, 0, 174, 99, 100,
357             0, 175, 176, 177, 178, 256, 169, 0, 170, 171,
358             172, 173, 0, 0, 114, 115, 0, 174, 0, 0,
359             0, 175, 176, 177, 178, 108, 0, 109, 110, 111,
360             113, 0, 0, 179, 180, 181, 182, 183, 184, 185,
361             186, 187, 188, 0, 124, 126, 0, 0, 0, 0,
362             0, 0, 0, 179, 180, 181, 182, 183, 184, 185,
363             186, 187, 188, 315, 169, 0, 170, 171, 172, 173,
364             0, 0, 0, 0, 0, 174, 0, 0, 0, 175,
365             176, 177, 178, 323, 169, 0, 170, 171, 172, 173,
366             0, 0, 0, 0, 0, 174, 0, 0, 0, 175,
367             176, 177, 178, 0, 0, 0, 0, 0, 0, 0,
368             0, 179, 180, 181, 182, 183, 184, 185, 186, 187,
369             188, 196, 0, 197, 198, 199, 0, 200, 0, 201,
370             0, 179, 180, 181, 182, 183, 184, 185, 186, 187,
371             188, 339, 169, 0, 170, 171, 172, 173, 0, 0,
372             0, 0, 0, 174, 0, 0, 0, 175, 176, 177,
373             178, 169, 0, 170, 171, 172, 173, 0, 0, 0,
374             0, 0, 174, 0, 0, 0, 175, 176, 177, 178,
375             0, 0, 71, 0, 72, 0, 0, 0, 0, 179,
376             180, 181, 182, 183, 184, 185, 186, 187, 188, 0,
377             0, 0, 0, 0, 0, 0, 0, 0, 179, 180,
378             181, 182, 183, 184, 185, 186, 187, 188, 169, 0,
379             170, 171, 172, 173, 0, 0, 0, 0, 0, 174,
380             194, 0, 195, 175, 176, 177, 178, 196, 0, 197,
381             198, 199, 0, 200, 0, 201, 0, 0, 0, 0,
382             0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
383             0, 0, 0, 0, 0, 179, 180, 181, 182, 183,
384             184, 185, 186, 187, 188,
385             );
386             my @yycheck = ( 136,
387             0, 61, 0, 0, 0, 120, 0, 194, 0, 0,
388             0, 0, 0, 198, 196, 200, 198, 256, 256, 206,
389             256, 256, 277, 259, 211, 212, 213, 214, 256, 256,
390             256, 256, 219, 220, 221, 256, 96, 224, 225, 226,
391             256, 256, 256, 259, 256, 256, 150, 277, 259, 256,
392             154, 276, 189, 283, 256, 192, 284, 278, 256, 280,
393             258, 316, 288, 298, 303, 277, 301, 294, 294, 283,
394             285, 286, 287, 260, 272, 277, 263, 264, 316, 317,
395             316, 288, 194, 195, 266, 270, 256, 274, 275, 276,
396             256, 289, 290, 259, 292, 293, 283, 284, 285, 297,
397             316, 299, 300, 264, 302, 256, 316, 244, 278, 270,
398             280, 281, 264, 256, 229, 258, 314, 315, 270, 277,
399             259, 258, 259, 284, 261, 276, 263, 256, 265, 272,
400             291, 318, 284, 320, 295, 264, 323, 324, 135, 291,
401             279, 270, 256, 295, 296, 259, 289, 290, 256, 292,
402             293, 256, 212, 256, 297, 284, 299, 300, 263, 302,
403             317, 266, 291, 263, 269, 273, 295, 296, 282, 269,
404             288, 314, 315, 276, 311, 312, 313, 256, 257, 258,
405             259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
406             269, 270, 271, 272, 273, 274, 275, 277, 277, 278,
407             282, 280, 282, 283, 283, 284, 285, 286, 287, 288,
408             289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
409             299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
410             309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
411             319, 256, 67, 258, 256, 256, 263, 256, 256, 257,
412             256, 282, 269, 261, 79, 298, 282, 272, 301, 259,
413             268, 259, 273, 259, 273, 273, 278, 275, 280, 281,
414             256, 256, 278, 294, 280, 281, 284, 292, 293, 279,
415             282, 279, 297, 279, 299, 300, 257, 302, 256, 282,
416             261, 0, 278, 278, 280, 280, 259, 268, 256, 314,
417             315, 259, 273, 67, 275, 256, 282, 278, 259, 280,
418             278, 259, 280, 284, 78, 79, 316, 317, 316, 317,
419             316, 317, 316, 317, 316, 316, 316, 316, 316, 256,
420             257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
421             267, 268, 269, 270, 271, 272, 273, 274, 275, 310,
422             277, 194, 195, 314, 315, 316, 283, 284, 285, 286,
423             287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
424             297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
425             307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
426             317, 318, 319, 256, 257, 258, 259, 260, 261, 262,
427             263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
428             273, 274, 275, 278, 277, 280, 281, 278, 282, 280,
429             283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
430             293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
431             303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
432             313, 314, 315, 316, 317, 318, 319, 256, 257, 258,
433             259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
434             269, 270, 271, 272, 273, 274, 275, 263, 277, 265,
435             266, 283, 217, 218, 283, 284, 285, 286, 287, 288,
436             289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
437             299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
438             309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
439             319, 257, 258, 259, 260, 261, 262, 263, 264, 265,
440             266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
441             284, 277, 278, 281, 280, 281, 63, 283, 284, 285,
442             286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
443             296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
444             306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
445             316, 317, 318, 319, 257, 258, 259, 260, 261, 262,
446             263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
447             273, 274, 275, 193, 277, 107, 144, 107, 242, 70,
448             283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
449             293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
450             303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
451             313, 314, 315, 316, 317, 318, 319, 256, 257, 117,
452             259, 260, 261, 262, 256, -1, -1, -1, 256, 268,
453             -1, -1, -1, 272, 273, 274, 275, 256, 257, 256,
454             259, 260, 261, 262, -1, -1, 278, -1, 280, 268,
455             278, -1, 280, 272, 273, 274, 275, 256, -1, 266,
456             267, 278, 269, 280, 271, 304, 305, 306, 307, 308,
457             309, 310, 311, 312, 313, 169, -1, -1, 172, 278,
458             -1, 280, 176, -1, 178, 304, 305, 306, 307, 308,
459             309, 310, 311, 312, 313, 256, 257, -1, 259, 260,
460             261, 262, -1, -1, 81, 82, -1, 268, 85, 86,
461             -1, 272, 273, 274, 275, 256, 257, -1, 259, 260,
462             261, 262, -1, -1, 101, 102, -1, 268, -1, -1,
463             -1, 272, 273, 274, 275, 95, -1, 97, 98, 99,
464             100, -1, -1, 304, 305, 306, 307, 308, 309, 310,
465             311, 312, 313, -1, 114, 115, -1, -1, -1, -1,
466             -1, -1, -1, 304, 305, 306, 307, 308, 309, 310,
467             311, 312, 313, 256, 257, -1, 259, 260, 261, 262,
468             -1, -1, -1, -1, -1, 268, -1, -1, -1, 272,
469             273, 274, 275, 256, 257, -1, 259, 260, 261, 262,
470             -1, -1, -1, -1, -1, 268, -1, -1, -1, 272,
471             273, 274, 275, -1, -1, -1, -1, -1, -1, -1,
472             -1, 304, 305, 306, 307, 308, 309, 310, 311, 312,
473             313, 263, -1, 265, 266, 267, -1, 269, -1, 271,
474             -1, 304, 305, 306, 307, 308, 309, 310, 311, 312,
475             313, 256, 257, -1, 259, 260, 261, 262, -1, -1,
476             -1, -1, -1, 268, -1, -1, -1, 272, 273, 274,
477             275, 257, -1, 259, 260, 261, 262, -1, -1, -1,
478             -1, -1, 268, -1, -1, -1, 272, 273, 274, 275,
479             -1, -1, 278, -1, 280, -1, -1, -1, -1, 304,
480             305, 306, 307, 308, 309, 310, 311, 312, 313, -1,
481             -1, -1, -1, -1, -1, -1, -1, -1, 304, 305,
482             306, 307, 308, 309, 310, 311, 312, 313, 257, -1,
483             259, 260, 261, 262, -1, -1, -1, -1, -1, 268,
484             256, -1, 258, 272, 273, 274, 275, 263, -1, 265,
485             266, 267, -1, 269, -1, 271, -1, -1, -1, -1,
486             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
487             -1, -1, -1, -1, -1, 304, 305, 306, 307, 308,
488             309, 310, 311, 312, 313,
489             );
490             sub constYYFINAL () { 59 }
491              
492              
493              
494             sub constYYMAXTOKEN () { 319 }
495              
496             my @yyname = (
497             "end-of-file",'','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
498             '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
499             '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
500             '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
501             '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
502             '','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','',
503             '','','','','','','','','','','','','','','','','','','','','','','',"ARTICLE","BE","CHARACTER",
504             "FIRST_PERSON","FIRST_PERSON_POSSESSIVE","FIRST_PERSON_REFLEXIVE",
505             "NEGATIVE_ADJECTIVE","NEGATIVE_COMPARATIVE","NEGATIVE_NOUN","NEUTRAL_ADJECTIVE",
506             "NEUTRAL_NOUN","NOTHING","POSITIVE_ADJECTIVE","POSITIVE_COMPARATIVE",
507             "POSITIVE_NOUN","SECOND_PERSON","SECOND_PERSON_POSSESSIVE",
508             "SECOND_PERSON_REFLEXIVE","THIRD_PERSON_POSSESSIVE","COLON","COMMA",
509             "EXCLAMATION_MARK","LEFT_BRACKET","PERIOD","QUESTION_MARK","RIGHT_BRACKET",
510             "AND","AS","ENTER","EXEUNT","EXIT","HEART","IF_NOT","IF_SO","LESS","LET_US",
511             "LISTEN_TO","MIND","MORE","NOT","OPEN","PROCEED_TO","RECALL","REMEMBER",
512             "RETURN_TO","SPEAK","THAN","THE_CUBE_OF","THE_DIFFERENCE_BETWEEN",
513             "THE_FACTORIAL_OF","THE_PRODUCT_OF","THE_QUOTIENT_BETWEEN",
514             "THE_REMAINDER_OF_THE_QUOTIENT_BETWEEN","THE_SQUARE_OF","THE_SQUARE_ROOT_OF",
515             "THE_SUM_OF","TWICE","WE_MUST","WE_SHALL","ACT_ROMAN","SCENE_ROMAN",
516             "ROMAN_NUMBER","NONMATCH",
517             );
518             my @yyrule = (
519             "\$accept : StartSymbol",
520             "StartSymbol : Play",
521             "Act : ActHeader Scene",
522             "Act : Act Scene",
523             "ActHeader : ACT_ROMAN COLON Comment EndSymbol",
524             "ActHeader : ACT_ROMAN COLON Comment error",
525             "ActHeader : ACT_ROMAN error Comment EndSymbol",
526             "Adjective : POSITIVE_ADJECTIVE",
527             "Adjective : NEUTRAL_ADJECTIVE",
528             "Adjective : NEGATIVE_ADJECTIVE",
529             "BinaryOperator : THE_DIFFERENCE_BETWEEN",
530             "BinaryOperator : THE_PRODUCT_OF",
531             "BinaryOperator : THE_QUOTIENT_BETWEEN",
532             "BinaryOperator : THE_REMAINDER_OF_THE_QUOTIENT_BETWEEN",
533             "BinaryOperator : THE_SUM_OF",
534             "CharacterDeclaration : CHARACTER COMMA Comment EndSymbol",
535             "CharacterDeclaration : error COMMA Comment EndSymbol",
536             "CharacterDeclaration : CHARACTER error Comment EndSymbol",
537             "CharacterDeclarationList : CharacterDeclaration",
538             "CharacterDeclarationList : CharacterDeclarationList CharacterDeclaration",
539             "CharacterList : CHARACTER AND CHARACTER",
540             "CharacterList : CHARACTER COMMA CharacterList",
541             "Comment : String",
542             "Comment : error",
543             "Comparative : NegativeComparative",
544             "Comparative : PositiveComparative",
545             "Comparison : NOT NonnegatedComparison",
546             "Comparison : NonnegatedComparison",
547             "Conditional : IF_SO",
548             "Conditional : IF_NOT",
549             "Constant : ARTICLE UnarticulatedConstant",
550             "Constant : FIRST_PERSON_POSSESSIVE UnarticulatedConstant",
551             "Constant : SECOND_PERSON_POSSESSIVE UnarticulatedConstant",
552             "Constant : THIRD_PERSON_POSSESSIVE UnarticulatedConstant",
553             "Constant : NOTHING",
554             "EndSymbol : QuestionSymbol",
555             "EndSymbol : StatementSymbol",
556             "EnterExit : LEFT_BRACKET ENTER CHARACTER RIGHT_BRACKET",
557             "EnterExit : LEFT_BRACKET ENTER CharacterList RIGHT_BRACKET",
558             "EnterExit : LEFT_BRACKET EXIT CHARACTER RIGHT_BRACKET",
559             "EnterExit : LEFT_BRACKET EXEUNT CharacterList RIGHT_BRACKET",
560             "EnterExit : LEFT_BRACKET EXEUNT RIGHT_BRACKET",
561             "EnterExit : LEFT_BRACKET ENTER error RIGHT_BRACKET",
562             "EnterExit : LEFT_BRACKET EXIT error RIGHT_BRACKET",
563             "EnterExit : LEFT_BRACKET EXEUNT error RIGHT_BRACKET",
564             "EnterExit : LEFT_BRACKET error RIGHT_BRACKET",
565             "Equality : AS Adjective AS",
566             "Equality : AS error AS",
567             "Equality : AS Adjective error",
568             "Inequality : Comparative THAN",
569             "Inequality : Comparative error",
570             "InOut : OpenYour HEART StatementSymbol",
571             "InOut : SPEAK SECOND_PERSON_POSSESSIVE MIND StatementSymbol",
572             "InOut : LISTEN_TO SECOND_PERSON_POSSESSIVE HEART StatementSymbol",
573             "InOut : OpenYour MIND StatementSymbol",
574             "InOut : OpenYour error StatementSymbol",
575             "InOut : SPEAK error MIND StatementSymbol",
576             "InOut : LISTEN_TO error HEART StatementSymbol",
577             "InOut : SPEAK SECOND_PERSON_POSSESSIVE error StatementSymbol",
578             "InOut : LISTEN_TO SECOND_PERSON_POSSESSIVE error StatementSymbol",
579             "InOut : OpenYour HEART error",
580             "InOut : SPEAK SECOND_PERSON_POSSESSIVE MIND error",
581             "InOut : LISTEN_TO SECOND_PERSON_POSSESSIVE HEART error",
582             "InOut : OpenYour MIND error",
583             "Jump : JumpPhrase ACT_ROMAN StatementSymbol",
584             "Jump : JumpPhrase SCENE_ROMAN StatementSymbol",
585             "Jump : JumpPhrase error StatementSymbol",
586             "JumpPhrase : JumpPhraseBeginning JumpPhraseEnd",
587             "JumpPhrase : error JumpPhraseEnd",
588             "JumpPhrase : JumpPhraseBeginning error",
589             "JumpPhraseBeginning : LET_US",
590             "JumpPhraseBeginning : WE_MUST",
591             "JumpPhraseBeginning : WE_SHALL",
592             "JumpPhraseEnd : PROCEED_TO",
593             "JumpPhraseEnd : RETURN_TO",
594             "Line : CHARACTER COLON SentenceList",
595             "Line : CHARACTER COLON error",
596             "Line : CHARACTER error SentenceList",
597             "NegativeComparative : NEGATIVE_COMPARATIVE",
598             "NegativeComparative : MORE NEGATIVE_ADJECTIVE",
599             "NegativeComparative : LESS POSITIVE_ADJECTIVE",
600             "NegativeConstant : NegativeNoun",
601             "NegativeConstant : NEGATIVE_ADJECTIVE NegativeConstant",
602             "NegativeConstant : NEUTRAL_ADJECTIVE NegativeConstant",
603             "NegativeNoun : NEGATIVE_NOUN",
604             "NonnegatedComparison : Equality",
605             "NonnegatedComparison : Inequality",
606             "OpenYour : OPEN SECOND_PERSON_POSSESSIVE",
607             "OpenYour : OPEN error",
608             "Play : Title CharacterDeclarationList Act",
609             "Play : Play Act",
610             "Play : Title CharacterDeclarationList error",
611             "Play : Title error Act",
612             "Play : error CharacterDeclarationList Act",
613             "PositiveComparative : POSITIVE_COMPARATIVE",
614             "PositiveComparative : MORE POSITIVE_ADJECTIVE",
615             "PositiveComparative : LESS NEGATIVE_ADJECTIVE",
616             "PositiveConstant : PositiveNoun",
617             "PositiveConstant : POSITIVE_ADJECTIVE PositiveConstant",
618             "PositiveConstant : NEUTRAL_ADJECTIVE PositiveConstant",
619             "PositiveNoun : NEUTRAL_NOUN",
620             "PositiveNoun : POSITIVE_NOUN",
621             "Pronoun : FIRST_PERSON",
622             "Pronoun : FIRST_PERSON_REFLEXIVE",
623             "Pronoun : SECOND_PERSON",
624             "Pronoun : SECOND_PERSON_REFLEXIVE",
625             "Question : BE Value Comparison Value QuestionSymbol",
626             "Question : BE error Comparison Value QuestionSymbol",
627             "Question : BE Value error Value QuestionSymbol",
628             "Question : BE Value Comparison error QuestionSymbol",
629             "QuestionSymbol : QUESTION_MARK",
630             "Recall : RECALL String StatementSymbol",
631             "Recall : RECALL error StatementSymbol",
632             "Recall : RECALL String error",
633             "Remember : REMEMBER Value StatementSymbol",
634             "Remember : REMEMBER error StatementSymbol",
635             "Remember : REMEMBER Value error",
636             "Scene : SceneHeader SceneContents",
637             "SceneContents : EnterExit",
638             "SceneContents : Line",
639             "SceneContents : SceneContents EnterExit",
640             "SceneContents : SceneContents Line",
641             "SceneHeader : SCENE_ROMAN COLON Comment EndSymbol",
642             "SceneHeader : SCENE_ROMAN COLON Comment error",
643             "SceneHeader : SCENE_ROMAN error Comment EndSymbol",
644             "Sentence : UnconditionalSentence",
645             "Sentence : Conditional COMMA UnconditionalSentence",
646             "Sentence : Conditional error UnconditionalSentence",
647             "SentenceList : Sentence",
648             "SentenceList : SentenceList Sentence",
649             "Statement : SECOND_PERSON BE Constant StatementSymbol",
650             "Statement : SECOND_PERSON UnarticulatedConstant StatementSymbol",
651             "Statement : SECOND_PERSON BE Equality Value StatementSymbol",
652             "Statement : SECOND_PERSON BE Constant error",
653             "Statement : SECOND_PERSON BE error StatementSymbol",
654             "Statement : SECOND_PERSON error Constant StatementSymbol",
655             "Statement : SECOND_PERSON UnarticulatedConstant error",
656             "Statement : SECOND_PERSON error StatementSymbol",
657             "Statement : SECOND_PERSON BE Equality Value error",
658             "Statement : SECOND_PERSON BE Equality error StatementSymbol",
659             "Statement : SECOND_PERSON BE error Value StatementSymbol",
660             "Statement : SECOND_PERSON error Equality Value StatementSymbol",
661             "StatementSymbol : EXCLAMATION_MARK",
662             "StatementSymbol : PERIOD",
663             "String : StringSymbol",
664             "String : String StringSymbol",
665             "StringSymbol : ARTICLE",
666             "StringSymbol : BE",
667             "StringSymbol : CHARACTER",
668             "StringSymbol : FIRST_PERSON",
669             "StringSymbol : FIRST_PERSON_POSSESSIVE",
670             "StringSymbol : FIRST_PERSON_REFLEXIVE",
671             "StringSymbol : NEGATIVE_ADJECTIVE",
672             "StringSymbol : NEGATIVE_COMPARATIVE",
673             "StringSymbol : NEGATIVE_NOUN",
674             "StringSymbol : NEUTRAL_ADJECTIVE",
675             "StringSymbol : NEUTRAL_NOUN",
676             "StringSymbol : NOTHING",
677             "StringSymbol : POSITIVE_ADJECTIVE",
678             "StringSymbol : POSITIVE_COMPARATIVE",
679             "StringSymbol : POSITIVE_NOUN",
680             "StringSymbol : SECOND_PERSON",
681             "StringSymbol : SECOND_PERSON_POSSESSIVE",
682             "StringSymbol : SECOND_PERSON_REFLEXIVE",
683             "StringSymbol : THIRD_PERSON_POSSESSIVE",
684             "StringSymbol : COMMA",
685             "StringSymbol : AND",
686             "StringSymbol : AS",
687             "StringSymbol : ENTER",
688             "StringSymbol : EXEUNT",
689             "StringSymbol : EXIT",
690             "StringSymbol : HEART",
691             "StringSymbol : IF_NOT",
692             "StringSymbol : IF_SO",
693             "StringSymbol : LESS",
694             "StringSymbol : LET_US",
695             "StringSymbol : LISTEN_TO",
696             "StringSymbol : MIND",
697             "StringSymbol : MORE",
698             "StringSymbol : NOT",
699             "StringSymbol : OPEN",
700             "StringSymbol : PROCEED_TO",
701             "StringSymbol : RECALL",
702             "StringSymbol : REMEMBER",
703             "StringSymbol : RETURN_TO",
704             "StringSymbol : SPEAK",
705             "StringSymbol : THAN",
706             "StringSymbol : THE_CUBE_OF",
707             "StringSymbol : THE_DIFFERENCE_BETWEEN",
708             "StringSymbol : THE_FACTORIAL_OF",
709             "StringSymbol : THE_PRODUCT_OF",
710             "StringSymbol : THE_QUOTIENT_BETWEEN",
711             "StringSymbol : THE_REMAINDER_OF_THE_QUOTIENT_BETWEEN",
712             "StringSymbol : THE_SQUARE_OF",
713             "StringSymbol : THE_SQUARE_ROOT_OF",
714             "StringSymbol : THE_SUM_OF",
715             "StringSymbol : TWICE",
716             "StringSymbol : WE_MUST",
717             "StringSymbol : WE_SHALL",
718             "StringSymbol : ACT_ROMAN",
719             "StringSymbol : SCENE_ROMAN",
720             "StringSymbol : ROMAN_NUMBER",
721             "StringSymbol : NONMATCH",
722             "Title : String EndSymbol",
723             "UnarticulatedConstant : PositiveConstant",
724             "UnarticulatedConstant : NegativeConstant",
725             "UnaryOperator : THE_CUBE_OF",
726             "UnaryOperator : THE_FACTORIAL_OF",
727             "UnaryOperator : THE_SQUARE_OF",
728             "UnaryOperator : THE_SQUARE_ROOT_OF",
729             "UnaryOperator : TWICE",
730             "UnconditionalSentence : InOut",
731             "UnconditionalSentence : Jump",
732             "UnconditionalSentence : Question",
733             "UnconditionalSentence : Recall",
734             "UnconditionalSentence : Remember",
735             "UnconditionalSentence : Statement",
736             "Value : CHARACTER",
737             "Value : Constant",
738             "Value : Pronoun",
739             "Value : BinaryOperator Value AND Value",
740             "Value : UnaryOperator Value",
741             "Value : BinaryOperator Value AND error",
742             "Value : BinaryOperator Value error Value",
743             "Value : BinaryOperator error AND Value",
744             "Value : UnaryOperator error",
745             );
746              
747 0     0 0 0 sub yyclearin { $yychar = -1; }
748 0     0 0 0 sub yyerrok { $yyerrflag = 0; }
749 0     0 0 0 sub YYERROR { ++$yynerrs; &yy_err_recover; }
  0         0  
750             sub yy_err_recover
751             {
752 0 0   0 0 0 if ($yyerrflag < 3)
753             {
754 0         0 $yyerrflag = 3;
755 0         0 while (1)
756             {
757 0 0 0     0 if (($yyn = $yysindex[$yyss[$yyssp]]) &&
      0        
      0        
758             ($yyn += constYYERRCODE()) >= 0 &&
759             $yyn <= $#yycheck && $yycheck[$yyn] == constYYERRCODE())
760             {
761              
762 0 0       0 print "yydebug: state $yyss[$yyssp], error recovery shifting",
763             " to state $yytable[$yyn]\n" if $yydebug;
764              
765 0         0 $yyss[++$yyssp] = $yystate = $yytable[$yyn];
766 0         0 $yyvs[++$yyvsp] = $yylval;
767 0         0 next yyloop;
768             }
769             else
770             {
771              
772 0 0       0 print "yydebug: error recovery discarding state ",
773             $yyss[$yyssp], "\n" if $yydebug;
774              
775 0 0       0 return(1) if $yyssp <= 0;
776 0         0 --$yyssp;
777 0         0 --$yyvsp;
778             }
779             }
780             }
781             else
782             {
783 0 0       0 return (1) if $yychar == 0;
784              
785 0 0       0 if ($yydebug)
786             {
787 0         0 $yys = '';
788 0 0       0 if ($yychar <= constYYMAXTOKEN()) { $yys = $yyname[$yychar]; }
  0         0  
789 0 0       0 if (!$yys) { $yys = 'illegal-symbol'; }
  0         0  
790 0         0 print "yydebug: state $yystate, error recovery discards ",
791             "token $yychar ($yys)\n";
792             }
793              
794 0         0 $yychar = -1;
795 0         0 next yyloop;
796             }
797 0         0 0;
798             } # yy_err_recover
799              
800             sub yyparse
801             {
802              
803 6 50   6 0 35 if ($yys = $ENV{'YYDEBUG'})
804             {
805 0 0       0 $yydebug = int($1) if $yys =~ /^(\d)/;
806             }
807              
808              
809 6         18 $yynerrs = 0;
810 6         12 $yyerrflag = 0;
811 6         13 $yychar = (-1);
812              
813 6         10 $yyssp = 0;
814 6         11 $yyvsp = 0;
815 6         21 $yyss[$yyssp] = $yystate = 0;
816              
817 6         11 yyloop: while(1)
818             {
819 9197 100       21961 yyreduce: {
820 9197         10382 last yyreduce if ($yyn = $yydefred[$yystate]);
821 4236 100       7511 if ($yychar < 0)
822             {
823 3980 100       6376 if (($yychar = &yylex) < 0) { $yychar = 0; }
  6         12  
824              
825 3980 50       8723 if ($yydebug)
826             {
827 0         0 $yys = '';
828 0 0       0 if ($yychar <= $#yyname) { $yys = $yyname[$yychar]; }
  0         0  
829 0 0       0 if (!$yys) { $yys = 'illegal-symbol'; };
  0         0  
830 0         0 print "yydebug: state $yystate, reading $yychar ($yys)\n";
831             }
832              
833             }
834 4236 100 66     35787 if (($yyn = $yysindex[$yystate]) && ($yyn += $yychar) >= 0 &&
      66        
      100        
835             $yyn <= $#yycheck && $yycheck[$yyn] == $yychar)
836             {
837              
838 3974 50       7159 print "yydebug: state $yystate, shifting to state ",
839             $yytable[$yyn], "\n" if $yydebug;
840              
841 3974         6238 $yyss[++$yyssp] = $yystate = $yytable[$yyn];
842 3974         5882 $yyvs[++$yyvsp] = $yylval;
843 3974         4729 $yychar = (-1);
844 3974 50       8969 --$yyerrflag if $yyerrflag > 0;
845 3974         11118 next yyloop;
846             }
847 262 50 33     2269 if (($yyn = $yyrindex[$yystate]) && ($yyn += $yychar) >= 0 &&
      33        
      33        
848             $yyn <= $#yycheck && $yycheck[$yyn] == $yychar)
849             {
850 262         351 $yyn = $yytable[$yyn];
851 262         357 last yyreduce;
852             }
853 0 0       0 if (! $yyerrflag) {
854 0         0 &yyerror('syntax error');
855 0         0 ++$yynerrs;
856             }
857 0 0       0 return undef if &yy_err_recover;
858             } # yyreduce
859              
860 5223 50       9392 print "yydebug: state $yystate, reducing by rule ",
861             "$yyn ($yyrule[$yyn])\n" if $yydebug;
862              
863 5223         6107 $yym = $yylen[$yyn];
864 5223         9031 $yyval = $yyvs[$yyvsp+1-$yym];
865 5223         8307 switch:
866             {
867 5223         5432 my $label = "State$yyn";
868 5223 100       47059 goto $label if exists $yystate{$label};
869 329         481 last switch;
870 6 50       33 State1: {
871             # 165 "Shakespeare.y"
872 6         11 { $output = $yyvs[$yyvsp-0] unless $num_errors;
  6         12  
873 6         14 last switch;
874             } }
875             State2: {
876             # 168 "Shakespeare.y"
877 8         13 { $yyval = $yyvs[$yyvsp-1] . ";\n" . $yyvs[$yyvsp-0];
  8         17  
  8         43  
878 8         20 last switch;
879             } }
880             State3: {
881             # 169 "Shakespeare.y"
882 24         40 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  24         38  
  24         148  
883 24         48 last switch;
884             } }
885             State4: {
886             # 173 "Shakespeare.y"
887 8         18 {
888 8         25 ($current_act = uc $yyvs[$yyvsp-3]) =~ tr/ /_/;
  8         26  
889 8         27 $yyval = "\n\n$current_act:\t" . $yyvs[$yyvsp-1];
890              
891 8         17 last switch;
892             } }
893             State5: {
894             # 178 "Shakespeare.y"
895 0         0 {
896 0         0 report_warning("period or exclamation mark");
  0         0  
897 0         0 ($current_act = uc $yyvs[$yyvsp-3]) =~ tr/ /_/;
898 0         0 $yyval = "\n\n$current_act:\t" . $yyvs[$yyvsp-1];
899              
900 0         0 last switch;
901             } }
902             State6: {
903             # 184 "Shakespeare.y"
904 0         0 {
905 0         0 report_warning("colon");
  0         0  
906 0         0 ($current_act = uc $yyvs[$yyvsp-3]) =~ tr/ /_/;
907 0         0 $yyval = "\n\n$current_act:\t" . $yyvs[$yyvsp-1];
908              
909 0         0 last switch;
910             } }
911             State7: {
912             # 191 "Shakespeare.y"
913 62         86 { $yyval = $yyvs[$yyvsp-0];
  62         83  
  62         119  
914 62         112 last switch;
915             } }
916             State8: {
917             # 192 "Shakespeare.y"
918 3         9 { $yyval = $yyvs[$yyvsp-0];
  3         5  
  3         8  
919 3         9 last switch;
920             } }
921             State9: {
922             # 193 "Shakespeare.y"
923 28         49 { $yyval = $yyvs[$yyvsp-0];
  28         37  
  28         51  
924 28         51 last switch;
925             } }
926             State10: {
927             # 196 "Shakespeare.y"
928 33         45 { $yyval = "int_sub";
  33         42  
  33         45  
929 33         62 last switch;
930             } }
931             State11: {
932             # 197 "Shakespeare.y"
933 3         7 { $yyval = "int_mul" ;
  3         5  
  3         7  
934 3         5 last switch;
935             } }
936             State12: {
937             # 198 "Shakespeare.y"
938 3         7 { $yyval = "int_div";
  3         4  
  3         7  
939 3         8 last switch;
940             } }
941             State13: {
942             # 199 "Shakespeare.y"
943 1         4 { $yyval = "int_mod" ;
  1         2  
  1         3  
944 1         2 last switch;
945             } }
946             State14: {
947             # 200 "Shakespeare.y"
948 81         95 { $yyval = "int_add";
  81         95  
  81         113  
949 81         130 last switch;
950             } }
951             State15: {
952             # 204 "Shakespeare.y"
953 39         50 {
954 39         44 $yyval = set_line()
  39         78  
955             . "my " . varname($yyvs[$yyvsp-3]) . " = "
956             . "\$play->declare_character('" . $yyvs[$yyvsp-3] . "');\t"
957             . $yyvs[$yyvsp-1];
958              
959 39         80 last switch;
960             } }
961             State16: {
962             # 211 "Shakespeare.y"
963 0         0 { $yyval = report_error("character name");
  0         0  
  0         0  
964 0         0 last switch;
965             } }
966             State17: {
967             # 213 "Shakespeare.y"
968 0         0 { $yyval = report_error("comma");
  0         0  
  0         0  
969 0         0 last switch;
970             } }
971             State18: {
972             # 217 "Shakespeare.y"
973 6         13 { $yyval = $yyvs[$yyvsp-0];
  6         12  
  6         15  
974 6         58 last switch;
975             } }
976             State19: {
977             # 219 "Shakespeare.y"
978 33         43 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  33         42  
  33         82  
979 33         83 last switch;
980             } }
981             State20: {
982             # 223 "Shakespeare.y"
983 25         41 { $yyval = [ $yyvs[$yyvsp-2], $yyvs[$yyvsp-0]];
  25         32  
  25         110  
984 25         57 last switch;
985             } }
986             State21: {
987             # 225 "Shakespeare.y"
988 0         0 { push @{ $yyval = $yyvs[$yyvsp-0] }, $yyvs[$yyvsp-2];
  0         0  
  0         0  
  0         0  
989 0         0 last switch;
990             } }
991             State22: {
992             # 228 "Shakespeare.y"
993 79         89 { $yyval = "# " . $yyvs[$yyvsp-0] . "\n";
  79         84  
  79         183  
994 79         136 last switch;
995             } }
996             State23: {
997             # 229 "Shakespeare.y"
998 0         0 { report_warning("comment"); $yyval="";
  0         0  
  0         0  
  0         0  
999 0         0 last switch;
1000             } }
1001             State24: {
1002             # 232 "Shakespeare.y"
1003 2         9 { $yyval = q{$comp1 < $comp2};
  2         4  
  2         6  
1004 2         6 last switch;
1005             } }
1006             State25: {
1007             # 233 "Shakespeare.y"
1008 3         6 { $yyval = q{$comp1 > $comp2};
  3         5  
  3         7  
1009 3         5 last switch;
1010             } }
1011             State26: {
1012             # 236 "Shakespeare.y"
1013 0         0 { $yyval = "!" . $yyvs[$yyvsp-0];
  0         0  
  0         0  
1014 0         0 last switch;
1015             } }
1016             State27: {
1017             # 237 "Shakespeare.y"
1018 19         35 { $yyval = $yyvs[$yyvsp-0];
  19         24  
  19         38  
1019 19         95 last switch;
1020             } }
1021             State28: {
1022             # 240 "Shakespeare.y"
1023 17         100 { $yyval = q{$truth_flag};
  17         25  
  17         88  
1024 17         34 last switch;
1025             } }
1026             State29: {
1027             # 241 "Shakespeare.y"
1028 2         4 { $yyval = q{not($truth_flag)};
  2         4  
  2         4  
1029 2         4 last switch;
1030             } }
1031             State30: {
1032             # 244 "Shakespeare.y"
1033 146         164 { $yyval = $yyvs[$yyvsp-0];
  146         153  
  146         224  
1034 146         232 last switch;
1035             } }
1036             State31: {
1037             # 245 "Shakespeare.y"
1038 6         16 { $yyval = $yyvs[$yyvsp-0];
  6         10  
  6         12  
1039 6         10 last switch;
1040             } }
1041             State32: {
1042             # 246 "Shakespeare.y"
1043 4         6 { $yyval = $yyvs[$yyvsp-0];
  4         7  
  4         8  
1044 4         8 last switch;
1045             } }
1046             State33: {
1047             # 247 "Shakespeare.y"
1048 2         3 { $yyval = $yyvs[$yyvsp-0];
  2         3  
  2         4  
1049 2         4 last switch;
1050             } }
1051             State34: {
1052             # 248 "Shakespeare.y"
1053 7         13 { $yyval = "0";
  7         11  
  7         13  
1054 7         13 last switch;
1055             } }
1056             State35: {
1057             # 251 "Shakespeare.y"
1058 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1059 0         0 last switch;
1060             } }
1061             State36: {
1062             # 252 "Shakespeare.y"
1063 85         101 { $yyval = $yyvs[$yyvsp-0];
  85         95  
  85         145  
1064 85         135 last switch;
1065             } }
1066             State37: {
1067             # 256 "Shakespeare.y"
1068 73         104 {
1069 73         87 $yyval = set_line() . '$play->enter_scene(' . varname($yyvs[$yyvsp-1]) . ");\n";
  73         144  
1070              
1071 73         152 last switch;
1072             } }
1073             State38: {
1074             # 260 "Shakespeare.y"
1075 24         35 {
1076 24         34 $yyval = "";
  24         52  
1077 24         35 foreach my $character (@{ $yyvs[$yyvsp-1] }) {
  24         85  
1078 48         139 $yyval .= set_line() . '$play->enter_scene(' . varname($character) . ");\n";
1079             }
1080              
1081 24         58 last switch;
1082             } }
1083             State39: {
1084             # 267 "Shakespeare.y"
1085 73         106 {
1086 73         82 $yyval = set_line() . '$play->exit_scene(' . varname($yyvs[$yyvsp-1]) . ");\n";
  73         150  
1087              
1088 73         149 last switch;
1089             } }
1090             State40: {
1091             # 271 "Shakespeare.y"
1092 1         3 {
1093 1         3 $yyval = "";
  1         4  
1094 1         2 foreach my $character (@{ $yyvs[$yyvsp-1] }) {
  1         4  
1095 2         6 $yyval .= set_line() . '$play->exit_scene(' . varname($character) . ");\n";
1096             }
1097              
1098 1         3 last switch;
1099             } }
1100             State41: {
1101             # 278 "Shakespeare.y"
1102 22         42 {
1103 22         37 $yyval = set_line() . "\$play->exit_scene_all;\n";
  22         63  
1104              
1105 22         46 last switch;
1106             } }
1107             State42: {
1108             # 282 "Shakespeare.y"
1109 0         0 {
1110 0         0 $yyval = report_error("character or character list");
  0         0  
1111              
1112 0         0 last switch;
1113             } }
1114             State43: {
1115             # 286 "Shakespeare.y"
1116 0         0 {
1117 0         0 $yyval = report_error("character");
  0         0  
1118              
1119 0         0 last switch;
1120             } }
1121             State44: {
1122             # 290 "Shakespeare.y"
1123 0         0 {
1124 0         0 $yyval = report_error("character list or nothing");
  0         0  
1125              
1126 0         0 last switch;
1127             } }
1128             State45: {
1129             # 294 "Shakespeare.y"
1130 0         0 {
1131 0         0 $yyval = report_error("'enter', 'exit' or 'exeunt'");
  0         0  
1132              
1133 0         0 last switch;
1134             } }
1135             State46: {
1136             # 299 "Shakespeare.y"
1137 93         126 { $yyval = q{$comp1 == $comp2};
  93         111  
  93         138  
1138 93         146 last switch;
1139             } }
1140             State47: {
1141             # 300 "Shakespeare.y"
1142 0         0 { $yyval = report_error("adjective");
  0         0  
  0         0  
1143 0         0 last switch;
1144             } }
1145             State48: {
1146             # 301 "Shakespeare.y"
1147 0         0 { $yyval = report_error("as");
  0         0  
  0         0  
1148 0         0 last switch;
1149             } }
1150             State49: {
1151             # 304 "Shakespeare.y"
1152 5         9 { $yyval = $yyvs[$yyvsp-1];
  5         12  
  5         13  
1153 5         14 last switch;
1154             } }
1155             State50: {
1156             # 305 "Shakespeare.y"
1157 0         0 { report_warning("'than'"); $yyval = $yyvs[$yyvsp-1];
  0         0  
  0         0  
  0         0  
1158 0         0 last switch;
1159             } }
1160             State51: {
1161             # 309 "Shakespeare.y"
1162 7         11 { $yyval = set_line() . "\$play->second_person->int_output;\n";
  7         13  
  7         18  
1163 7         17 last switch;
1164             } }
1165             State52: {
1166             # 311 "Shakespeare.y"
1167 94         129 { $yyval = set_line() . "\$play->second_person->char_output;\n";
  94         97  
  94         249  
1168 94         183 last switch;
1169             } }
1170             State53: {
1171             # 313 "Shakespeare.y"
1172 1         2 { $yyval = set_line() . "\$play->second_person->int_input;\n";
  1         1  
  1         3  
1173 1         2 last switch;
1174             } }
1175             State54: {
1176             # 315 "Shakespeare.y"
1177 2         6 { $yyval = set_line() . "\$play->second_person->char_input;\n";
  2         4  
  2         8  
1178 2         8 last switch;
1179             } }
1180             State55: {
1181             # 317 "Shakespeare.y"
1182 0         0 { $yyval = report_error("'mind' or 'heart'");
  0         0  
  0         0  
1183 0         0 last switch;
1184             } }
1185             State56: {
1186             # 319 "Shakespeare.y"
1187 0         0 {
1188 0         0 report_warning("possessive pronoun, second person");
  0         0  
1189 0         0 $yyval = set_line() . "\$play->second_person->char_output;\n";
1190              
1191 0         0 last switch;
1192             } }
1193             State57: {
1194             # 324 "Shakespeare.y"
1195 0         0 {
1196 0         0 report_warning("possessive pronoun, second person");
  0         0  
1197 0         0 $yyval = set_line() . "\$play->second_person->int_input;\n";
1198              
1199 0         0 last switch;
1200             } }
1201             State58: {
1202             # 329 "Shakespeare.y"
1203 0         0 {
1204 0         0 report_warning("'mind'");
  0         0  
1205 0         0 $yyval = set_line() . "\$play->second_person->char_output;\n";
1206              
1207 0         0 last switch;
1208             } }
1209             State59: {
1210             # 334 "Shakespeare.y"
1211 0         0 {
1212 0         0 report_warning("'heart'");
  0         0  
1213 0         0 $yyval = set_line() . "\$play->second_person->int_input;\n";
1214              
1215 0         0 last switch;
1216             } }
1217             State60: {
1218             # 339 "Shakespeare.y"
1219 0         0 {
1220 0         0 report_warning("period or exclamation mark");
  0         0  
1221 0         0 $yyval = set_line() . "\$play->second_person->int_output;\n";
1222              
1223 0         0 last switch;
1224             } }
1225             State61: {
1226             # 344 "Shakespeare.y"
1227 0         0 {
1228 0         0 report_warning("period or exclamation mark");
  0         0  
1229 0         0 $yyval = set_line() . "\$play->second_person->char_output;\n";
1230              
1231 0         0 last switch;
1232             } }
1233             State62: {
1234             # 349 "Shakespeare.y"
1235 0         0 {
1236 0         0 report_warning("period or exclamation mark");
  0         0  
1237 0         0 $yyval = set_line() . "\$play->second_person->int_input;\n";
1238              
1239 0         0 last switch;
1240             } }
1241             State63: {
1242             # 354 "Shakespeare.y"
1243 0         0 {
1244 0         0 report_warning("period or exclamation mark");
  0         0  
1245 0         0 $yyval = set_line() . "\$play->second_person->char_input;\n";
1246              
1247 0         0 last switch;
1248             } }
1249             State64: {
1250             # 361 "Shakespeare.y"
1251 0         0 {
1252 0         0 ( my $label = uc $yyvs[$yyvsp-1]) =~ tr/ /_/;
  0         0  
1253 0         0 $yyval = "goto $label;\n";
1254              
1255 0         0 last switch;
1256             } }
1257             State65: {
1258             # 366 "Shakespeare.y"
1259 23         39 {
1260 23         34 ( my $label = uc "$current_act " . uc $yyvs[$yyvsp-1]) =~ tr/ /_/;
  23         102  
1261 23         51 $yyval = "goto $label;\n";
1262              
1263 23         44 last switch;
1264             } }
1265             State66: {
1266             # 371 "Shakespeare.y"
1267 0         0 { $yyval = report_error("'act [roman number]' or 'scene [roman number]'");
  0         0  
  0         0  
1268 0         0 last switch;
1269             } }
1270             State67: {
1271             # 374 "Shakespeare.y"
1272 23         43 { $yyval = $yyvs[$yyvsp-1] . " " . $yyvs[$yyvsp-0];
  23         32  
  23         92  
1273 23         45 last switch;
1274             } }
1275             State68: {
1276             # 375 "Shakespeare.y"
1277 0         0 { $yyval = report_warning("'let us', 'we must' or 'we shall'");
  0         0  
  0         0  
1278 0         0 last switch;
1279             } }
1280             State69: {
1281             # 376 "Shakespeare.y"
1282 0         0 { $yyval = report_warning("'proceed to' or 'return to'");
  0         0  
  0         0  
1283 0         0 last switch;
1284             } }
1285             State70: {
1286             # 379 "Shakespeare.y"
1287 22         42 { $yyval = $yyvs[$yyvsp-0];
  22         39  
  22         44  
1288 22         44 last switch;
1289             } }
1290             State71: {
1291             # 380 "Shakespeare.y"
1292 1         2 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         3  
1293 1         3 last switch;
1294             } }
1295             State72: {
1296             # 381 "Shakespeare.y"
1297 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1298 0         0 last switch;
1299             } }
1300             State73: {
1301             # 384 "Shakespeare.y"
1302 12         21 { $yyval = $yyvs[$yyvsp-0];
  12         13  
  12         28  
1303 12         23 last switch;
1304             } }
1305             State74: {
1306             # 385 "Shakespeare.y"
1307 11         29 { $yyval = $yyvs[$yyvsp-0];
  11         18  
  11         32  
1308 11         24 last switch;
1309             } }
1310             State75: {
1311             # 389 "Shakespeare.y"
1312 137         195 { $yyval = set_line() . '$play->activate_character(' . varname($yyvs[$yyvsp-2]) . ");\n" . $yyvs[$yyvsp-0];
  137         150  
  137         275  
1313 137         290 last switch;
1314             } }
1315             State76: {
1316             # 391 "Shakespeare.y"
1317 0         0 { $yyval = report_error("sentence list");
  0         0  
  0         0  
1318 0         0 last switch;
1319             } }
1320             State77: {
1321             # 393 "Shakespeare.y"
1322 0         0 { $yyval = report_error("colon");
  0         0  
  0         0  
1323 0         0 last switch;
1324             } }
1325             State78: {
1326             # 396 "Shakespeare.y"
1327 2         6 { $yyval = $yyvs[$yyvsp-0];
  2         4  
  2         8  
1328 2         4 last switch;
1329             } }
1330             State79: {
1331             # 397 "Shakespeare.y"
1332 0         0 { $yyval = $yyvs[$yyvsp-1] . " " . $yyvs[$yyvsp-0];
  0         0  
  0         0  
1333 0         0 last switch;
1334             } }
1335             State80: {
1336             # 398 "Shakespeare.y"
1337 0         0 { $yyval = $yyvs[$yyvsp-1] . " " . $yyvs[$yyvsp-0];
  0         0  
  0         0  
1338 0         0 last switch;
1339             } }
1340             State81: {
1341             # 401 "Shakespeare.y"
1342 43         58 { $yyval = "(-1)";
  43         58  
  43         57  
1343 43         70 last switch;
1344             } }
1345             State82: {
1346             # 402 "Shakespeare.y"
1347 138         154 { $yyval = "2*" . $yyvs[$yyvsp-0];
  138         189  
  138         219  
1348 138         193 last switch;
1349             } }
1350             State83: {
1351             # 403 "Shakespeare.y"
1352 14         22 { $yyval = "2*" . $yyvs[$yyvsp-0];
  14         21  
  14         25  
1353 14         21 last switch;
1354             } }
1355             State84: {
1356             # 406 "Shakespeare.y"
1357 43         83 { $yyval = $yyvs[$yyvsp-0];
  43         44  
  43         73  
1358 43         72 last switch;
1359             } }
1360             State85: {
1361             # 409 "Shakespeare.y"
1362 14         24 { $yyval = "(" . $yyvs[$yyvsp-0] . ")";
  14         17  
  14         40  
1363 14         23 last switch;
1364             } }
1365             State86: {
1366             # 410 "Shakespeare.y"
1367 5         9 { $yyval = "(" . $yyvs[$yyvsp-0] . ")";
  5         11  
  5         18  
1368 5         12 last switch;
1369             } }
1370             State87: {
1371             # 413 "Shakespeare.y"
1372 9         17 { $yyval = "";
  9         16  
  9         18  
1373 9         19 last switch;
1374             } }
1375             State88: {
1376             # 414 "Shakespeare.y"
1377 0         0 { $yyval = report_warning("possessive pronoun, second person");
  0         0  
  0         0  
1378 0         0 last switch;
1379             } }
1380             State89: {
1381             # 418 "Shakespeare.y"
1382 6         16 { $yyval = "# " . $yyvs[$yyvsp-2] . "\n" . $preamble . $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  6         15  
  6         98  
1383 6         17 last switch;
1384             } }
1385             State90: {
1386             # 420 "Shakespeare.y"
1387 2         7 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  2         4  
  2         16  
1388 2         7 last switch;
1389             } }
1390             State91: {
1391             # 422 "Shakespeare.y"
1392 0         0 { $yyval = report_error("act");
  0         0  
  0         0  
1393 0         0 last switch;
1394             } }
1395             State92: {
1396             # 424 "Shakespeare.y"
1397 0         0 { $yyval = report_error("character declaration list");
  0         0  
  0         0  
1398 0         0 last switch;
1399             } }
1400             State93: {
1401             # 426 "Shakespeare.y"
1402 0         0 { report_warning("title"); $yyval = $preamble . $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  0         0  
  0         0  
  0         0  
1403 0         0 last switch;
1404             } }
1405             State94: {
1406             # 429 "Shakespeare.y"
1407 2         5 { $yyval = $yyvs[$yyvsp-0];
  2         2  
  2         5  
1408 2         5 last switch;
1409             } }
1410             State95: {
1411             # 430 "Shakespeare.y"
1412 1         3 { $yyval = $yyvs[$yyvsp-1] . " " . $yyvs[$yyvsp-0];
  1         3  
  1         4  
1413 1         2 last switch;
1414             } }
1415             State96: {
1416             # 431 "Shakespeare.y"
1417 0         0 { $yyval = $yyvs[$yyvsp-1] . " " . $yyvs[$yyvsp-0];
  0         0  
  0         0  
1418 0         0 last switch;
1419             } }
1420             State97: {
1421             # 434 "Shakespeare.y"
1422 117         422 { $yyval = "1";
  117         162  
  117         211  
1423 117         194 last switch;
1424             } }
1425             State98: {
1426             # 435 "Shakespeare.y"
1427 169         202 { $yyval = "2*" . $yyvs[$yyvsp-0];
  169         227  
  169         237  
1428 169         270 last switch;
1429             } }
1430             State99: {
1431             # 436 "Shakespeare.y"
1432 44         69 { $yyval = "2*" . $yyvs[$yyvsp-0];
  44         51  
  44         139  
1433 44         74 last switch;
1434             } }
1435             State100: {
1436             # 439 "Shakespeare.y"
1437 51         91 { $yyval = $yyvs[$yyvsp-0];
  51         66  
  51         89  
1438 51         85 last switch;
1439             } }
1440             State101: {
1441             # 440 "Shakespeare.y"
1442 66         91 { $yyval = $yyvs[$yyvsp-0];
  66         65  
  66         113  
1443 66         112 last switch;
1444             } }
1445             State102: {
1446             # 443 "Shakespeare.y"
1447 21         39 { $yyval = '$play->first_person';
  21         29  
  21         43  
1448 21         36 last switch;
1449             } }
1450             State103: {
1451             # 444 "Shakespeare.y"
1452 2         3 { $yyval = '$play->first_person';
  2         3  
  2         4  
1453 2         4 last switch;
1454             } }
1455             State104: {
1456             # 445 "Shakespeare.y"
1457 4         14 { $yyval = '$play->second_person';
  4         7  
  4         10  
1458 4         11 last switch;
1459             } }
1460             State105: {
1461             # 446 "Shakespeare.y"
1462 30         53 { $yyval = '$play->second_person';
  30         39  
  30         56  
1463 30         54 last switch;
1464             } }
1465             State106: {
1466             # 450 "Shakespeare.y"
1467 19         33 {
1468 19         25 $yyval = "\$comp1 = " . $yyvs[$yyvsp-3] . ";\n";
  19         58  
1469 19         70 $yyval .= "\$comp2 = " . $yyvs[$yyvsp-1] . ";\n";
1470 19         41 $yyval .= "\$truth_flag = " . $yyvs[$yyvsp-2] . ";\n";
1471              
1472 19         38 last switch;
1473             } }
1474             State107: {
1475             # 456 "Shakespeare.y"
1476 0         0 {
1477 0         0 $yyval = report_error("value");
  0         0  
1478              
1479 0         0 last switch;
1480             } }
1481             State108: {
1482             # 460 "Shakespeare.y"
1483 0         0 {
1484 0         0 $yyval = report_error("comparison");
  0         0  
1485              
1486 0         0 last switch;
1487             } }
1488             State109: {
1489             # 464 "Shakespeare.y"
1490 0         0 {
1491 0         0 $yyval = report_error("value");
  0         0  
1492              
1493 0         0 last switch;
1494             } }
1495             State111: {
1496             # 473 "Shakespeare.y"
1497 7         17 {
1498 7         10 $yyval = "\$play->second_person->pop;\n";
  7         14  
1499              
1500 7         15 last switch;
1501             } }
1502             State112: {
1503             # 477 "Shakespeare.y"
1504 0         0 {
1505 0         0 report_warning("string");
  0         0  
1506 0         0 $yyval = "\$play->second_person->pop;\n";
1507              
1508 0         0 last switch;
1509             } }
1510             State113: {
1511             # 482 "Shakespeare.y"
1512 0         0 {
1513 0         0 report_warning("period or exclamation mark");
  0         0  
1514 0         0 $yyval = "\$play->second_person->pop;\n";
1515              
1516 0         0 last switch;
1517             } }
1518             State114: {
1519             # 489 "Shakespeare.y"
1520 6         14 {
1521 6         11 $yyval = '$play->second_person->push(' . $yyvs[$yyvsp-1] . ");\n";
  6         27  
1522              
1523 6         12 last switch;
1524             } }
1525             State115: {
1526             # 493 "Shakespeare.y"
1527 0         0 {
1528 0         0 $yyval = report_error("value");
  0         0  
1529              
1530 0         0 last switch;
1531             } }
1532             State116: {
1533             # 497 "Shakespeare.y"
1534 0         0 {
1535 0         0 report_warning("period or exclamation mark");
  0         0  
1536 0         0 $yyval = '$play->second_person->push(' . $yyvs[$yyvsp-1] . ");\n";
1537              
1538 0         0 last switch;
1539             } }
1540             State117: {
1541             # 503 "Shakespeare.y"
1542 32         53 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  32         48  
  32         257  
1543 32         67 last switch;
1544             } }
1545             State118: {
1546             # 506 "Shakespeare.y"
1547 27         43 { $yyval = $yyvs[$yyvsp-0];
  27         41  
  27         53  
1548 27         44 last switch;
1549             } }
1550             State119: {
1551             # 507 "Shakespeare.y"
1552 5         9 { $yyval = $yyvs[$yyvsp-0];
  5         10  
  5         12  
1553 5         10 last switch;
1554             } }
1555             State120: {
1556             # 508 "Shakespeare.y"
1557 166         219 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  166         180  
  166         402  
1558 166         250 last switch;
1559             } }
1560             State121: {
1561             # 509 "Shakespeare.y"
1562 132         157 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  132         182  
  132         403  
1563 132         229 last switch;
1564             } }
1565             State122: {
1566             # 513 "Shakespeare.y"
1567 32         57 {
1568 32         41 ($current_scene = $current_act . "_" . uc $yyvs[$yyvsp-3]) =~ tr/ /_/;
  32         144  
1569 32         419 $yyval = "\n$current_scene:\t" . $yyvs[$yyvsp-1] . "\n";
1570              
1571 32         57 last switch;
1572             } }
1573             State123: {
1574             # 518 "Shakespeare.y"
1575 0         0 {
1576 0         0 report_warning("period or exclamation mark");
  0         0  
1577 0         0 ($current_scene = $current_act . "_" . uc $yyvs[$yyvsp-3]) =~ tr/ /_/;
1578 0         0 $yyval = "\n$current_scene:\t" . $yyvs[$yyvsp-1] . "\n";
1579              
1580 0         0 last switch;
1581             } }
1582             State124: {
1583             # 524 "Shakespeare.y"
1584 0         0 {
1585 0         0 report_warning("colon");
  0         0  
1586 0         0 ($current_scene = $current_act . "_" . uc $yyvs[$yyvsp-3]) =~ tr/ /_/;
1587 0         0 $yyval = "\n$current_scene:\t" . $yyvs[$yyvsp-1] . "\n";
1588              
1589 0         0 last switch;
1590             } }
1591             State125: {
1592             # 532 "Shakespeare.y"
1593 225         362 { $yyval = $yyvs[$yyvsp-0];
  225         244  
  225         346  
1594 225         335 last switch;
1595             } }
1596             State126: {
1597             # 534 "Shakespeare.y"
1598 19         36 { $yyval = "if (" . $yyvs[$yyvsp-2] . ") {\n" . $yyvs[$yyvsp-0] . "}\n";
  19         27  
  19         75  
1599 19         38 last switch;
1600             } }
1601             State127: {
1602             # 536 "Shakespeare.y"
1603 0         0 {
1604 0         0 report_warning("comma");
  0         0  
1605 0         0 $yyval = "if (" . $yyvs[$yyvsp-2] . ") {\n" . $yyvs[$yyvsp-0] . "}\n";
1606              
1607 0         0 last switch;
1608             } }
1609             State128: {
1610             # 542 "Shakespeare.y"
1611 137         166 { $yyval = $yyvs[$yyvsp-0];
  137         142  
  137         299  
1612 137         208 last switch;
1613             } }
1614             State129: {
1615             # 543 "Shakespeare.y"
1616 107         135 { $yyval = $yyvs[$yyvsp-1] . $yyvs[$yyvsp-0];
  107         161  
  107         253  
1617 107         179 last switch;
1618             } }
1619             State130: {
1620             # 547 "Shakespeare.y"
1621 4         10 {
1622 4         6 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
  4         13  
1623              
1624 4         8 last switch;
1625             } }
1626             State131: {
1627             # 551 "Shakespeare.y"
1628 2         4 {
1629 2         4 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
  2         7  
1630              
1631 2         5 last switch;
1632             } }
1633             State132: {
1634             # 555 "Shakespeare.y"
1635 79         109 {
1636 79         96 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
  79         199  
1637              
1638 79         161 last switch;
1639             } }
1640             State133: {
1641             # 559 "Shakespeare.y"
1642 0         0 {
1643 0         0 report_warning("period or exclamation mark");
  0         0  
1644 0         0 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
1645              
1646 0         0 last switch;
1647             } }
1648             State134: {
1649             # 564 "Shakespeare.y"
1650 0         0 {
1651 0         0 $yyval = report_error("constant");
  0         0  
1652              
1653 0         0 last switch;
1654             } }
1655             State135: {
1656             # 568 "Shakespeare.y"
1657 0         0 {
1658 0         0 report_warning("be");
  0         0  
1659 0         0 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
1660              
1661 0         0 last switch;
1662             } }
1663             State136: {
1664             # 573 "Shakespeare.y"
1665 0         0 {
1666 0         0 report_warning("period or exclamation mark");
  0         0  
1667 0         0 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
1668              
1669 0         0 last switch;
1670             } }
1671             State137: {
1672             # 578 "Shakespeare.y"
1673 0         0 {
1674 0         0 $yyval = report_error("constant without article");
  0         0  
1675              
1676 0         0 last switch;
1677             } }
1678             State138: {
1679             # 582 "Shakespeare.y"
1680 0         0 {
1681 0         0 report_warning("period or exclamation mark");
  0         0  
1682 0         0 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
1683              
1684 0         0 last switch;
1685             } }
1686             State139: {
1687             # 587 "Shakespeare.y"
1688 0         0 {
1689 0         0 $yyval = report_error("value");
  0         0  
1690              
1691 0         0 last switch;
1692             } }
1693             State140: {
1694             # 591 "Shakespeare.y"
1695 0         0 {
1696 0         0 report_warning("equality");
  0         0  
1697 0         0 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
1698              
1699 0         0 last switch;
1700             } }
1701             State141: {
1702             # 596 "Shakespeare.y"
1703 0         0 {
1704 0         0 report_warning("be");
  0         0  
1705 0         0 $yyval = set_line() . '$play->second_person->assign(' . $yyvs[$yyvsp-1] . ");\n";
1706              
1707 0         0 last switch;
1708             } }
1709             State144: {
1710             # 606 "Shakespeare.y"
1711 92         122 { $yyval = $yyvs[$yyvsp-0];
  92         99  
  92         153  
1712 92         144 last switch;
1713             } }
1714             State145: {
1715             # 607 "Shakespeare.y"
1716 389         454 { $yyval = $yyvs[$yyvsp-1] . " " . $yyvs[$yyvsp-0];
  389         395  
  389         823  
1717 389         601 last switch;
1718             } }
1719             State146: {
1720             # 610 "Shakespeare.y"
1721 59         78 { $yyval = $yyvs[$yyvsp-0];
  59         66  
  59         101  
1722 59         99 last switch;
1723             } }
1724             State147: {
1725             # 611 "Shakespeare.y"
1726 13         17 { $yyval = $yyvs[$yyvsp-0];
  13         19  
  13         27  
1727 13         24 last switch;
1728             } }
1729             State148: {
1730             # 612 "Shakespeare.y"
1731 12         26 { $yyval = $yyvs[$yyvsp-0];
  12         17  
  12         25  
1732 12         25 last switch;
1733             } }
1734             State149: {
1735             # 613 "Shakespeare.y"
1736 3         11 { $yyval = $yyvs[$yyvsp-0];
  3         6  
  3         7  
1737 3         6 last switch;
1738             } }
1739             State150: {
1740             # 614 "Shakespeare.y"
1741 1         3 { $yyval = $yyvs[$yyvsp-0];
  1         3  
  1         3  
1742 1         2 last switch;
1743             } }
1744             State151: {
1745             # 615 "Shakespeare.y"
1746 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1747 0         0 last switch;
1748             } }
1749             State152: {
1750             # 616 "Shakespeare.y"
1751 1         3 { $yyval = $yyvs[$yyvsp-0];
  1         3  
  1         2  
1752 1         2 last switch;
1753             } }
1754             State153: {
1755             # 617 "Shakespeare.y"
1756 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1757 0         0 last switch;
1758             } }
1759             State154: {
1760             # 618 "Shakespeare.y"
1761 1         2 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         3  
1762 1         2 last switch;
1763             } }
1764             State155: {
1765             # 619 "Shakespeare.y"
1766 2         6 { $yyval = $yyvs[$yyvsp-0];
  2         3  
  2         14  
1767 2         6 last switch;
1768             } }
1769             State156: {
1770             # 620 "Shakespeare.y"
1771 1         3 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         3  
1772 1         3 last switch;
1773             } }
1774             State157: {
1775             # 621 "Shakespeare.y"
1776 1         2 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         2  
1777 1         2 last switch;
1778             } }
1779             State158: {
1780             # 622 "Shakespeare.y"
1781 1         3 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         2  
1782 1         2 last switch;
1783             } }
1784             State159: {
1785             # 623 "Shakespeare.y"
1786 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1787 0         0 last switch;
1788             } }
1789             State160: {
1790             # 624 "Shakespeare.y"
1791 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1792 0         0 last switch;
1793             } }
1794             State161: {
1795             # 625 "Shakespeare.y"
1796 4         16 { $yyval = $yyvs[$yyvsp-0];
  4         7  
  4         10  
1797 4         10 last switch;
1798             } }
1799             State162: {
1800             # 626 "Shakespeare.y"
1801 5         10 { $yyval = $yyvs[$yyvsp-0];
  5         11  
  5         11  
1802 5         12 last switch;
1803             } }
1804             State163: {
1805             # 627 "Shakespeare.y"
1806 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1807 0         0 last switch;
1808             } }
1809             State164: {
1810             # 628 "Shakespeare.y"
1811 2         71 { $yyval = $yyvs[$yyvsp-0];
  2         5  
  2         6  
1812 2         5 last switch;
1813             } }
1814             State165: {
1815             # 630 "Shakespeare.y"
1816 12         22 { $yyval = $yyvs[$yyvsp-0];
  12         26  
  12         24  
1817 12         20 last switch;
1818             } }
1819             State166: {
1820             # 632 "Shakespeare.y"
1821 13         25 { $yyval = $yyvs[$yyvsp-0];
  13         48  
  13         32  
1822 13         24 last switch;
1823             } }
1824             State167: {
1825             # 633 "Shakespeare.y"
1826 1         5 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         3  
1827 1         2 last switch;
1828             } }
1829             State168: {
1830             # 634 "Shakespeare.y"
1831 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1832 0         0 last switch;
1833             } }
1834             State169: {
1835             # 635 "Shakespeare.y"
1836 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1837 0         0 last switch;
1838             } }
1839             State170: {
1840             # 636 "Shakespeare.y"
1841 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1842 0         0 last switch;
1843             } }
1844             State171: {
1845             # 637 "Shakespeare.y"
1846 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1847 0         0 last switch;
1848             } }
1849             State172: {
1850             # 638 "Shakespeare.y"
1851 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1852 0         0 last switch;
1853             } }
1854             State173: {
1855             # 639 "Shakespeare.y"
1856 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1857 0         0 last switch;
1858             } }
1859             State174: {
1860             # 640 "Shakespeare.y"
1861 1         3 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         4  
1862 1         2 last switch;
1863             } }
1864             State175: {
1865             # 641 "Shakespeare.y"
1866 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1867 0         0 last switch;
1868             } }
1869             State176: {
1870             # 642 "Shakespeare.y"
1871 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1872 0         0 last switch;
1873             } }
1874             State177: {
1875             # 643 "Shakespeare.y"
1876 1         2 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         2  
1877 1         2 last switch;
1878             } }
1879             State178: {
1880             # 644 "Shakespeare.y"
1881 2         4 { $yyval = $yyvs[$yyvsp-0];
  2         3  
  2         5  
1882 2         4 last switch;
1883             } }
1884             State179: {
1885             # 645 "Shakespeare.y"
1886 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1887 0         0 last switch;
1888             } }
1889             State180: {
1890             # 646 "Shakespeare.y"
1891 1         33 { $yyval = $yyvs[$yyvsp-0];
  1         3  
  1         3  
1892 1         3 last switch;
1893             } }
1894             State181: {
1895             # 647 "Shakespeare.y"
1896 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1897 0         0 last switch;
1898             } }
1899             State182: {
1900             # 648 "Shakespeare.y"
1901 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1902 0         0 last switch;
1903             } }
1904             State183: {
1905             # 649 "Shakespeare.y"
1906 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1907 0         0 last switch;
1908             } }
1909             State184: {
1910             # 650 "Shakespeare.y"
1911 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1912 0         0 last switch;
1913             } }
1914             State185: {
1915             # 651 "Shakespeare.y"
1916 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1917 0         0 last switch;
1918             } }
1919             State186: {
1920             # 652 "Shakespeare.y"
1921 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1922 0         0 last switch;
1923             } }
1924             State187: {
1925             # 653 "Shakespeare.y"
1926 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1927 0         0 last switch;
1928             } }
1929             State188: {
1930             # 654 "Shakespeare.y"
1931 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1932 0         0 last switch;
1933             } }
1934             State189: {
1935             # 655 "Shakespeare.y"
1936 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1937 0         0 last switch;
1938             } }
1939             State190: {
1940             # 656 "Shakespeare.y"
1941 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1942 0         0 last switch;
1943             } }
1944             State191: {
1945             # 657 "Shakespeare.y"
1946 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1947 0         0 last switch;
1948             } }
1949             State192: {
1950             # 658 "Shakespeare.y"
1951 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1952 0         0 last switch;
1953             } }
1954             State193: {
1955             # 659 "Shakespeare.y"
1956 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1957 0         0 last switch;
1958             } }
1959             State194: {
1960             # 660 "Shakespeare.y"
1961 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1962 0         0 last switch;
1963             } }
1964             State195: {
1965             # 661 "Shakespeare.y"
1966 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1967 0         0 last switch;
1968             } }
1969             State196: {
1970             # 662 "Shakespeare.y"
1971 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1972 0         0 last switch;
1973             } }
1974             State197: {
1975             # 663 "Shakespeare.y"
1976 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1977 0         0 last switch;
1978             } }
1979             State198: {
1980             # 664 "Shakespeare.y"
1981 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1982 0         0 last switch;
1983             } }
1984             State199: {
1985             # 666 "Shakespeare.y"
1986 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1987 0         0 last switch;
1988             } }
1989             State200: {
1990             # 667 "Shakespeare.y"
1991 0         0 { $yyval = $yyvs[$yyvsp-0];
  0         0  
  0         0  
1992 0         0 last switch;
1993             } }
1994             State201: {
1995             # 668 "Shakespeare.y"
1996 1         1 { $yyval = $yyvs[$yyvsp-0];
  1         2  
  1         2  
1997 1         2 last switch;
1998             } }
1999             State202: {
2000             # 670 "Shakespeare.y"
2001 343         405 { $yyval = $yyvs[$yyvsp-0];
  343         573  
  343         593  
2002 343         551 last switch;
2003             } }
2004             State203: {
2005             # 673 "Shakespeare.y"
2006 6         13 { $yyval = $yyvs[$yyvsp-1];
  6         11  
  6         15  
2007 6         13 last switch;
2008             } }
2009             State204: {
2010             # 676 "Shakespeare.y"
2011 117         162 { $yyval = $yyvs[$yyvsp-0];
  117         137  
  117         207  
2012 117         178 last switch;
2013             } }
2014             State205: {
2015             # 677 "Shakespeare.y"
2016 43         56 { $yyval = $yyvs[$yyvsp-0];
  43         96  
  43         62  
2017 43         66 last switch;
2018             } }
2019             State206: {
2020             # 680 "Shakespeare.y"
2021 3         7 { $yyval = "int_cube";
  3         7  
  3         9  
2022 3         7 last switch;
2023             } }
2024             State207: {
2025             # 681 "Shakespeare.y"
2026 0         0 { $yyval = "int_factorial";
  0         0  
  0         0  
2027 0         0 last switch;
2028             } }
2029             State208: {
2030             # 682 "Shakespeare.y"
2031 3         8 { $yyval = "int_square";
  3         4  
  3         8  
2032 3         8 last switch;
2033             } }
2034             State209: {
2035             # 683 "Shakespeare.y"
2036 1         2 { $yyval = "int_sqrt";
  1         68  
  1         3  
2037 1         2 last switch;
2038             } }
2039             State210: {
2040             # 684 "Shakespeare.y"
2041 1         3 { $yyval = "int_twice";
  1         3  
  1         2  
2042 1         3 last switch;
2043             } }
2044             State211: {
2045             # 687 "Shakespeare.y"
2046 104         150 { $yyval = $yyvs[$yyvsp-0];
  104         127  
  104         173  
2047 104         172 last switch;
2048             } }
2049             State212: {
2050             # 688 "Shakespeare.y"
2051 23         34 { $yyval = $yyvs[$yyvsp-0];
  23         33  
  23         54  
2052 23         45 last switch;
2053             } }
2054             State213: {
2055             # 689 "Shakespeare.y"
2056 19         25 { $yyval = $yyvs[$yyvsp-0];
  19         26  
  19         38  
2057 19         36 last switch;
2058             } }
2059             State214: {
2060             # 690 "Shakespeare.y"
2061 7         11 { $yyval = $yyvs[$yyvsp-0];
  7         11  
  7         15  
2062 7         15 last switch;
2063             } }
2064             State215: {
2065             # 691 "Shakespeare.y"
2066 6         11 { $yyval = $yyvs[$yyvsp-0];
  6         10  
  6         14  
2067 6         10 last switch;
2068             } }
2069             State216: {
2070             # 692 "Shakespeare.y"
2071 85         113 { $yyval = $yyvs[$yyvsp-0];
  85         105  
  85         174  
2072 85         156 last switch;
2073             } }
2074             State217: {
2075             # 696 "Shakespeare.y"
2076 26         42 {
2077 26         31 $yyval = varname($yyvs[$yyvsp-0]) . '->value';
  26         66  
2078              
2079 26         52 last switch;
2080             } }
2081             State218: {
2082             # 700 "Shakespeare.y"
2083 161         193 {
2084 161         191 $yyval = $yyvs[$yyvsp-0];
  161         234  
2085              
2086 161         245 last switch;
2087             } }
2088             State219: {
2089             # 704 "Shakespeare.y"
2090 57         87 {
2091 57         143 $yyval = $yyvs[$yyvsp-0] . '->value';
  57         134  
2092              
2093 57         100 last switch;
2094             } }
2095             State220: {
2096             # 708 "Shakespeare.y"
2097 121         167 {
2098 121         134 $yyval = '$play->' . $yyvs[$yyvsp-3] . "(" . $yyvs[$yyvsp-2] . "," . $yyvs[$yyvsp-0] . ")";
  121         426  
2099              
2100 121         202 last switch;
2101             } }
2102             State221: {
2103             # 712 "Shakespeare.y"
2104 8         17 {
2105 8         13 $yyval = '$play->' . $yyvs[$yyvsp-1] . "(" . $yyvs[$yyvsp-0] . ")";
  8         34  
2106              
2107 8         16 last switch;
2108             } }
2109             State222: {
2110             # 716 "Shakespeare.y"
2111 0         0 {
2112 0         0 $yyval = report_error("value");
  0         0  
2113              
2114 0         0 last switch;
2115             } }
2116             State223: {
2117             # 720 "Shakespeare.y"
2118 0         0 {
2119 0         0 report_warning("'and'");
  0         0  
2120 0         0 $yyval = '$play->' . $yyvs[$yyvsp-3] . "(" . $yyvs[$yyvsp-2] . "," . $yyvs[$yyvsp-0] . ")";
2121              
2122 0         0 last switch;
2123             } }
2124             State224: {
2125             # 725 "Shakespeare.y"
2126 0         0 {
2127 0         0 $yyval = report_error("value");
  0         0  
2128              
2129 0         0 last switch;
2130             } }
2131             State225: {
2132             # 729 "Shakespeare.y"
2133 0         0 {
2134 0         0 $yyval = report_error("value");
  0         0  
2135              
2136 0         0 last switch;
2137             } }
2138             # 2137 "y.tab.pl"
2139             } # switch
2140 5223         5929 $yyssp -= $yym;
2141 5223         6831 $yystate = $yyss[$yyssp];
2142 5223         5105 $yyvsp -= $yym;
2143 5223         19065 $yym = $yylhs[$yyn];
2144 5223 100 100     14487 if ($yystate == 0 && $yym == 0)
2145             {
2146              
2147 6 50       28 print "yydebug: after reduction, shifting from state 0 ",
2148             "to state constYYFINAL()\n" if $yydebug;
2149              
2150 6         13 $yystate = constYYFINAL();
2151 6         75 $yyss[++$yyssp] = constYYFINAL();
2152 6         15 $yyvs[++$yyvsp] = $yyval;
2153 6 50       35 if ($yychar < 0)
2154             {
2155 0 0       0 if (($yychar = &yylex) < 0) { $yychar = 0; }
  0         0  
2156              
2157 0 0       0 if ($yydebug)
2158             {
2159 0         0 $yys = '';
2160 0 0       0 if ($yychar <= $#yyname) { $yys = $yyname[$yychar]; }
  0         0  
2161 0 0       0 if (!$yys) { $yys = 'illegal-symbol'; }
  0         0  
2162 0         0 print "yydebug: state constYYFINAL(), reading $yychar ($yys)\n";
2163             }
2164              
2165             }
2166 6 50       181 return $yyvs[$yyvsp] if $yychar == 0;
2167 0         0 next yyloop;
2168             }
2169 5217 100 100     37908 if (($yyn = $yygindex[$yym]) && ($yyn += $yystate) >= 0 &&
      66        
      100        
2170             $yyn <= $#yycheck && $yycheck[$yyn] == $yystate)
2171             {
2172 2713         4248 $yystate = $yytable[$yyn];
2173             } else {
2174 2504         3376 $yystate = $yydgoto[$yym];
2175             }
2176              
2177 5217 50       9688 print "yydebug: after reduction, shifting from state ",
2178             "$yyss[$yyssp] to state $yystate\n" if $yydebug;
2179              
2180 5217         6258 $yyss[++$yyssp] = $yystate;
2181 5217         7599 $yyvs[++$yyvsp] = $yyval;
2182             } # yyloop
2183             } # yyparse
2184             # 735 "Shakespeare.y"
2185             @yystate{qw(
2186             State64 State61 State119 State201 State11 State115 State208 State79 State48
2187             State106 State98 State219 State206 State69 State105 State15 State157
2188             State196 State188 State221 State80 State90 State45 State167 State53 State2
2189             State151 State180 State92 State191 State29 State44 State23 State194 State73
2190             State7 State85 State39 State214 State134 State210 State153 State56 State55
2191             State224 State12 State197 State21 State216 State156 State139 State198
2192             State148 State155 State83 State203 State169 State130 State182 State160
2193             State109 State172 State66 State162 State82 State205 State135 State30
2194             State126 State102 State77 State42 State101 State89 State35 State63 State178
2195             State87 State131 State120 State74 State140 State122 State174 State186
2196             State138 State124 State94 State17 State68 State164 State46 State51 State96
2197             State133 State112 State19 State1 State144 State177 State200 State185
2198             State25 State137 State22 State4 State147 State128 State3 State213 State132
2199             State179 State78 State114 State14 State59 State195 State16 State49 State218
2200             State152 State107 State125 State189 State10 State65 State190 State38
2201             State57 State211 State33 State71 State99 State8 State36 State181 State54
2202             State158 State84 State215 State222 State166 State28 State225 State202
2203             State6 State170 State13 State93 State26 State72 State199 State173 State207
2204             State192 State41 State161 State116 State175 State20 State146 State31
2205             State159 State129 State168 State121 State34 State27 State150 State127
2206             State223 State5 State37 State67 State220 State176 State136 State47 State165
2207             State111 State62 State43 State91 State163 State100 State32 State52 State9
2208             State209 State103 State145 State97 State104 State76 State81 State154
2209             State58 State187 State50 State149 State18 State75 State212 State113
2210             State108 State171 State88 State118 State184 State40 State117 State141
2211             State60 State204 State183 State86 State217 State70 State95 State193 State24
2212             State123
2213             )} = ();
2214              
2215             my %act_or_scene = ( act => constACT_ROMAN(), scene => constSCENE_ROMAN() );
2216              
2217              
2218             my %R2A = qw(
2219             I 1 IV 4 V 5 IX 9
2220             X 10 XL 40 L 50 XC 90
2221             C 100 CD 400 D 500 CM 900
2222             M 1000
2223             );
2224              
2225             sub roman {
2226 407     407 0 678 my $r = uc(shift);
2227              
2228 407 100 66     4766 return unless length($r) and $r =~ /^M*(C[DM]|D?C{1,3}ID)?(X[LC]|L?X{1,3}|L)?(I[VX]|V?I{1,3}|V)?$/;
2229 64         107 my $n = 0;
2230 64         423 while($r =~ /\G(I[VX]?|X[LC]?|C[DM]|[VLMD])/g) {
2231 107         685 $n += $R2A{$1};
2232             }
2233             $n
2234 64         362 }
2235              
2236              
2237             my $type = 0;
2238             my %word;
2239             while() {
2240             chomp;
2241             if (s/^\$//) {
2242 6     6   421 no strict;
  6         23  
  6         48061  
2243             $type = eval "const$_();";
2244             }
2245             else {
2246             my @words = split(/\s+/, lc $_);
2247             my $parent = \(\%word );
2248             foreach my $w (@words) {
2249             $$parent ||= {};
2250             $$parent = { '' => $$parent } if 'HASH' ne ref $$parent;
2251             $parent = \(${$parent}->{$w});
2252             }
2253             $$parent = $type;
2254             }
2255             }
2256              
2257              
2258             sub get_tokens {
2259 712     712 0 1182 local $_ = "";
2260 712         4303 while (filter_read() > 0) {
2261 861         6212 ++$yylineno;
2262 861 100       11942 push @token, /[-\w']+|[:,!\[.\?\]]/g and return 1; # '
2263             }
2264 12         963 return 0;
2265             }
2266              
2267 0     0   0 sub __yylex { my $n = _yylex(); warn "$n $yylval\n"; $n }
  0         0  
  0         0  
2268              
2269             sub yylex {
2270 3980 100 100 3980 0 8971 get_tokens() or return -1
2271             unless @token;
2272 3974         6230 $yylval = shift @token;
2273 3974         8236 my $type = $word{lc $yylval};
2274              
2275 3974 100       12872 if (defined $type) {
2276 3572 100       18837 return $type unless ref $type;
2277 279         674 my @word = ($yylval);
2278 279         572 my @type = ($type);
2279 279         312 while (1) {
2280 421 100 50     6774 get_tokens() or last
2281             unless @token;
2282 421 100       1529 my $next_type = $type->{lc $token[0]} or last;
2283 386         600 push @word, shift @token;
2284 386 100       1969 $yylval = join(" ",@word), return $next_type unless ref $next_type;
2285 142         257 push @type, ($type = $next_type);
2286             }
2287 35         110 while ($type = pop @type) {
2288 35 100       117 if ($type = $type->{''}) {
2289 30         74 $yylval = join(" ",@word);
2290 30         116 return $type;
2291             }
2292 5 50       22 last if @word == 1;
2293             }
2294             }
2295              
2296 407 50 33     2654 if ($yylval =~ /^(act|scene)$/i and (@token or get_tokens()) and roman($token[0])) {
      66        
      33        
2297 63         755 my $n = $act_or_scene{lc $yylval};
2298 63         168 $yylval .= " " . shift @token;
2299 63         203 return $n;
2300             }
2301              
2302 344 100       701 if (roman($yylval)) {
2303 1         3 return constROMAN_NUMBER();
2304             }
2305              
2306 343         899 return constNONMATCH();
2307             }
2308              
2309             sub yyerror {
2310 0     0 0 0 $yyerrflag = 0;
2311             }
2312              
2313             sub report_error {
2314 0     0 0 0 my $expected_symbol = shift;
2315 0         0 warn sprintf("Error at line %d: %s expected\n", $yylineno, $expected_symbol);
2316 0         0 $num_errors++;
2317 0         0 "";
2318             }
2319              
2320             sub report_warning {
2321 0     0 0 0 my $expected_symbol = shift;
2322 0         0 warn sprintf("Warning at line %d: %s expected\n", $yylineno, $expected_symbol);
2323 0         0 $num_warnings++;
2324 0         0 "";
2325             }
2326              
2327              
2328             sub filter {
2329 12     12 0 37 $num_errors = $num_warnings = 0;
2330 12         34 @token = ();
2331              
2332 12 100       41 get_tokens() or return 0;
2333              
2334 6         36 yyparse();
2335              
2336 6 50       33 die("$num_errors errors and $num_warnings warnings found. No code output.\n")
2337             if $num_errors;
2338              
2339 6 50       23 warn("$num_warnings warnings found. Code may be defective.\n")
2340             if $num_warnings;
2341              
2342 6         13 $_ = $output;
2343              
2344 6         7525 return 1;
2345             }
2346              
2347             1;
2348             # 2320 "y.tab.pl"
2349             __DATA__