Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
e85ac860
Commit
e85ac860
authored
Mar 27, 1999
by
Per Bothner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r26016
parent
b635eb2f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
526 additions
and
578 deletions
+526
-578
gcc/java/parse.c
+526
-578
No files found.
gcc/java/parse.c
View file @
e85ac860
...
@@ -262,16 +262,15 @@ static tree add_stmt_to_compound PROTO ((tree, tree, tree));
...
@@ -262,16 +262,15 @@ static tree add_stmt_to_compound PROTO ((tree, tree, tree));
static
tree
add_stmt_to_block
PROTO
((
tree
,
tree
,
tree
));
static
tree
add_stmt_to_block
PROTO
((
tree
,
tree
,
tree
));
static
tree
patch_exit_expr
PROTO
((
tree
));
static
tree
patch_exit_expr
PROTO
((
tree
));
static
tree
build_labeled_block
PROTO
((
int
,
tree
));
static
tree
build_labeled_block
PROTO
((
int
,
tree
));
static
tree
generate_labeled_block
PROTO
(());
static
tree
finish_labeled_statement
PROTO
((
tree
,
tree
));
static
tree
complete_labeled_statement
PROTO
((
tree
,
tree
));
static
tree
build_bc_statement
PROTO
((
int
,
int
,
tree
));
static
tree
build_bc_statement
PROTO
((
int
,
int
,
tree
));
static
tree
patch_bc_statement
PROTO
((
tree
));
static
tree
patch_bc_statement
PROTO
((
tree
));
static
tree
patch_loop_statement
PROTO
((
tree
));
static
tree
patch_loop_statement
PROTO
((
tree
));
static
tree
build_new_loop
PROTO
((
tree
));
static
tree
build_new_loop
PROTO
((
tree
));
static
tree
build_loop_body
PROTO
((
int
,
tree
,
int
));
static
tree
build_loop_body
PROTO
((
int
,
tree
,
int
));
static
tree
complete
_loop_body
PROTO
((
int
,
tree
,
tree
,
int
));
static
tree
finish
_loop_body
PROTO
((
int
,
tree
,
tree
,
int
));
static
tree
build_debugable_stmt
PROTO
((
int
,
tree
));
static
tree
build_debugable_stmt
PROTO
((
int
,
tree
));
static
tree
complete
_for_loop
PROTO
((
int
,
tree
,
tree
,
tree
));
static
tree
finish
_for_loop
PROTO
((
int
,
tree
,
tree
,
tree
));
static
tree
patch_switch_statement
PROTO
((
tree
));
static
tree
patch_switch_statement
PROTO
((
tree
));
static
tree
string_constant_concatenation
PROTO
((
tree
,
tree
));
static
tree
string_constant_concatenation
PROTO
((
tree
,
tree
));
static
tree
build_string_concatenation
PROTO
((
tree
,
tree
));
static
tree
build_string_concatenation
PROTO
((
tree
,
tree
));
...
@@ -286,7 +285,7 @@ static void check_thrown_exceptions PROTO ((int, tree));
...
@@ -286,7 +285,7 @@ static void check_thrown_exceptions PROTO ((int, tree));
static
int
check_thrown_exceptions_do
PROTO
((
tree
));
static
int
check_thrown_exceptions_do
PROTO
((
tree
));
static
void
purge_unchecked_exceptions
PROTO
((
tree
));
static
void
purge_unchecked_exceptions
PROTO
((
tree
));
static
void
check_throws_clauses
PROTO
((
tree
,
tree
,
tree
));
static
void
check_throws_clauses
PROTO
((
tree
,
tree
,
tree
));
static
void
complete
_method_declaration
PROTO
((
tree
));
static
void
finish
_method_declaration
PROTO
((
tree
));
static
tree
build_super_invocation
PROTO
(());
static
tree
build_super_invocation
PROTO
(());
static
int
verify_constructor_circularity
PROTO
((
tree
,
tree
));
static
int
verify_constructor_circularity
PROTO
((
tree
,
tree
));
static
char
*
constructor_circularity_msg
PROTO
((
tree
,
tree
));
static
char
*
constructor_circularity_msg
PROTO
((
tree
,
tree
));
...
@@ -368,7 +367,7 @@ static tree java_lang_id = NULL_TREE;
...
@@ -368,7 +367,7 @@ static tree java_lang_id = NULL_TREE;
/* The "java.lang.Cloneable" qualified name. */
/* The "java.lang.Cloneable" qualified name. */
static
tree
java_lang_cloneable
=
NULL_TREE
;
static
tree
java_lang_cloneable
=
NULL_TREE
;
#line 29
6
"./parse.y"
#line 29
5
"./parse.y"
typedef
union
{
typedef
union
{
tree
node
;
tree
node
;
int
sub_token
;
int
sub_token
;
...
@@ -378,7 +377,7 @@ typedef union {
...
@@ -378,7 +377,7 @@ typedef union {
}
operator
;
}
operator
;
int
value
;
int
value
;
}
YYSTYPE
;
}
YYSTYPE
;
#line 30
6
"./parse.y"
#line 30
5
"./parse.y"
#include "lex.c"
#include "lex.c"
#ifndef YYDEBUG
#ifndef YYDEBUG
...
@@ -675,56 +674,56 @@ static const short yyrhs[] = { 123,
...
@@ -675,56 +674,56 @@ static const short yyrhs[] = { 123,
#if YYDEBUG != 0
#if YYDEBUG != 0
static
const
short
yyrline
[]
=
{
0
,
static
const
short
yyrline
[]
=
{
0
,
4
50
,
456
,
458
,
459
,
460
,
461
,
462
,
466
,
468
,
471
,
4
49
,
455
,
457
,
458
,
459
,
460
,
461
,
465
,
467
,
470
,
47
3
,
474
,
477
,
479
,
482
,
486
,
490
,
494
,
500
,
502
,
47
2
,
473
,
476
,
478
,
481
,
485
,
489
,
493
,
499
,
501
,
50
4
,
506
,
511
,
513
,
516
,
520
,
525
,
530
,
532
,
533
,
50
3
,
505
,
510
,
512
,
515
,
519
,
524
,
529
,
531
,
532
,
53
4
,
535
,
536
,
537
,
538
,
541
,
546
,
552
,
554
,
557
,
53
3
,
534
,
535
,
536
,
537
,
540
,
545
,
551
,
553
,
556
,
5
60
,
562
,
566
,
568
,
571
,
598
,
600
,
604
,
617
,
619
,
5
59
,
561
,
565
,
567
,
570
,
597
,
599
,
603
,
616
,
618
,
62
3
,
630
,
631
,
633
,
643
,
648
,
663
,
667
,
670
,
673
,
62
2
,
629
,
630
,
632
,
642
,
647
,
662
,
666
,
669
,
672
,
67
6
,
678
,
680
,
685
,
689
,
691
,
693
,
695
,
699
,
701
,
67
5
,
677
,
679
,
684
,
688
,
690
,
692
,
694
,
698
,
700
,
70
3
,
710
,
716
,
721
,
725
,
728
,
732
,
734
,
737
,
739
,
70
2
,
709
,
715
,
720
,
724
,
727
,
731
,
733
,
736
,
738
,
7
40
,
741
,
745
,
747
,
749
,
750
,
752
,
757
,
760
,
770
,
7
39
,
740
,
744
,
746
,
748
,
749
,
751
,
756
,
759
,
769
,
77
3
,
775
,
779
,
782
,
789
,
795
,
803
,
805
,
807
,
809
,
77
2
,
774
,
778
,
781
,
788
,
794
,
802
,
804
,
806
,
808
,
81
1
,
815
,
817
,
821
,
828
,
829
,
833
,
836
,
838
,
840
,
81
0
,
814
,
816
,
820
,
827
,
828
,
832
,
835
,
837
,
839
,
84
2
,
844
,
846
,
848
,
850
,
857
,
860
,
862
,
871
,
873
,
84
1
,
843
,
845
,
847
,
849
,
856
,
859
,
861
,
870
,
872
,
87
7
,
882
,
887
,
891
,
896
,
898
,
900
,
907
,
909
,
911
,
87
6
,
881
,
886
,
890
,
895
,
897
,
899
,
906
,
908
,
910
,
91
5
,
918
,
920
,
924
,
926
,
927
,
932
,
937
,
943
,
951
,
91
4
,
917
,
919
,
923
,
925
,
926
,
931
,
936
,
942
,
950
,
95
8
,
961
,
964
,
968
,
971
,
975
,
984
,
986
,
988
,
993
,
95
7
,
960
,
963
,
967
,
970
,
974
,
983
,
985
,
987
,
992
,
1000
,
1008
,
1010
,
1014
,
1021
,
1031
,
1035
,
1038
,
1041
,
1044
,
999
,
1007
,
1009
,
1013
,
1020
,
1030
,
1034
,
1037
,
1040
,
1043
,
104
7
,
1050
,
1053
,
1056
,
1058
,
1062
,
1068
,
1073
,
1075
,
1079
,
104
6
,
1049
,
1052
,
1055
,
1057
,
1061
,
1067
,
1072
,
1074
,
1078
,
108
2
,
1086
,
1088
,
1091
,
1093
,
1094
,
1096
,
1100
,
1104
,
1110
,
108
1
,
1085
,
1087
,
1090
,
1092
,
1093
,
1095
,
1099
,
1103
,
1109
,
111
5
,
1118
,
1120
,
1124
,
1130
,
1134
,
1139
,
1142
,
1146
,
1151
,
111
4
,
1117
,
1119
,
1123
,
1129
,
1133
,
1138
,
1141
,
1145
,
1150
,
115
9
,
1161
,
1164
,
1166
,
1168
,
1172
,
1176
,
1179
,
1183
,
1185
,
115
8
,
1160
,
1163
,
1165
,
1167
,
1171
,
1175
,
1178
,
1182
,
1184
,
118
6
,
1187
,
1188
,
1189
,
1199
,
1201
,
1202
,
1203
,
1204
,
1207
,
118
5
,
1186
,
1187
,
1188
,
1198
,
1200
,
1201
,
1202
,
1203
,
1206
,
120
9
,
1210
,
1211
,
1212
,
1213
,
1214
,
1215
,
1216
,
1217
,
1218
,
120
8
,
1209
,
1210
,
1211
,
1212
,
1213
,
1214
,
1215
,
1216
,
1217
,
122
1
,
1226
,
1237
,
1244
,
1248
,
1259
,
1269
,
1275
,
1281
,
1287
,
122
0
,
1225
,
1236
,
1239
,
1243
,
1250
,
1260
,
1266
,
1272
,
1278
,
128
9
,
1295
,
1297
,
1303
,
1305
,
1307
,
1309
,
1311
,
1315
,
1317
,
128
0
,
1286
,
1288
,
1294
,
1296
,
1298
,
1300
,
1302
,
1306
,
1308
,
13
18
,
1319
,
1320
,
1321
,
1322
,
1325
,
1331
,
1333
,
1335
,
1339
,
13
09
,
1310
,
1311
,
1312
,
1313
,
1316
,
1322
,
1324
,
1326
,
1330
,
13
44
,
1349
,
1355
,
1365
,
1371
,
1373
,
1375
,
1382
,
1385
,
1387
,
13
35
,
1340
,
1346
,
1356
,
1362
,
1364
,
1366
,
1373
,
1376
,
1378
,
138
9
,
1393
,
1395
,
1398
,
1402
,
1404
,
1407
,
1414
,
1420
,
1422
,
138
0
,
1384
,
1386
,
1389
,
1393
,
1395
,
1398
,
1405
,
1411
,
1413
,
14
24
,
1428
,
1436
,
1439
,
1441
,
1443
,
1447
,
1452
,
1461
,
1466
,
14
15
,
1419
,
1427
,
1430
,
1432
,
1434
,
1438
,
1443
,
1452
,
1457
,
146
9
,
1476
,
1478
,
1480
,
1484
,
1487
,
1496
,
1503
,
1505
,
1509
,
146
0
,
1467
,
1469
,
1471
,
1475
,
1478
,
1487
,
1494
,
1496
,
1500
,
15
22
,
1524
,
1530
,
1536
,
1540
,
1542
,
1546
,
1549
,
1551
,
1555
,
15
13
,
1515
,
1521
,
1527
,
1531
,
1533
,
1537
,
1540
,
1542
,
1546
,
15
58
,
1560
,
1562
,
1566
,
1569
,
1571
,
1573
,
1577
,
1580
,
1582
,
15
49
,
1551
,
1553
,
1557
,
1560
,
1562
,
1564
,
1568
,
1571
,
1573
,
15
84
,
1588
,
1594
,
1596
,
1600
,
1607
,
1609
,
1611
,
1613
,
1617
,
15
75
,
1579
,
1585
,
1587
,
1591
,
1598
,
1600
,
1602
,
1604
,
1608
,
16
25
,
1628
,
1630
,
1635
,
1639
,
1641
,
1648
,
1656
,
1673
,
1675
,
16
16
,
1619
,
1621
,
1626
,
1630
,
1632
,
1639
,
1647
,
1664
,
1666
,
16
77
,
1681
,
1684
,
1689
,
1691
,
1694
,
1696
,
1698
,
1700
,
1701
,
16
68
,
1672
,
1675
,
1680
,
1682
,
1685
,
1687
,
1689
,
1691
,
1692
,
1
702
,
1703
,
1707
,
1709
,
1711
,
1716
,
1718
,
1720
,
1722
,
1724
,
1
693
,
1694
,
1698
,
1700
,
1702
,
1707
,
1709
,
1711
,
1713
,
1715
,
17
28
,
1731
,
1736
,
1738
,
1743
,
1744
,
1745
,
1746
,
1747
,
1749
,
17
19
,
1722
,
1727
,
1729
,
1734
,
1735
,
1736
,
1737
,
1738
,
1740
,
17
51
,
1753
,
1755
,
1757
,
1761
,
1763
,
1766
,
1772
,
1777
,
1781
,
17
42
,
1744
,
1746
,
1748
,
1752
,
1754
,
1757
,
1763
,
1768
,
1772
,
17
84
,
1786
,
1788
,
1792
,
1794
,
1796
,
1798
,
1802
,
1805
,
1809
,
17
75
,
1777
,
1779
,
1783
,
1785
,
1787
,
1789
,
1793
,
1796
,
1800
,
18
15
,
1817
,
1825
,
1852
,
1854
,
1858
,
1863
,
1870
,
1874
,
1877
,
18
06
,
1808
,
1816
,
1843
,
1845
,
1849
,
1854
,
1861
,
1865
,
1868
,
187
9
,
1890
,
1901
,
1906
,
1915
,
1917
,
1921
,
1924
,
1926
,
1931
,
187
0
,
1881
,
1892
,
1897
,
1906
,
1908
,
1912
,
1915
,
1917
,
1922
,
19
36
,
1941
,
1948
,
1950
,
1951
,
1952
,
1955
,
1960
,
1965
,
1967
,
19
27
,
1932
,
1939
,
1941
,
1942
,
1943
,
1946
,
1951
,
1956
,
1958
,
19
68
,
1970
,
1972
,
1973
,
1975
,
1979
,
1982
,
1986
,
1989
,
1993
,
19
59
,
1961
,
1963
,
1964
,
1966
,
1970
,
1973
,
1977
,
1980
,
1984
,
19
95
,
1997
,
1999
,
2000
,
2002
,
2006
,
2015
,
2017
,
2019
,
2032
,
19
86
,
1988
,
1990
,
1991
,
1993
,
1997
,
2006
,
2008
,
2010
,
2023
,
20
34
,
2040
,
2042
,
2044
,
2048
,
2050
,
2055
,
2060
,
2065
,
2067
,
20
25
,
2031
,
2033
,
2035
,
2039
,
2041
,
2046
,
2051
,
2056
,
2058
,
206
9
,
2073
,
2075
,
2080
,
2085
,
2087
,
2091
,
2093
,
2098
,
2103
,
206
0
,
2064
,
2066
,
2071
,
2076
,
2078
,
2082
,
2084
,
2089
,
2094
,
2
108
,
2110
,
2112
,
2116
,
2118
,
2123
,
2128
,
2133
,
2138
,
2140
,
2
099
,
2101
,
2103
,
2107
,
2109
,
2114
,
2119
,
2124
,
2129
,
2131
,
21
42
,
2144
,
2146
,
2148
,
2152
,
2154
,
2159
,
2164
,
2166
,
2170
,
21
33
,
2135
,
2137
,
2139
,
2143
,
2145
,
2150
,
2155
,
2157
,
2161
,
21
72
,
2177
,
2181
,
2183
,
2188
,
2192
,
2194
,
2199
,
2203
,
2205
,
21
63
,
2168
,
2172
,
2174
,
2179
,
2183
,
2185
,
2190
,
2194
,
2196
,
22
10
,
2214
,
2216
,
2221
,
2225
,
2227
,
2232
,
2238
,
2240
,
2244
,
22
01
,
2205
,
2207
,
2212
,
2216
,
2218
,
2223
,
2229
,
2231
,
2235
,
22
46
,
2249
,
2252
,
2260
,
2262
,
2263
,
2266
,
2268
,
2271
,
2275
22
37
,
2240
,
2243
,
2251
,
2253
,
2254
,
2257
,
2259
,
2262
,
2266
};
};
#endif
#endif
...
@@ -2720,66 +2719,66 @@ yyreduce:
...
@@ -2720,66 +2719,66 @@ yyreduce:
switch
(
yyn
)
{
switch
(
yyn
)
{
case
1
:
case
1
:
#line 45
2
"./parse.y"
#line 45
1
"./parse.y"
{;
{;
break
;}
break
;}
case
18
:
case
18
:
#line 49
6
"./parse.y"
#line 49
5
"./parse.y"
{
{
yyval
.
node
=
build_java_array_type
(
yyvsp
[
-
2
].
node
,
-
1
);
yyval
.
node
=
build_java_array_type
(
yyvsp
[
-
2
].
node
,
-
1
);
CLASS_LOADED_P
(
yyval
.
node
)
=
1
;
CLASS_LOADED_P
(
yyval
.
node
)
=
1
;
;
;
break
;}
break
;}
case
19
:
case
19
:
#line 50
1
"./parse.y"
#line 50
0
"./parse.y"
{
yyval
.
node
=
build_unresolved_array_type
(
yyvsp
[
-
2
].
node
);
;
{
yyval
.
node
=
build_unresolved_array_type
(
yyvsp
[
-
2
].
node
);
;
break
;}
break
;}
case
20
:
case
20
:
#line 50
3
"./parse.y"
#line 50
2
"./parse.y"
{
yyval
.
node
=
build_unresolved_array_type
(
yyvsp
[
-
2
].
node
);
;
{
yyval
.
node
=
build_unresolved_array_type
(
yyvsp
[
-
2
].
node
);
;
break
;}
break
;}
case
21
:
case
21
:
#line 50
5
"./parse.y"
#line 50
4
"./parse.y"
{
RULE
(
"']' expected"
);
RECOVER
;;
{
RULE
(
"']' expected"
);
RECOVER
;;
break
;}
break
;}
case
22
:
case
22
:
#line 50
7
"./parse.y"
#line 50
6
"./parse.y"
{
RULE
(
"']' expected"
);
RECOVER
;;
{
RULE
(
"']' expected"
);
RECOVER
;;
break
;}
break
;}
case
26
:
case
26
:
#line 52
2
"./parse.y"
#line 52
1
"./parse.y"
{
yyval
.
node
=
make_qualified_name
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
,
yyvsp
[
-
1
].
operator
.
location
);
;
{
yyval
.
node
=
make_qualified_name
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
,
yyvsp
[
-
1
].
operator
.
location
);
;
break
;}
break
;}
case
28
:
case
28
:
#line 53
1
"./parse.y"
#line 53
0
"./parse.y"
{
yyval
.
node
=
NULL
;;
{
yyval
.
node
=
NULL
;;
break
;}
break
;}
case
36
:
case
36
:
#line 54
3
"./parse.y"
#line 54
2
"./parse.y"
{
{
yyval
.
node
=
NULL
;
yyval
.
node
=
NULL
;
;
;
break
;}
break
;}
case
37
:
case
37
:
#line 54
7
"./parse.y"
#line 54
6
"./parse.y"
{
{
yyval
.
node
=
NULL
;
yyval
.
node
=
NULL
;
;
;
break
;}
break
;}
case
40
:
case
40
:
#line 55
9
"./parse.y"
#line 55
8
"./parse.y"
{
ctxp
->
package
=
EXPR_WFL_NODE
(
yyvsp
[
-
1
].
node
);
;
{
ctxp
->
package
=
EXPR_WFL_NODE
(
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
41
:
case
41
:
#line 56
1
"./parse.y"
#line 56
0
"./parse.y"
{
yyerror
(
"Missing name"
);
RECOVER
;;
{
yyerror
(
"Missing name"
);
RECOVER
;;
break
;}
break
;}
case
42
:
case
42
:
#line 56
3
"./parse.y"
#line 56
2
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
45
:
case
45
:
#line 57
3
"./parse.y"
#line 57
2
"./parse.y"
{
{
tree
name
=
EXPR_WFL_NODE
(
yyvsp
[
-
1
].
node
),
node
,
last_name
;
tree
name
=
EXPR_WFL_NODE
(
yyvsp
[
-
1
].
node
),
node
,
last_name
;
int
i
=
IDENTIFIER_LENGTH
(
name
)
-
1
;
int
i
=
IDENTIFIER_LENGTH
(
name
)
-
1
;
...
@@ -2807,15 +2806,15 @@ case 45:
...
@@ -2807,15 +2806,15 @@ case 45:
;
;
break
;}
break
;}
case
46
:
case
46
:
#line 59
9
"./parse.y"
#line 59
8
"./parse.y"
{
yyerror
(
"Missing name"
);
RECOVER
;;
{
yyerror
(
"Missing name"
);
RECOVER
;;
break
;}
break
;}
case
47
:
case
47
:
#line 60
1
"./parse.y"
#line 60
0
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
48
:
case
48
:
#line 60
6
"./parse.y"
#line 60
5
"./parse.y"
{
{
tree
name
=
EXPR_WFL_NODE
(
yyvsp
[
-
3
].
node
);
tree
name
=
EXPR_WFL_NODE
(
yyvsp
[
-
3
].
node
);
/* Don't import java.lang.* twice. */
/* Don't import java.lang.* twice. */
...
@@ -2829,15 +2828,15 @@ case 48:
...
@@ -2829,15 +2828,15 @@ case 48:
;
;
break
;}
break
;}
case
49
:
case
49
:
#line 61
8
"./parse.y"
#line 61
7
"./parse.y"
{
yyerror
(
"'*' expected"
);
RECOVER
;;
{
yyerror
(
"'*' expected"
);
RECOVER
;;
break
;}
break
;}
case
50
:
case
50
:
#line 6
20
"./parse.y"
#line 6
19
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
51
:
case
51
:
#line 62
5
"./parse.y"
#line 62
4
"./parse.y"
{
{
maybe_generate_finit
();
maybe_generate_finit
();
maybe_generate_clinit
();
maybe_generate_clinit
();
...
@@ -2845,24 +2844,24 @@ case 51:
...
@@ -2845,24 +2844,24 @@ case 51:
;
;
break
;}
break
;}
case
53
:
case
53
:
#line 63
2
"./parse.y"
#line 63
1
"./parse.y"
{
yyval
.
node
=
NULL
;
;
{
yyval
.
node
=
NULL
;
;
break
;}
break
;}
case
54
:
case
54
:
#line 63
4
"./parse.y"
#line 63
3
"./parse.y"
{
{
YYERROR_NOW
;
YYERROR_NOW
;
yyerror
(
"Class or interface declaration expected"
);
yyerror
(
"Class or interface declaration expected"
);
;
;
break
;}
break
;}
case
55
:
case
55
:
#line 64
5
"./parse.y"
#line 64
4
"./parse.y"
{
{
yyval
.
value
=
(
1
<<
yyvsp
[
0
].
value
);
yyval
.
value
=
(
1
<<
yyvsp
[
0
].
value
);
;
;
break
;}
break
;}
case
56
:
case
56
:
#line 64
9
"./parse.y"
#line 64
8
"./parse.y"
{
{
int
acc
=
(
1
<<
yyvsp
[
0
].
value
);
int
acc
=
(
1
<<
yyvsp
[
0
].
value
);
if
(
yyval
.
value
&
acc
)
if
(
yyval
.
value
&
acc
)
...
@@ -2876,123 +2875,123 @@ case 56:
...
@@ -2876,123 +2875,123 @@ case 56:
;
;
break
;}
break
;}
case
57
:
case
57
:
#line 66
5
"./parse.y"
#line 66
4
"./parse.y"
{
create_class
(
yyvsp
[
-
4
].
value
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
create_class
(
yyvsp
[
-
4
].
value
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
58
:
case
58
:
#line 66
7
"./parse.y"
#line 66
6
"./parse.y"
{
{
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
59
:
case
59
:
#line 67
1
"./parse.y"
#line 67
0
"./parse.y"
{
create_class
(
0
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
create_class
(
0
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
60
:
case
60
:
#line 67
3
"./parse.y"
#line 67
2
"./parse.y"
{
{
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
61
:
case
61
:
#line 67
7
"./parse.y"
#line 67
6
"./parse.y"
{
yyerror
(
"Missing class name"
);
RECOVER
;;
{
yyerror
(
"Missing class name"
);
RECOVER
;;
break
;}
break
;}
case
62
:
case
62
:
#line 67
9
"./parse.y"
#line 67
8
"./parse.y"
{
yyerror
(
"Missing class name"
);
RECOVER
;;
{
yyerror
(
"Missing class name"
);
RECOVER
;;
break
;}
break
;}
case
63
:
case
63
:
#line 68
1
"./parse.y"
#line 68
0
"./parse.y"
{
{
if
(
!
ctxp
->
class_err
)
yyerror
(
"'{' expected"
);
if
(
!
ctxp
->
class_err
)
yyerror
(
"'{' expected"
);
DRECOVER
(
class1
);
DRECOVER
(
class1
);
;
;
break
;}
break
;}
case
64
:
case
64
:
#line 68
6
"./parse.y"
#line 68
5
"./parse.y"
{
if
(
!
ctxp
->
class_err
)
yyerror
(
"'{' expected"
);
RECOVER
;;
{
if
(
!
ctxp
->
class_err
)
yyerror
(
"'{' expected"
);
RECOVER
;;
break
;}
break
;}
case
65
:
case
65
:
#line 6
90
"./parse.y"
#line 6
89
"./parse.y"
{
yyval
.
node
=
NULL
;
;
{
yyval
.
node
=
NULL
;
;
break
;}
break
;}
case
66
:
case
66
:
#line 69
2
"./parse.y"
#line 69
1
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
67
:
case
67
:
#line 69
4
"./parse.y"
#line 69
3
"./parse.y"
{
yyerror
(
"'{' expected"
);
ctxp
->
class_err
=
1
;;
{
yyerror
(
"'{' expected"
);
ctxp
->
class_err
=
1
;;
break
;}
break
;}
case
68
:
case
68
:
#line 69
6
"./parse.y"
#line 69
5
"./parse.y"
{
yyerror
(
"Missing super class name"
);
ctxp
->
class_err
=
1
;;
{
yyerror
(
"Missing super class name"
);
ctxp
->
class_err
=
1
;;
break
;}
break
;}
case
69
:
case
69
:
#line
700
"./parse.y"
#line
699
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
70
:
case
70
:
#line 70
2
"./parse.y"
#line 70
1
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
71
:
case
71
:
#line 70
4
"./parse.y"
#line 70
3
"./parse.y"
{
{
ctxp
->
class_err
=
1
;
ctxp
->
class_err
=
1
;
yyerror
(
"Missing interface name"
);
yyerror
(
"Missing interface name"
);
;
;
break
;}
break
;}
case
72
:
case
72
:
#line 71
2
"./parse.y"
#line 71
1
"./parse.y"
{
{
ctxp
->
interface_number
=
1
;
ctxp
->
interface_number
=
1
;
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
);
;
;
break
;}
break
;}
case
73
:
case
73
:
#line 71
7
"./parse.y"
#line 71
6
"./parse.y"
{
{
ctxp
->
interface_number
++
;
ctxp
->
interface_number
++
;
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
));
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
));
;
;
break
;}
break
;}
case
74
:
case
74
:
#line 72
2
"./parse.y"
#line 72
1
"./parse.y"
{
yyerror
(
"Missing interface name"
);
RECOVER
;;
{
yyerror
(
"Missing interface name"
);
RECOVER
;;
break
;}
break
;}
case
75
:
case
75
:
#line 72
7
"./parse.y"
#line 72
6
"./parse.y"
{
yyval
.
node
=
ctxp
->
current_parsed_class
;
;
{
yyval
.
node
=
ctxp
->
current_parsed_class
;
;
break
;}
break
;}
case
76
:
case
76
:
#line 72
9
"./parse.y"
#line 72
8
"./parse.y"
{
yyval
.
node
=
ctxp
->
current_parsed_class
;
;
{
yyval
.
node
=
ctxp
->
current_parsed_class
;
;
break
;}
break
;}
case
82
:
case
82
:
#line 74
2
"./parse.y"
#line 74
1
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"instance initializer"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"instance initializer"
);
;
break
;}
break
;}
case
84
:
case
84
:
#line 74
8
"./parse.y"
#line 74
7
"./parse.y"
{
yyval
.
node
=
yyvsp
[
-
1
].
node
;
;
{
yyval
.
node
=
yyvsp
[
-
1
].
node
;
;
break
;}
break
;}
case
86
:
case
86
:
#line 75
1
"./parse.y"
#line 75
0
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner classe declaration"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner classe declaration"
);
;
break
;}
break
;}
case
87
:
case
87
:
#line 75
3
"./parse.y"
#line 75
2
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner interface declaration"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner interface declaration"
);
;
break
;}
break
;}
case
88
:
case
88
:
#line 75
9
"./parse.y"
#line 75
8
"./parse.y"
{
register_fields
(
0
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
);
;
{
register_fields
(
0
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
89
:
case
89
:
#line 76
1
"./parse.y"
#line 76
0
"./parse.y"
{
{
check_modifiers
check_modifiers
(
"Illegal modifier `%s' for field declaration"
,
(
"Illegal modifier `%s' for field declaration"
,
...
@@ -3002,19 +3001,19 @@ case 89:
...
@@ -3002,19 +3001,19 @@ case 89:
;
;
break
;}
break
;}
case
91
:
case
91
:
#line 77
4
"./parse.y"
#line 77
3
"./parse.y"
{
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
92
:
case
92
:
#line 77
6
"./parse.y"
#line 77
5
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
93
:
case
93
:
#line 78
1
"./parse.y"
#line 78
0
"./parse.y"
{
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
);
;
{
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
94
:
case
94
:
#line 78
3
"./parse.y"
#line 78
2
"./parse.y"
{
{
if
(
java_error_count
)
if
(
java_error_count
)
yyvsp
[
0
].
node
=
NULL_TREE
;
yyvsp
[
0
].
node
=
NULL_TREE
;
...
@@ -3023,7 +3022,7 @@ case 94:
...
@@ -3023,7 +3022,7 @@ case 94:
;
;
break
;}
break
;}
case
95
:
case
95
:
#line 7
90
"./parse.y"
#line 7
89
"./parse.y"
{
{
yyerror
(
"Missing variable initializer"
);
yyerror
(
"Missing variable initializer"
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
...
@@ -3031,7 +3030,7 @@ case 95:
...
@@ -3031,7 +3030,7 @@ case 95:
;
;
break
;}
break
;}
case
96
:
case
96
:
#line 79
6
"./parse.y"
#line 79
5
"./parse.y"
{
{
yyerror
(
"';' expected"
);
yyerror
(
"';' expected"
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
-
3
].
node
,
NULL_TREE
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
-
3
].
node
,
NULL_TREE
);
...
@@ -3039,85 +3038,85 @@ case 96:
...
@@ -3039,85 +3038,85 @@ case 96:
;
;
break
;}
break
;}
case
98
:
case
98
:
#line 80
6
"./parse.y"
#line 80
5
"./parse.y"
{
yyval
.
node
=
build_unresolved_array_type
(
yyvsp
[
-
2
].
node
);
;
{
yyval
.
node
=
build_unresolved_array_type
(
yyvsp
[
-
2
].
node
);
;
break
;}
break
;}
case
99
:
case
99
:
#line 80
8
"./parse.y"
#line 80
7
"./parse.y"
{
yyerror
(
"Invalid declaration"
);
DRECOVER
(
vdi
);;
{
yyerror
(
"Invalid declaration"
);
DRECOVER
(
vdi
);;
break
;}
break
;}
case
100
:
case
100
:
#line 8
10
"./parse.y"
#line 8
09
"./parse.y"
{
yyerror
(
"']' expected"
);
DRECOVER
(
vdi
);;
{
yyerror
(
"']' expected"
);
DRECOVER
(
vdi
);;
break
;}
break
;}
case
101
:
case
101
:
#line 81
2
"./parse.y"
#line 81
1
"./parse.y"
{
yyerror
(
"Unbalanced ']'"
);
DRECOVER
(
vdi
);;
{
yyerror
(
"Unbalanced ']'"
);
DRECOVER
(
vdi
);;
break
;}
break
;}
case
104
:
case
104
:
#line 82
3
"./parse.y"
#line 82
2
"./parse.y"
{
{
current_function_decl
=
yyvsp
[
0
].
node
;
current_function_decl
=
yyvsp
[
0
].
node
;
source_start_java_method
(
current_function_decl
);
source_start_java_method
(
current_function_decl
);
;
;
break
;}
break
;}
case
105
:
case
105
:
#line 82
8
"./parse.y"
#line 82
7
"./parse.y"
{
complete
_method_declaration
(
yyvsp
[
0
].
node
);
;
{
finish
_method_declaration
(
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
106
:
case
106
:
#line 8
30
"./parse.y"
#line 8
29
"./parse.y"
{
YYNOT_TWICE
yyerror
(
"'{' expected"
);
RECOVER
;;
{
YYNOT_TWICE
yyerror
(
"'{' expected"
);
RECOVER
;;
break
;}
break
;}
case
107
:
case
107
:
#line 83
5
"./parse.y"
#line 83
4
"./parse.y"
{
yyval
.
node
=
method_header
(
0
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
method_header
(
0
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
108
:
case
108
:
#line 83
7
"./parse.y"
#line 83
6
"./parse.y"
{
yyval
.
node
=
method_header
(
0
,
void_type_node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
method_header
(
0
,
void_type_node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
109
:
case
109
:
#line 83
9
"./parse.y"
#line 83
8
"./parse.y"
{
yyval
.
node
=
method_header
(
yyvsp
[
-
3
].
value
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
method_header
(
yyvsp
[
-
3
].
value
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
110
:
case
110
:
#line 84
1
"./parse.y"
#line 84
0
"./parse.y"
{
yyval
.
node
=
method_header
(
yyvsp
[
-
3
].
value
,
void_type_node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
method_header
(
yyvsp
[
-
3
].
value
,
void_type_node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
111
:
case
111
:
#line 84
3
"./parse.y"
#line 84
2
"./parse.y"
{
RECOVER
;;
{
RECOVER
;;
break
;}
break
;}
case
112
:
case
112
:
#line 84
5
"./parse.y"
#line 84
4
"./parse.y"
{
RECOVER
;;
{
RECOVER
;;
break
;}
break
;}
case
113
:
case
113
:
#line 84
7
"./parse.y"
#line 84
6
"./parse.y"
{
yyerror
(
"Identifier expected"
);
RECOVER
;;
{
yyerror
(
"Identifier expected"
);
RECOVER
;;
break
;}
break
;}
case
114
:
case
114
:
#line 84
9
"./parse.y"
#line 84
8
"./parse.y"
{
yyerror
(
"Identifier expected"
);
RECOVER
;;
{
yyerror
(
"Identifier expected"
);
RECOVER
;;
break
;}
break
;}
case
115
:
case
115
:
#line 85
1
"./parse.y"
#line 85
0
"./parse.y"
{
{
yyerror
(
"Invalid method declaration, return type required"
);
yyerror
(
"Invalid method declaration, return type required"
);
RECOVER
;
RECOVER
;
;
;
break
;}
break
;}
case
116
:
case
116
:
#line 85
9
"./parse.y"
#line 85
8
"./parse.y"
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
117
:
case
117
:
#line 86
1
"./parse.y"
#line 86
0
"./parse.y"
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
118
:
case
118
:
#line 86
3
"./parse.y"
#line 86
2
"./parse.y"
{
{
EXPR_WFL_LINECOL
(
wfl_operator
)
=
yyvsp
[
-
1
].
operator
.
location
;
EXPR_WFL_LINECOL
(
wfl_operator
)
=
yyvsp
[
-
1
].
operator
.
location
;
TREE_PURPOSE
(
yyvsp
[
-
2
].
node
)
=
TREE_PURPOSE
(
yyvsp
[
-
2
].
node
)
=
...
@@ -3128,145 +3127,145 @@ case 118:
...
@@ -3128,145 +3127,145 @@ case 118:
;
;
break
;}
break
;}
case
119
:
case
119
:
#line 87
2
"./parse.y"
#line 87
1
"./parse.y"
{
yyerror
(
"')' expected"
);
DRECOVER
(
method_declarator
);;
{
yyerror
(
"')' expected"
);
DRECOVER
(
method_declarator
);;
break
;}
break
;}
case
120
:
case
120
:
#line 87
4
"./parse.y"
#line 87
3
"./parse.y"
{
yyerror
(
"']' expected"
);
RECOVER
;;
{
yyerror
(
"']' expected"
);
RECOVER
;;
break
;}
break
;}
case
121
:
case
121
:
#line 87
9
"./parse.y"
#line 87
8
"./parse.y"
{
{
ctxp
->
formal_parameter_number
=
1
;
ctxp
->
formal_parameter_number
=
1
;
;
;
break
;}
break
;}
case
122
:
case
122
:
#line 88
3
"./parse.y"
#line 88
2
"./parse.y"
{
{
ctxp
->
formal_parameter_number
+=
1
;
ctxp
->
formal_parameter_number
+=
1
;
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
123
:
case
123
:
#line 88
8
"./parse.y"
#line 88
7
"./parse.y"
{
yyerror
(
"Missing formal parameter term"
);
RECOVER
;;
{
yyerror
(
"Missing formal parameter term"
);
RECOVER
;;
break
;}
break
;}
case
124
:
case
124
:
#line 89
3
"./parse.y"
#line 89
2
"./parse.y"
{
{
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
yyvsp
[
-
1
].
node
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
yyvsp
[
-
1
].
node
);
;
;
break
;}
break
;}
case
125
:
case
125
:
#line 89
7
"./parse.y"
#line 89
6
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"final parameters"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"final parameters"
);
;
break
;}
break
;}
case
126
:
case
126
:
#line 89
9
"./parse.y"
#line 89
8
"./parse.y"
{
yyerror
(
"Missing identifier"
);
RECOVER
;;
{
yyerror
(
"Missing identifier"
);
RECOVER
;;
break
;}
break
;}
case
127
:
case
127
:
#line 90
1
"./parse.y"
#line 90
0
"./parse.y"
{
{
SOURCE_FRONTEND_DEBUG
((
"Modifiers: %d"
,
yyvsp
[
-
2
].
value
));
SOURCE_FRONTEND_DEBUG
((
"Modifiers: %d"
,
yyvsp
[
-
2
].
value
));
yyerror
(
"Missing identifier"
);
RECOVER
;
yyerror
(
"Missing identifier"
);
RECOVER
;
;
;
break
;}
break
;}
case
128
:
case
128
:
#line 90
8
"./parse.y"
#line 90
7
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
129
:
case
129
:
#line 9
10
"./parse.y"
#line 9
09
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
130
:
case
130
:
#line 91
2
"./parse.y"
#line 91
1
"./parse.y"
{
yyerror
(
"Missing class type term"
);
RECOVER
;;
{
yyerror
(
"Missing class type term"
);
RECOVER
;;
break
;}
break
;}
case
131
:
case
131
:
#line 91
7
"./parse.y"
#line 91
6
"./parse.y"
{
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
132
:
case
132
:
#line 91
9
"./parse.y"
#line 91
8
"./parse.y"
{
yyval
.
node
=
tree_cons
(
yyvsp
[
0
].
node
,
yyvsp
[
0
].
node
,
yyvsp
[
-
2
].
node
);
;
{
yyval
.
node
=
tree_cons
(
yyvsp
[
0
].
node
,
yyvsp
[
0
].
node
,
yyvsp
[
-
2
].
node
);
;
break
;}
break
;}
case
133
:
case
133
:
#line 92
1
"./parse.y"
#line 92
0
"./parse.y"
{
yyerror
(
"Missing class type term"
);
RECOVER
;;
{
yyerror
(
"Missing class type term"
);
RECOVER
;;
break
;}
break
;}
case
136
:
case
136
:
#line 92
8
"./parse.y"
#line 92
7
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
137
:
case
137
:
#line 93
4
"./parse.y"
#line 93
3
"./parse.y"
{
{
RULE
(
"STATIC_INITIALIZER"
);
RULE
(
"STATIC_INITIALIZER"
);
;
;
break
;}
break
;}
case
138
:
case
138
:
#line 93
8
"./parse.y"
#line 93
7
"./parse.y"
{
{
RULE
(
"STATIC_INITIALIZER"
);
RULE
(
"STATIC_INITIALIZER"
);
;
;
break
;}
break
;}
case
139
:
case
139
:
#line 94
5
"./parse.y"
#line 94
4
"./parse.y"
{
{
SOURCE_FRONTEND_DEBUG
((
"Modifiers: %d"
,
yyvsp
[
0
].
value
));
SOURCE_FRONTEND_DEBUG
((
"Modifiers: %d"
,
yyvsp
[
0
].
value
));
;
;
break
;}
break
;}
case
140
:
case
140
:
#line 95
3
"./parse.y"
#line 95
2
"./parse.y"
{
{
current_function_decl
=
yyvsp
[
0
].
node
;
current_function_decl
=
yyvsp
[
0
].
node
;
source_start_java_method
(
current_function_decl
);
source_start_java_method
(
current_function_decl
);
;
;
break
;}
break
;}
case
141
:
case
141
:
#line 95
8
"./parse.y"
#line 95
7
"./parse.y"
{
complete
_method_declaration
(
yyvsp
[
0
].
node
);
;
{
finish
_method_declaration
(
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
142
:
case
142
:
#line 96
3
"./parse.y"
#line 96
2
"./parse.y"
{
yyval
.
node
=
method_header
(
0
,
NULL_TREE
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
method_header
(
0
,
NULL_TREE
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
143
:
case
143
:
#line 96
5
"./parse.y"
#line 96
4
"./parse.y"
{
yyval
.
node
=
method_header
(
yyvsp
[
-
2
].
value
,
NULL_TREE
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
method_header
(
yyvsp
[
-
2
].
value
,
NULL_TREE
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
144
:
case
144
:
#line 9
70
"./parse.y"
#line 9
69
"./parse.y"
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
145
:
case
145
:
#line 97
2
"./parse.y"
#line 97
1
"./parse.y"
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
method_declarator
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
146
:
case
146
:
#line 9
80
"./parse.y"
#line 9
79
"./parse.y"
{
{
BLOCK_EXPR_BODY
(
yyvsp
[
0
].
node
)
=
empty_stmt_node
;
BLOCK_EXPR_BODY
(
yyvsp
[
0
].
node
)
=
empty_stmt_node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
147
:
case
147
:
#line 98
5
"./parse.y"
#line 98
4
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
148
:
case
148
:
#line 98
7
"./parse.y"
#line 98
6
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
149
:
case
149
:
#line 98
9
"./parse.y"
#line 98
8
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
150
:
case
150
:
#line 99
5
"./parse.y"
#line 99
4
"./parse.y"
{
{
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
3
].
node
,
NULL_TREE
);
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
3
].
node
,
NULL_TREE
);
yyval
.
node
=
build_debugable_stmt
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
3
].
node
),
yyval
.
node
);
yyval
.
node
=
build_debugable_stmt
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
3
].
node
),
yyval
.
node
);
...
@@ -3274,7 +3273,7 @@ case 150:
...
@@ -3274,7 +3273,7 @@ case 150:
;
;
break
;}
break
;}
case
151
:
case
151
:
#line 100
1
"./parse.y"
#line 100
0
"./parse.y"
{
{
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
);
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
);
yyval
.
node
=
build_debugable_stmt
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
4
].
node
),
yyval
.
node
);
yyval
.
node
=
build_debugable_stmt
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
4
].
node
),
yyval
.
node
);
...
@@ -3282,15 +3281,15 @@ case 151:
...
@@ -3282,15 +3281,15 @@ case 151:
;
;
break
;}
break
;}
case
152
:
case
152
:
#line 100
9
"./parse.y"
#line 100
8
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"explicit constructor invocation"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"explicit constructor invocation"
);
;
break
;}
break
;}
case
153
:
case
153
:
#line 101
1
"./parse.y"
#line 101
0
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"explicit constructor invocation"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"explicit constructor invocation"
);
;
break
;}
break
;}
case
154
:
case
154
:
#line 101
6
"./parse.y"
#line 101
5
"./parse.y"
{
{
tree
wfl
=
build_wfl_node
(
this_identifier_node
);
tree
wfl
=
build_wfl_node
(
this_identifier_node
);
EXPR_WFL_LINECOL
(
wfl
)
=
yyvsp
[
0
].
operator
.
location
;
EXPR_WFL_LINECOL
(
wfl
)
=
yyvsp
[
0
].
operator
.
location
;
...
@@ -3298,7 +3297,7 @@ case 154:
...
@@ -3298,7 +3297,7 @@ case 154:
;
;
break
;}
break
;}
case
155
:
case
155
:
#line 102
2
"./parse.y"
#line 102
1
"./parse.y"
{
{
tree
wfl
=
build_wfl_node
(
super_identifier_node
);
tree
wfl
=
build_wfl_node
(
super_identifier_node
);
EXPR_WFL_LINECOL
(
wfl
)
=
yyvsp
[
0
].
operator
.
location
;
EXPR_WFL_LINECOL
(
wfl
)
=
yyvsp
[
0
].
operator
.
location
;
...
@@ -3306,168 +3305,168 @@ case 155:
...
@@ -3306,168 +3305,168 @@ case 155:
;
;
break
;}
break
;}
case
156
:
case
156
:
#line 103
3
"./parse.y"
#line 103
2
"./parse.y"
{
create_interface
(
0
,
yyvsp
[
0
].
node
,
NULL_TREE
);
;
{
create_interface
(
0
,
yyvsp
[
0
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
157
:
case
157
:
#line 103
5
"./parse.y"
#line 103
4
"./parse.y"
{
{
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
158
:
case
158
:
#line 103
9
"./parse.y"
#line 103
8
"./parse.y"
{
create_interface
(
yyvsp
[
-
2
].
value
,
yyvsp
[
0
].
node
,
NULL_TREE
);
;
{
create_interface
(
yyvsp
[
-
2
].
value
,
yyvsp
[
0
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
159
:
case
159
:
#line 104
1
"./parse.y"
#line 104
0
"./parse.y"
{
{
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
160
:
case
160
:
#line 104
5
"./parse.y"
#line 104
4
"./parse.y"
{
create_interface
(
0
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
create_interface
(
0
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
161
:
case
161
:
#line 104
7
"./parse.y"
#line 104
6
"./parse.y"
{
{
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
162
:
case
162
:
#line 105
1
"./parse.y"
#line 105
0
"./parse.y"
{
create_interface
(
yyvsp
[
-
3
].
value
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
create_interface
(
yyvsp
[
-
3
].
value
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
163
:
case
163
:
#line 105
3
"./parse.y"
#line 105
2
"./parse.y"
{
{
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
164
:
case
164
:
#line 105
7
"./parse.y"
#line 105
6
"./parse.y"
{
yyerror
(
"'{' expected"
);
RECOVER
;;
{
yyerror
(
"'{' expected"
);
RECOVER
;;
break
;}
break
;}
case
165
:
case
165
:
#line 105
9
"./parse.y"
#line 105
8
"./parse.y"
{
yyerror
(
"'{' expected"
);
RECOVER
;;
{
yyerror
(
"'{' expected"
);
RECOVER
;;
break
;}
break
;}
case
166
:
case
166
:
#line 106
4
"./parse.y"
#line 106
3
"./parse.y"
{
{
ctxp
->
interface_number
=
1
;
ctxp
->
interface_number
=
1
;
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
);
yyval
.
node
=
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
);
;
;
break
;}
break
;}
case
167
:
case
167
:
#line 106
9
"./parse.y"
#line 106
8
"./parse.y"
{
{
ctxp
->
interface_number
++
;
ctxp
->
interface_number
++
;
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
));
yyval
.
node
=
chainon
(
yyvsp
[
-
2
].
node
,
build_tree_list
(
yyvsp
[
0
].
node
,
NULL_TREE
));
;
;
break
;}
break
;}
case
168
:
case
168
:
#line 107
4
"./parse.y"
#line 107
3
"./parse.y"
{
yyerror
(
"Invalid interface type"
);
RECOVER
;;
{
yyerror
(
"Invalid interface type"
);
RECOVER
;;
break
;}
break
;}
case
169
:
case
169
:
#line 107
6
"./parse.y"
#line 107
5
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
170
:
case
170
:
#line 108
1
"./parse.y"
#line 108
0
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
171
:
case
171
:
#line 108
3
"./parse.y"
#line 108
2
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
176
:
case
176
:
#line 109
5
"./parse.y"
#line 109
4
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner class declaration"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner class declaration"
);
;
break
;}
break
;}
case
177
:
case
177
:
#line 109
7
"./parse.y"
#line 109
6
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner interface declaration"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner interface declaration"
);
;
break
;}
break
;}
case
179
:
case
179
:
#line 110
6
"./parse.y"
#line 110
5
"./parse.y"
{
{
check_abstract_method_header
(
yyvsp
[
-
1
].
node
);
check_abstract_method_header
(
yyvsp
[
-
1
].
node
);
current_function_decl
=
NULL_TREE
;
/* FIXME ? */
current_function_decl
=
NULL_TREE
;
/* FIXME ? */
;
;
break
;}
break
;}
case
180
:
case
180
:
#line 111
1
"./parse.y"
#line 111
0
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
181
:
case
181
:
#line 111
7
"./parse.y"
#line 111
6
"./parse.y"
{
yyval
.
node
=
build_new_array_init
(
yyvsp
[
-
1
].
operator
.
location
,
NULL_TREE
);
;
{
yyval
.
node
=
build_new_array_init
(
yyvsp
[
-
1
].
operator
.
location
,
NULL_TREE
);
;
break
;}
break
;}
case
182
:
case
182
:
#line 111
9
"./parse.y"
#line 111
8
"./parse.y"
{
yyval
.
node
=
build_new_array_init
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_new_array_init
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
183
:
case
183
:
#line 112
1
"./parse.y"
#line 112
0
"./parse.y"
{
yyval
.
node
=
build_new_array_init
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
);
;
{
yyval
.
node
=
build_new_array_init
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
);
;
break
;}
break
;}
case
184
:
case
184
:
#line 112
6
"./parse.y"
#line 112
5
"./parse.y"
{
{
yyval
.
node
=
tree_cons
(
maybe_build_array_element_wfl
(
yyvsp
[
0
].
node
),
yyval
.
node
=
tree_cons
(
maybe_build_array_element_wfl
(
yyvsp
[
0
].
node
),
yyvsp
[
0
].
node
,
NULL_TREE
);
yyvsp
[
0
].
node
,
NULL_TREE
);
;
;
break
;}
break
;}
case
185
:
case
185
:
#line 113
1
"./parse.y"
#line 113
0
"./parse.y"
{
{
yyval
.
node
=
tree_cons
(
maybe_build_array_element_wfl
(
yyvsp
[
0
].
node
),
yyvsp
[
0
].
node
,
yyvsp
[
-
2
].
node
);
yyval
.
node
=
tree_cons
(
maybe_build_array_element_wfl
(
yyvsp
[
0
].
node
),
yyvsp
[
0
].
node
,
yyvsp
[
-
2
].
node
);
;
;
break
;}
break
;}
case
186
:
case
186
:
#line 113
5
"./parse.y"
#line 113
4
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
187
:
case
187
:
#line 114
1
"./parse.y"
#line 114
0
"./parse.y"
{
yyval
.
node
=
empty_stmt_node
;
;
{
yyval
.
node
=
empty_stmt_node
;
;
break
;}
break
;}
case
188
:
case
188
:
#line 114
3
"./parse.y"
#line 114
2
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
189
:
case
189
:
#line 114
8
"./parse.y"
#line 114
7
"./parse.y"
{
enter_block
();
;
{
enter_block
();
;
break
;}
break
;}
case
190
:
case
190
:
#line 115
3
"./parse.y"
#line 115
2
"./parse.y"
{
{
maybe_absorb_scoping_blocks
();
maybe_absorb_scoping_blocks
();
yyval
.
node
=
exit_block
();
yyval
.
node
=
exit_block
();
;
;
break
;}
break
;}
case
194
:
case
194
:
#line 116
7
"./parse.y"
#line 116
6
"./parse.y"
{
java_method_add_stmt
(
current_function_decl
,
yyvsp
[
0
].
node
);
;
{
java_method_add_stmt
(
current_function_decl
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
195
:
case
195
:
#line 116
9
"./parse.y"
#line 116
8
"./parse.y"
{
parse_jdk1_1_error
(
"inner class declaration"
);
;
{
parse_jdk1_1_error
(
"inner class declaration"
);
;
break
;}
break
;}
case
197
:
case
197
:
#line 117
8
"./parse.y"
#line 117
7
"./parse.y"
{
declare_local_variables
(
0
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
declare_local_variables
(
0
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
198
:
case
198
:
#line 11
80
"./parse.y"
#line 11
79
"./parse.y"
{
declare_local_variables
(
yyvsp
[
-
2
].
value
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
declare_local_variables
(
yyvsp
[
-
2
].
value
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
204
:
case
204
:
#line 11
90
"./parse.y"
#line 11
89
"./parse.y"
{
{
/* If the for loop is unlabeled, we must return the
/* If the for loop is unlabeled, we must return the
block it was defined it. It our last chance to
block it was defined it. It our last chance to
...
@@ -3477,11 +3476,11 @@ case 204:
...
@@ -3477,11 +3476,11 @@ case 204:
;
;
break
;}
break
;}
case
221
:
case
221
:
#line 122
3
"./parse.y"
#line 122
2
"./parse.y"
{
yyval
.
node
=
empty_stmt_node
;
;
{
yyval
.
node
=
empty_stmt_node
;
;
break
;}
break
;}
case
222
:
case
222
:
#line 122
8
"./parse.y"
#line 122
7
"./parse.y"
{
{
yyval
.
node
=
build_labeled_block
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
1
].
node
),
yyval
.
node
=
build_labeled_block
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
1
].
node
),
EXPR_WFL_NODE
(
yyvsp
[
-
1
].
node
));
EXPR_WFL_NODE
(
yyvsp
[
-
1
].
node
));
...
@@ -3491,27 +3490,19 @@ case 222:
...
@@ -3491,27 +3490,19 @@ case 222:
;
;
break
;}
break
;}
case
223
:
case
223
:
#line 1239 "./parse.y"
#line 1238 "./parse.y"
{
{
yyval
.
node
=
finish_labeled_statement
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
yyval
.
node
=
complete_labeled_statement
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
pop_labeled_block
();
POP_LABELED_BLOCK
();
;
break
;}
break
;}
case
224
:
case
224
:
#line 124
5
"./parse.y"
#line 124
0
"./parse.y"
{
yyerror
(
"':' expected"
);
RECOVER
;;
{
yyerror
(
"':' expected"
);
RECOVER
;;
break
;}
break
;}
case
225
:
case
225
:
#line 1250 "./parse.y"
#line 1245 "./parse.y"
{
{
yyval
.
node
=
finish_labeled_statement
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
yyval
.
node
=
complete_labeled_statement
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
pop_labeled_block
();
POP_LABELED_BLOCK
();
;
break
;}
break
;}
case
226
:
case
226
:
#line 12
61
"./parse.y"
#line 12
52
"./parse.y"
{
{
/* We have a statement. Generate a WFL around it so
/* We have a statement. Generate a WFL around it so
we can debug it */
we can debug it */
...
@@ -3522,7 +3513,7 @@ case 226:
...
@@ -3522,7 +3513,7 @@ case 226:
;
;
break
;}
break
;}
case
227
:
case
227
:
#line 12
70
"./parse.y"
#line 12
61
"./parse.y"
{
{
if
(
ctxp
->
prevent_ese
!=
lineno
)
if
(
ctxp
->
prevent_ese
!=
lineno
)
yyerror
(
"Invalid expression statement"
);
yyerror
(
"Invalid expression statement"
);
...
@@ -3530,7 +3521,7 @@ case 227:
...
@@ -3530,7 +3521,7 @@ case 227:
;
;
break
;}
break
;}
case
228
:
case
228
:
#line 12
76
"./parse.y"
#line 12
67
"./parse.y"
{
{
if
(
ctxp
->
prevent_ese
!=
lineno
)
if
(
ctxp
->
prevent_ese
!=
lineno
)
yyerror
(
"Invalid expression statement"
);
yyerror
(
"Invalid expression statement"
);
...
@@ -3538,7 +3529,7 @@ case 228:
...
@@ -3538,7 +3529,7 @@ case 228:
;
;
break
;}
break
;}
case
229
:
case
229
:
#line 12
82
"./parse.y"
#line 12
73
"./parse.y"
{
{
if
(
ctxp
->
prevent_ese
!=
lineno
)
if
(
ctxp
->
prevent_ese
!=
lineno
)
yyerror
(
"Invalid expression statement"
);
yyerror
(
"Invalid expression statement"
);
...
@@ -3546,11 +3537,11 @@ case 229:
...
@@ -3546,11 +3537,11 @@ case 229:
;
;
break
;}
break
;}
case
230
:
case
230
:
#line 12
88
"./parse.y"
#line 12
79
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
231
:
case
231
:
#line 12
90
"./parse.y"
#line 12
81
"./parse.y"
{
{
yyerror
(
"Constructor invocation must be first "
yyerror
(
"Constructor invocation must be first "
"thing in a constructor"
);
"thing in a constructor"
);
...
@@ -3558,11 +3549,11 @@ case 231:
...
@@ -3558,11 +3549,11 @@ case 231:
;
;
break
;}
break
;}
case
232
:
case
232
:
#line 12
96
"./parse.y"
#line 12
87
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
233
:
case
233
:
#line 12
98
"./parse.y"
#line 12
89
"./parse.y"
{
{
yyerror
(
"Constructor invocation must be first "
yyerror
(
"Constructor invocation must be first "
"thing in a constructor"
);
"thing in a constructor"
);
...
@@ -3570,60 +3561,60 @@ case 233:
...
@@ -3570,60 +3561,60 @@ case 233:
;
;
break
;}
break
;}
case
234
:
case
234
:
#line 1
304
"./parse.y"
#line 1
295
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
235
:
case
235
:
#line 1
306
"./parse.y"
#line 1
297
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
236
:
case
236
:
#line 1
308
"./parse.y"
#line 1
299
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
237
:
case
237
:
#line 13
10
"./parse.y"
#line 13
01
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
238
:
case
238
:
#line 13
12
"./parse.y"
#line 13
03
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
246
:
case
246
:
#line 13
27
"./parse.y"
#line 13
18
"./parse.y"
{
{
yyval
.
node
=
build_if_else_statement
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyval
.
node
=
build_if_else_statement
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
,
NULL_TREE
);
yyvsp
[
0
].
node
,
NULL_TREE
);
;
;
break
;}
break
;}
case
247
:
case
247
:
#line 13
32
"./parse.y"
#line 13
23
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
248
:
case
248
:
#line 13
34
"./parse.y"
#line 13
25
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
249
:
case
249
:
#line 13
36
"./parse.y"
#line 13
27
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
250
:
case
250
:
#line 13
41
"./parse.y"
#line 13
32
"./parse.y"
{
yyval
.
node
=
build_if_else_statement
(
yyvsp
[
-
5
].
operator
.
location
,
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_if_else_statement
(
yyvsp
[
-
5
].
operator
.
location
,
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
251
:
case
251
:
#line 13
46
"./parse.y"
#line 13
37
"./parse.y"
{
yyval
.
node
=
build_if_else_statement
(
yyvsp
[
-
5
].
operator
.
location
,
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_if_else_statement
(
yyvsp
[
-
5
].
operator
.
location
,
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
252
:
case
252
:
#line 13
51
"./parse.y"
#line 13
42
"./parse.y"
{
{
enter_block
();
enter_block
();
;
;
break
;}
break
;}
case
253
:
case
253
:
#line 13
55
"./parse.y"
#line 13
46
"./parse.y"
{
{
/* Make into "proper list" of COMPOUND_EXPRs.
/* Make into "proper list" of COMPOUND_EXPRs.
I.e. make the last statment also have its own
I.e. make the last statment also have its own
...
@@ -3634,42 +3625,42 @@ case 253:
...
@@ -3634,42 +3625,42 @@ case 253:
;
;
break
;}
break
;}
case
254
:
case
254
:
#line 13
67
"./parse.y"
#line 13
58
"./parse.y"
{
{
yyval
.
node
=
build
(
SWITCH_EXPR
,
NULL_TREE
,
yyvsp
[
-
1
].
node
,
NULL_TREE
);
yyval
.
node
=
build
(
SWITCH_EXPR
,
NULL_TREE
,
yyvsp
[
-
1
].
node
,
NULL_TREE
);
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
yyvsp
[
-
2
].
operator
.
location
;
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
yyvsp
[
-
2
].
operator
.
location
;
;
;
break
;}
break
;}
case
255
:
case
255
:
#line 13
72
"./parse.y"
#line 13
63
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
256
:
case
256
:
#line 13
74
"./parse.y"
#line 13
65
"./parse.y"
{
yyerror
(
"Missing term or ')'"
);
DRECOVER
(
switch_statement
);;
{
yyerror
(
"Missing term or ')'"
);
DRECOVER
(
switch_statement
);;
break
;}
break
;}
case
257
:
case
257
:
#line 13
76
"./parse.y"
#line 13
67
"./parse.y"
{
yyerror
(
"'{' expected"
);
RECOVER
;;
{
yyerror
(
"'{' expected"
);
RECOVER
;;
break
;}
break
;}
case
258
:
case
258
:
#line 13
84
"./parse.y"
#line 13
75
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
259
:
case
259
:
#line 13
86
"./parse.y"
#line 13
77
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
260
:
case
260
:
#line 13
88
"./parse.y"
#line 13
79
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
261
:
case
261
:
#line 13
90
"./parse.y"
#line 13
81
"./parse.y"
{
yyval
.
node
=
NULL_TREE
;
;
{
yyval
.
node
=
NULL_TREE
;
;
break
;}
break
;}
case
267
:
case
267
:
#line 140
9
"./parse.y"
#line 140
0
"./parse.y"
{
{
tree
lab
=
build1
(
CASE_EXPR
,
NULL_TREE
,
yyvsp
[
-
1
].
node
);
tree
lab
=
build1
(
CASE_EXPR
,
NULL_TREE
,
yyvsp
[
-
1
].
node
);
EXPR_WFL_LINECOL
(
lab
)
=
yyvsp
[
-
2
].
operator
.
location
;
EXPR_WFL_LINECOL
(
lab
)
=
yyvsp
[
-
2
].
operator
.
location
;
...
@@ -3677,7 +3668,7 @@ case 267:
...
@@ -3677,7 +3668,7 @@ case 267:
;
;
break
;}
break
;}
case
268
:
case
268
:
#line 14
15
"./parse.y"
#line 14
06
"./parse.y"
{
{
tree
lab
=
build1
(
DEFAULT_EXPR
,
NULL_TREE
,
NULL_TREE
);
tree
lab
=
build1
(
DEFAULT_EXPR
,
NULL_TREE
,
NULL_TREE
);
EXPR_WFL_LINECOL
(
lab
)
=
yyvsp
[
-
1
].
operator
.
location
;
EXPR_WFL_LINECOL
(
lab
)
=
yyvsp
[
-
1
].
operator
.
location
;
...
@@ -3685,95 +3676,95 @@ case 268:
...
@@ -3685,95 +3676,95 @@ case 268:
;
;
break
;}
break
;}
case
269
:
case
269
:
#line 14
21
"./parse.y"
#line 14
12
"./parse.y"
{
yyerror
(
"Missing or invalid constant expression"
);
RECOVER
;;
{
yyerror
(
"Missing or invalid constant expression"
);
RECOVER
;;
break
;}
break
;}
case
270
:
case
270
:
#line 14
23
"./parse.y"
#line 14
14
"./parse.y"
{
yyerror
(
"':' expected"
);
RECOVER
;;
{
yyerror
(
"':' expected"
);
RECOVER
;;
break
;}
break
;}
case
271
:
case
271
:
#line 14
25
"./parse.y"
#line 14
16
"./parse.y"
{
yyerror
(
"':' expected"
);
RECOVER
;;
{
yyerror
(
"':' expected"
);
RECOVER
;;
break
;}
break
;}
case
272
:
case
272
:
#line 14
30
"./parse.y"
#line 14
21
"./parse.y"
{
{
tree
body
=
build_loop_body
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
0
);
tree
body
=
build_loop_body
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
0
);
yyval
.
node
=
build_new_loop
(
body
);
yyval
.
node
=
build_new_loop
(
body
);
;
;
break
;}
break
;}
case
273
:
case
273
:
#line 14
38
"./parse.y"
#line 14
29
"./parse.y"
{
yyval
.
node
=
complete
_loop_body
(
0
,
NULL_TREE
,
yyvsp
[
0
].
node
,
0
);
;
{
yyval
.
node
=
finish
_loop_body
(
0
,
NULL_TREE
,
yyvsp
[
0
].
node
,
0
);
;
break
;}
break
;}
case
274
:
case
274
:
#line 14
40
"./parse.y"
#line 14
31
"./parse.y"
{
YYERROR_NOW
;
yyerror
(
"'(' expected"
);
RECOVER
;;
{
YYERROR_NOW
;
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
275
:
case
275
:
#line 14
42
"./parse.y"
#line 14
33
"./parse.y"
{
yyerror
(
"Missing term and ')' expected"
);
RECOVER
;;
{
yyerror
(
"Missing term and ')' expected"
);
RECOVER
;;
break
;}
break
;}
case
276
:
case
276
:
#line 14
44
"./parse.y"
#line 14
35
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
277
:
case
277
:
#line 144
9
"./parse.y"
#line 144
0
"./parse.y"
{
yyval
.
node
=
complete
_loop_body
(
0
,
NULL_TREE
,
yyvsp
[
0
].
node
,
0
);
;
{
yyval
.
node
=
finish
_loop_body
(
0
,
NULL_TREE
,
yyvsp
[
0
].
node
,
0
);
;
break
;}
break
;}
case
278
:
case
278
:
#line 14
54
"./parse.y"
#line 14
45
"./parse.y"
{
{
tree
body
=
build_loop_body
(
0
,
NULL_TREE
,
1
);
tree
body
=
build_loop_body
(
0
,
NULL_TREE
,
1
);
yyval
.
node
=
build_new_loop
(
body
);
yyval
.
node
=
build_new_loop
(
body
);
;
;
break
;}
break
;}
case
279
:
case
279
:
#line 14
63
"./parse.y"
#line 14
54
"./parse.y"
{
yyval
.
node
=
complete
_loop_body
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
5
].
node
,
1
);
;
{
yyval
.
node
=
finish
_loop_body
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
5
].
node
,
1
);
;
break
;}
break
;}
case
280
:
case
280
:
#line 14
68
"./parse.y"
#line 14
59
"./parse.y"
{
yyval
.
node
=
complete
_for_loop
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
4
].
node
),
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
finish
_for_loop
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
4
].
node
),
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
281
:
case
281
:
#line 14
70
"./parse.y"
#line 14
61
"./parse.y"
{
{
yyval
.
node
=
complete
_for_loop
(
0
,
NULL_TREE
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyval
.
node
=
finish
_for_loop
(
0
,
NULL_TREE
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
/* We have not condition, so we get rid of the EXIT_EXPR */
/* We have not condition, so we get rid of the EXIT_EXPR */
LOOP_EXPR_BODY_CONDITION_EXPR
(
LOOP_EXPR_BODY
(
yyval
.
node
),
0
)
=
LOOP_EXPR_BODY_CONDITION_EXPR
(
LOOP_EXPR_BODY
(
yyval
.
node
),
0
)
=
empty_stmt_node
;
empty_stmt_node
;
;
;
break
;}
break
;}
case
282
:
case
282
:
#line 14
77
"./parse.y"
#line 14
68
"./parse.y"
{
yyerror
(
"Invalid control expression"
);
RECOVER
;;
{
yyerror
(
"Invalid control expression"
);
RECOVER
;;
break
;}
break
;}
case
283
:
case
283
:
#line 147
9
"./parse.y"
#line 147
0
"./parse.y"
{
yyerror
(
"Invalid update expression"
);
RECOVER
;;
{
yyerror
(
"Invalid update expression"
);
RECOVER
;;
break
;}
break
;}
case
284
:
case
284
:
#line 14
81
"./parse.y"
#line 14
72
"./parse.y"
{
yyerror
(
"Invalid update expression"
);
RECOVER
;;
{
yyerror
(
"Invalid update expression"
);
RECOVER
;;
break
;}
break
;}
case
285
:
case
285
:
#line 14
86
"./parse.y"
#line 14
77
"./parse.y"
{
yyval
.
node
=
complete
_for_loop
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
4
].
node
),
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);;
{
yyval
.
node
=
finish
_for_loop
(
EXPR_WFL_LINECOL
(
yyvsp
[
-
4
].
node
),
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);;
break
;}
break
;}
case
286
:
case
286
:
#line 14
88
"./parse.y"
#line 14
79
"./parse.y"
{
{
yyval
.
node
=
complete
_for_loop
(
0
,
NULL_TREE
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyval
.
node
=
finish
_for_loop
(
0
,
NULL_TREE
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
/* We have not condition, so we get rid of the EXIT_EXPR */
/* We have not condition, so we get rid of the EXIT_EXPR */
LOOP_EXPR_BODY_CONDITION_EXPR
(
LOOP_EXPR_BODY
(
yyval
.
node
),
0
)
=
LOOP_EXPR_BODY_CONDITION_EXPR
(
LOOP_EXPR_BODY
(
yyval
.
node
),
0
)
=
empty_stmt_node
;
empty_stmt_node
;
;
;
break
;}
break
;}
case
287
:
case
287
:
#line 14
98
"./parse.y"
#line 14
89
"./parse.y"
{
{
/* This scope defined for local variable that may be
/* This scope defined for local variable that may be
defined within the scope of the for loop */
defined within the scope of the for loop */
...
@@ -3781,15 +3772,15 @@ case 287:
...
@@ -3781,15 +3772,15 @@ case 287:
;
;
break
;}
break
;}
case
288
:
case
288
:
#line 1
504
"./parse.y"
#line 1
495
"./parse.y"
{
yyerror
(
"'(' expected"
);
DRECOVER
(
for_1
);;
{
yyerror
(
"'(' expected"
);
DRECOVER
(
for_1
);;
break
;}
break
;}
case
289
:
case
289
:
#line 1
506
"./parse.y"
#line 1
497
"./parse.y"
{
yyerror
(
"Invalid init statement"
);
RECOVER
;;
{
yyerror
(
"Invalid init statement"
);
RECOVER
;;
break
;}
break
;}
case
290
:
case
290
:
#line 15
11
"./parse.y"
#line 15
02
"./parse.y"
{
{
/* We now declare the loop body. The loop is
/* We now declare the loop body. The loop is
declared as a for loop. */
declared as a for loop. */
...
@@ -3802,11 +3793,11 @@ case 290:
...
@@ -3802,11 +3793,11 @@ case 290:
;
;
break
;}
break
;}
case
291
:
case
291
:
#line 15
23
"./parse.y"
#line 15
14
"./parse.y"
{
yyval
.
node
=
empty_stmt_node
;
;
{
yyval
.
node
=
empty_stmt_node
;
;
break
;}
break
;}
case
292
:
case
292
:
#line 15
25
"./parse.y"
#line 15
16
"./parse.y"
{
{
/* Init statement recorded within the previously
/* Init statement recorded within the previously
defined block scope */
defined block scope */
...
@@ -3814,7 +3805,7 @@ case 292:
...
@@ -3814,7 +3805,7 @@ case 292:
;
;
break
;}
break
;}
case
293
:
case
293
:
#line 15
31
"./parse.y"
#line 15
22
"./parse.y"
{
{
/* Local variable are recorded within the previously
/* Local variable are recorded within the previously
defined block scope */
defined block scope */
...
@@ -3822,94 +3813,94 @@ case 293:
...
@@ -3822,94 +3813,94 @@ case 293:
;
;
break
;}
break
;}
case
294
:
case
294
:
#line 15
37
"./parse.y"
#line 15
28
"./parse.y"
{
yyerror
(
"';' expected"
);
DRECOVER
(
for_init_1
);;
{
yyerror
(
"';' expected"
);
DRECOVER
(
for_init_1
);;
break
;}
break
;}
case
295
:
case
295
:
#line 15
41
"./parse.y"
#line 15
32
"./parse.y"
{
yyval
.
node
=
empty_stmt_node
;;
{
yyval
.
node
=
empty_stmt_node
;;
break
;}
break
;}
case
296
:
case
296
:
#line 15
43
"./parse.y"
#line 15
34
"./parse.y"
{
yyval
.
node
=
build_debugable_stmt
(
BUILD_LOCATION
(),
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_debugable_stmt
(
BUILD_LOCATION
(),
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
297
:
case
297
:
#line 15
48
"./parse.y"
#line 15
39
"./parse.y"
{
yyval
.
node
=
add_stmt_to_compound
(
NULL_TREE
,
NULL_TREE
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
add_stmt_to_compound
(
NULL_TREE
,
NULL_TREE
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
298
:
case
298
:
#line 15
50
"./parse.y"
#line 15
41
"./parse.y"
{
yyval
.
node
=
add_stmt_to_compound
(
yyvsp
[
-
2
].
node
,
NULL_TREE
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
add_stmt_to_compound
(
yyvsp
[
-
2
].
node
,
NULL_TREE
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
299
:
case
299
:
#line 15
52
"./parse.y"
#line 15
43
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
300
:
case
300
:
#line 15
57
"./parse.y"
#line 15
48
"./parse.y"
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
1
].
operator
.
location
,
1
,
NULL_TREE
);
;
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
1
].
operator
.
location
,
1
,
NULL_TREE
);
;
break
;}
break
;}
case
301
:
case
301
:
#line 155
9
"./parse.y"
#line 155
0
"./parse.y"
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
2
].
operator
.
location
,
1
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
2
].
operator
.
location
,
1
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
302
:
case
302
:
#line 15
61
"./parse.y"
#line 15
52
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
303
:
case
303
:
#line 15
63
"./parse.y"
#line 15
54
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
304
:
case
304
:
#line 15
68
"./parse.y"
#line 15
59
"./parse.y"
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
1
].
operator
.
location
,
0
,
NULL_TREE
);
;
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
1
].
operator
.
location
,
0
,
NULL_TREE
);
;
break
;}
break
;}
case
305
:
case
305
:
#line 15
70
"./parse.y"
#line 15
61
"./parse.y"
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
2
].
operator
.
location
,
0
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_bc_statement
(
yyvsp
[
-
2
].
operator
.
location
,
0
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
306
:
case
306
:
#line 15
72
"./parse.y"
#line 15
63
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
307
:
case
307
:
#line 15
74
"./parse.y"
#line 15
65
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
308
:
case
308
:
#line 157
9
"./parse.y"
#line 157
0
"./parse.y"
{
yyval
.
node
=
build_return
(
yyvsp
[
-
1
].
operator
.
location
,
NULL_TREE
);
;
{
yyval
.
node
=
build_return
(
yyvsp
[
-
1
].
operator
.
location
,
NULL_TREE
);
;
break
;}
break
;}
case
309
:
case
309
:
#line 15
81
"./parse.y"
#line 15
72
"./parse.y"
{
yyval
.
node
=
build_return
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_return
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
310
:
case
310
:
#line 15
83
"./parse.y"
#line 15
74
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
311
:
case
311
:
#line 15
85
"./parse.y"
#line 15
76
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
312
:
case
312
:
#line 15
90
"./parse.y"
#line 15
81
"./parse.y"
{
{
yyval
.
node
=
build1
(
THROW_EXPR
,
NULL_TREE
,
yyvsp
[
-
1
].
node
);
yyval
.
node
=
build1
(
THROW_EXPR
,
NULL_TREE
,
yyvsp
[
-
1
].
node
);
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
yyvsp
[
-
2
].
operator
.
location
;
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
yyvsp
[
-
2
].
operator
.
location
;
;
;
break
;}
break
;}
case
313
:
case
313
:
#line 15
95
"./parse.y"
#line 15
86
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
314
:
case
314
:
#line 15
97
"./parse.y"
#line 15
88
"./parse.y"
{
yyerror
(
"';' expected"
);
RECOVER
;;
{
yyerror
(
"';' expected"
);
RECOVER
;;
break
;}
break
;}
case
315
:
case
315
:
#line 1
602
"./parse.y"
#line 1
593
"./parse.y"
{
{
yyval
.
node
=
build
(
SYNCHRONIZED_EXPR
,
NULL_TREE
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyval
.
node
=
build
(
SYNCHRONIZED_EXPR
,
NULL_TREE
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
...
@@ -3917,56 +3908,56 @@ case 315:
...
@@ -3917,56 +3908,56 @@ case 315:
;
;
break
;}
break
;}
case
316
:
case
316
:
#line 1
608
"./parse.y"
#line 1
599
"./parse.y"
{
yyerror
(
"'{' expected"
);
RECOVER
;;
{
yyerror
(
"'{' expected"
);
RECOVER
;;
break
;}
break
;}
case
317
:
case
317
:
#line 16
10
"./parse.y"
#line 16
01
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
318
:
case
318
:
#line 16
12
"./parse.y"
#line 16
03
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
319
:
case
319
:
#line 16
14
"./parse.y"
#line 16
05
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
320
:
case
320
:
#line 161
9
"./parse.y"
#line 161
0
"./parse.y"
{
{
if
((
1
<<
yyvsp
[
0
].
value
)
!=
ACC_SYNCHRONIZED
)
if
((
1
<<
yyvsp
[
0
].
value
)
!=
ACC_SYNCHRONIZED
)
fatal
(
"synchronized was '%d' - yyparse"
,
(
1
<<
yyvsp
[
0
].
value
));
fatal
(
"synchronized was '%d' - yyparse"
,
(
1
<<
yyvsp
[
0
].
value
));
;
;
break
;}
break
;}
case
321
:
case
321
:
#line 16
27
"./parse.y"
#line 16
18
"./parse.y"
{
yyval
.
node
=
build_try_statement
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_try_statement
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
322
:
case
322
:
#line 162
9
"./parse.y"
#line 162
0
"./parse.y"
{
yyval
.
node
=
build_try_finally_statement
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_try_finally_statement
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
323
:
case
323
:
#line 16
31
"./parse.y"
#line 16
22
"./parse.y"
{
yyval
.
node
=
build_try_finally_statement
{
yyval
.
node
=
build_try_finally_statement
(
yyvsp
[
-
3
].
operator
.
location
,
build_try_statement
(
yyvsp
[
-
3
].
operator
.
location
,
(
yyvsp
[
-
3
].
operator
.
location
,
build_try_statement
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
),
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
),
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
324
:
case
324
:
#line 16
36
"./parse.y"
#line 16
27
"./parse.y"
{
yyerror
(
"'{' expected"
);
DRECOVER
(
try_statement
);;
{
yyerror
(
"'{' expected"
);
DRECOVER
(
try_statement
);;
break
;}
break
;}
case
326
:
case
326
:
#line 16
42
"./parse.y"
#line 16
33
"./parse.y"
{
{
TREE_CHAIN
(
yyvsp
[
0
].
node
)
=
yyvsp
[
-
1
].
node
;
TREE_CHAIN
(
yyvsp
[
0
].
node
)
=
yyvsp
[
-
1
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
yyval
.
node
=
yyvsp
[
0
].
node
;
;
;
break
;}
break
;}
case
327
:
case
327
:
#line 16
50
"./parse.y"
#line 16
41
"./parse.y"
{
{
java_method_add_stmt
(
current_function_decl
,
yyvsp
[
0
].
node
);
java_method_add_stmt
(
current_function_decl
,
yyvsp
[
0
].
node
);
exit_block
();
exit_block
();
...
@@ -3974,7 +3965,7 @@ case 327:
...
@@ -3974,7 +3965,7 @@ case 327:
;
;
break
;}
break
;}
case
328
:
case
328
:
#line 16
58
"./parse.y"
#line 16
49
"./parse.y"
{
{
/* We add a block to define a scope for
/* We add a block to define a scope for
formal_parameter (CCBP). The formal parameter is
formal_parameter (CCBP). The formal parameter is
...
@@ -3992,176 +3983,176 @@ case 328:
...
@@ -3992,176 +3983,176 @@ case 328:
;
;
break
;}
break
;}
case
329
:
case
329
:
#line 16
74
"./parse.y"
#line 16
65
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
330
:
case
330
:
#line 16
76
"./parse.y"
#line 16
67
"./parse.y"
{
yyerror
(
"Missing term or ')' expected"
);
DRECOVER
(
2
);;
{
yyerror
(
"Missing term or ')' expected"
);
DRECOVER
(
2
);;
break
;}
break
;}
case
331
:
case
331
:
#line 16
78
"./parse.y"
#line 16
69
"./parse.y"
{
yyerror
(
"')' expected"
);
DRECOVER
(
1
);;
{
yyerror
(
"')' expected"
);
DRECOVER
(
1
);;
break
;}
break
;}
case
332
:
case
332
:
#line 16
83
"./parse.y"
#line 16
74
"./parse.y"
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
{
yyval
.
node
=
yyvsp
[
0
].
node
;
;
break
;}
break
;}
case
333
:
case
333
:
#line 16
85
"./parse.y"
#line 16
76
"./parse.y"
{
yyerror
(
"'{' expected"
);
RECOVER
;
;
{
yyerror
(
"'{' expected"
);
RECOVER
;
;
break
;}
break
;}
case
337
:
case
337
:
#line 16
97
"./parse.y"
#line 16
88
"./parse.y"
{
yyval
.
node
=
build_this
(
yyvsp
[
0
].
operator
.
location
);
;
{
yyval
.
node
=
build_this
(
yyvsp
[
0
].
operator
.
location
);
;
break
;}
break
;}
case
338
:
case
338
:
#line 169
9
"./parse.y"
#line 169
0
"./parse.y"
{
yyval
.
node
=
yyvsp
[
-
1
].
node
;;
{
yyval
.
node
=
yyvsp
[
-
1
].
node
;;
break
;}
break
;}
case
343
:
case
343
:
#line 1
708
"./parse.y"
#line 1
699
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"named class literals"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"named class literals"
);
;
break
;}
break
;}
case
344
:
case
344
:
#line 17
10
"./parse.y"
#line 17
01
"./parse.y"
{
yyval
.
node
=
build_class_ref
(
yyvsp
[
-
2
].
node
);
;
{
yyval
.
node
=
build_class_ref
(
yyvsp
[
-
2
].
node
);
;
break
;}
break
;}
case
345
:
case
345
:
#line 17
12
"./parse.y"
#line 17
03
"./parse.y"
{
yyval
.
node
=
build_class_ref
(
void_type_node
);
;
{
yyval
.
node
=
build_class_ref
(
void_type_node
);
;
break
;}
break
;}
case
346
:
case
346
:
#line 17
17
"./parse.y"
#line 17
08
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"class literals"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"class literals"
);
;
break
;}
break
;}
case
347
:
case
347
:
#line 171
9
"./parse.y"
#line 171
0
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
348
:
case
348
:
#line 17
21
"./parse.y"
#line 17
12
"./parse.y"
{
yyerror
(
"'class' or 'this' expected"
);
RECOVER
;;
{
yyerror
(
"'class' or 'this' expected"
);
RECOVER
;;
break
;}
break
;}
case
349
:
case
349
:
#line 17
23
"./parse.y"
#line 17
14
"./parse.y"
{
yyerror
(
"'class' expected"
);
RECOVER
;;
{
yyerror
(
"'class' expected"
);
RECOVER
;;
break
;}
break
;}
case
350
:
case
350
:
#line 17
25
"./parse.y"
#line 17
16
"./parse.y"
{
yyerror
(
"'class' expected"
);
RECOVER
;;
{
yyerror
(
"'class' expected"
);
RECOVER
;;
break
;}
break
;}
case
351
:
case
351
:
#line 17
30
"./parse.y"
#line 17
21
"./parse.y"
{
yyval
.
node
=
build_new_invocation
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_new_invocation
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
352
:
case
352
:
#line 17
32
"./parse.y"
#line 17
23
"./parse.y"
{
yyval
.
node
=
build_new_invocation
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
{
yyval
.
node
=
build_new_invocation
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
353
:
case
353
:
#line 17
37
"./parse.y"
#line 17
28
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner class instance creation"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner class instance creation"
);
;
break
;}
break
;}
case
354
:
case
354
:
#line 173
9
"./parse.y"
#line 173
0
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner class instance creation"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"inner class instance creation"
);
;
break
;}
break
;}
case
359
:
case
359
:
#line 17
48
"./parse.y"
#line 17
39
"./parse.y"
{
yyerror
(
"'(' expected"
);
DRECOVER
(
new_1
);;
{
yyerror
(
"'(' expected"
);
DRECOVER
(
new_1
);;
break
;}
break
;}
case
360
:
case
360
:
#line 17
50
"./parse.y"
#line 17
41
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
361
:
case
361
:
#line 17
52
"./parse.y"
#line 17
43
"./parse.y"
{
yyerror
(
"')' or term expected"
);
RECOVER
;;
{
yyerror
(
"')' or term expected"
);
RECOVER
;;
break
;}
break
;}
case
362
:
case
362
:
#line 17
54
"./parse.y"
#line 17
45
"./parse.y"
{
yyerror
(
"')' expected"
);
RECOVER
;;
{
yyerror
(
"')' expected"
);
RECOVER
;;
break
;}
break
;}
case
363
:
case
363
:
#line 17
56
"./parse.y"
#line 17
47
"./parse.y"
{
YYERROR_NOW
;
yyerror
(
"Identifier expected"
);
RECOVER
;;
{
YYERROR_NOW
;
yyerror
(
"Identifier expected"
);
RECOVER
;;
break
;}
break
;}
case
364
:
case
364
:
#line 17
58
"./parse.y"
#line 17
49
"./parse.y"
{
yyerror
(
"'(' expected"
);
RECOVER
;;
{
yyerror
(
"'(' expected"
);
RECOVER
;;
break
;}
break
;}
case
367
:
case
367
:
#line 17
68
"./parse.y"
#line 17
59
"./parse.y"
{
{
yyval
.
node
=
tree_cons
(
NULL_TREE
,
yyvsp
[
0
].
node
,
NULL_TREE
);
yyval
.
node
=
tree_cons
(
NULL_TREE
,
yyvsp
[
0
].
node
,
NULL_TREE
);
ctxp
->
formal_parameter_number
=
1
;
ctxp
->
formal_parameter_number
=
1
;
;
;
break
;}
break
;}
case
368
:
case
368
:
#line 17
73
"./parse.y"
#line 17
64
"./parse.y"
{
{
ctxp
->
formal_parameter_number
+=
1
;
ctxp
->
formal_parameter_number
+=
1
;
yyval
.
node
=
tree_cons
(
NULL_TREE
,
yyvsp
[
0
].
node
,
yyvsp
[
-
2
].
node
);
yyval
.
node
=
tree_cons
(
NULL_TREE
,
yyvsp
[
0
].
node
,
yyvsp
[
-
2
].
node
);
;
;
break
;}
break
;}
case
369
:
case
369
:
#line 17
78
"./parse.y"
#line 17
69
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
370
:
case
370
:
#line 17
83
"./parse.y"
#line 17
74
"./parse.y"
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
,
0
);
;
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
,
0
);
;
break
;}
break
;}
case
371
:
case
371
:
#line 17
85
"./parse.y"
#line 17
76
"./parse.y"
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
,
0
);
;
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
1
].
node
,
yyvsp
[
0
].
node
,
0
);
;
break
;}
break
;}
case
372
:
case
372
:
#line 17
87
"./parse.y"
#line 17
78
"./parse.y"
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
CURRENT_OSB
(
ctxp
));;
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
CURRENT_OSB
(
ctxp
));;
break
;}
break
;}
case
373
:
case
373
:
#line 178
9
"./parse.y"
#line 178
0
"./parse.y"
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
CURRENT_OSB
(
ctxp
));;
{
yyval
.
node
=
build_newarray_node
(
yyvsp
[
-
2
].
node
,
yyvsp
[
-
1
].
node
,
CURRENT_OSB
(
ctxp
));;
break
;}
break
;}
case
374
:
case
374
:
#line 17
93
"./parse.y"
#line 17
84
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"anonymous array"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"anonymous array"
);
;
break
;}
break
;}
case
375
:
case
375
:
#line 17
95
"./parse.y"
#line 17
86
"./parse.y"
{
yyval
.
node
=
parse_jdk1_1_error
(
"anonymous array"
);
;
{
yyval
.
node
=
parse_jdk1_1_error
(
"anonymous array"
);
;
break
;}
break
;}
case
376
:
case
376
:
#line 17
97
"./parse.y"
#line 17
88
"./parse.y"
{
yyerror
(
"'[' expected"
);
DRECOVER
(
"]"
);;
{
yyerror
(
"'[' expected"
);
DRECOVER
(
"]"
);;
break
;}
break
;}
case
377
:
case
377
:
#line 179
9
"./parse.y"
#line 179
0
"./parse.y"
{
yyerror
(
"']' expected"
);
RECOVER
;;
{
yyerror
(
"']' expected"
);
RECOVER
;;
break
;}
break
;}
case
378
:
case
378
:
#line 1
804
"./parse.y"
#line 1
795
"./parse.y"
{
yyval
.
node
=
build_tree_list
(
NULL_TREE
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_tree_list
(
NULL_TREE
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
379
:
case
379
:
#line 1
806
"./parse.y"
#line 1
797
"./parse.y"
{
yyval
.
node
=
tree_cons
(
NULL_TREE
,
yyvsp
[
0
].
node
,
yyval
.
node
);
;
{
yyval
.
node
=
tree_cons
(
NULL_TREE
,
yyvsp
[
0
].
node
,
yyval
.
node
);
;
break
;}
break
;}
case
380
:
case
380
:
#line 18
11
"./parse.y"
#line 18
02
"./parse.y"
{
{
EXPR_WFL_LINECOL
(
yyvsp
[
-
1
].
node
)
=
yyvsp
[
-
2
].
operator
.
location
;
EXPR_WFL_LINECOL
(
yyvsp
[
-
1
].
node
)
=
yyvsp
[
-
2
].
operator
.
location
;
yyval
.
node
=
yyvsp
[
-
1
].
node
;
yyval
.
node
=
yyvsp
[
-
1
].
node
;
;
;
break
;}
break
;}
case
381
:
case
381
:
#line 18
16
"./parse.y"
#line 18
07
"./parse.y"
{
yyerror
(
"']' expected"
);
RECOVER
;;
{
yyerror
(
"']' expected"
);
RECOVER
;;
break
;}
break
;}
case
382
:
case
382
:
#line 18
18
"./parse.y"
#line 18
09
"./parse.y"
{
{
yyerror
(
"Missing term"
);
yyerror
(
"Missing term"
);
yyerror
(
"']' expected"
);
yyerror
(
"']' expected"
);
...
@@ -4169,7 +4160,7 @@ case 382:
...
@@ -4169,7 +4160,7 @@ case 382:
;
;
break
;}
break
;}
case
383
:
case
383
:
#line 18
27
"./parse.y"
#line 18
18
"./parse.y"
{
{
int
allocate
=
0
;
int
allocate
=
0
;
/* If not initialized, allocate memory for the osb
/* If not initialized, allocate memory for the osb
...
@@ -4197,19 +4188,19 @@ case 383:
...
@@ -4197,19 +4188,19 @@ case 383:
;
;
break
;}
break
;}
case
384
:
case
384
:
#line 18
53
"./parse.y"
#line 18
44
"./parse.y"
{
CURRENT_OSB
(
ctxp
)
++
;
;
{
CURRENT_OSB
(
ctxp
)
++
;
;
break
;}
break
;}
case
385
:
case
385
:
#line 18
55
"./parse.y"
#line 18
46
"./parse.y"
{
yyerror
(
"']' expected"
);
RECOVER
;;
{
yyerror
(
"']' expected"
);
RECOVER
;;
break
;}
break
;}
case
386
:
case
386
:
#line 18
60
"./parse.y"
#line 18
51
"./parse.y"
{
yyval
.
node
=
make_qualified_primary
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
,
yyvsp
[
-
1
].
operator
.
location
);
;
{
yyval
.
node
=
make_qualified_primary
(
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
,
yyvsp
[
-
1
].
operator
.
location
);
;
break
;}
break
;}
case
387
:
case
387
:
#line 18
64
"./parse.y"
#line 18
55
"./parse.y"
{
{
tree
super_wfl
=
tree
super_wfl
=
build_wfl_node
(
super_identifier_node
);
build_wfl_node
(
super_identifier_node
);
...
@@ -4218,19 +4209,19 @@ case 387:
...
@@ -4218,19 +4209,19 @@ case 387:
;
;
break
;}
break
;}
case
388
:
case
388
:
#line 18
71
"./parse.y"
#line 18
62
"./parse.y"
{
yyerror
(
"Field expected"
);
DRECOVER
(
super_field_acces
);;
{
yyerror
(
"Field expected"
);
DRECOVER
(
super_field_acces
);;
break
;}
break
;}
case
389
:
case
389
:
#line 18
76
"./parse.y"
#line 18
67
"./parse.y"
{
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
{
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
2
].
node
,
NULL_TREE
);
;
break
;}
break
;}
case
390
:
case
390
:
#line 18
78
"./parse.y"
#line 18
69
"./parse.y"
{
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_method_invocation
(
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
391
:
case
391
:
#line 18
80
"./parse.y"
#line 18
71
"./parse.y"
{
{
if
(
TREE_CODE
(
yyvsp
[
-
4
].
node
)
==
THIS_EXPR
)
if
(
TREE_CODE
(
yyvsp
[
-
4
].
node
)
==
THIS_EXPR
)
yyval
.
node
=
build_this_super_qualified_invocation
yyval
.
node
=
build_this_super_qualified_invocation
...
@@ -4243,7 +4234,7 @@ case 391:
...
@@ -4243,7 +4234,7 @@ case 391:
;
;
break
;}
break
;}
case
392
:
case
392
:
#line 18
91
"./parse.y"
#line 18
82
"./parse.y"
{
{
if
(
TREE_CODE
(
yyvsp
[
-
5
].
node
)
==
THIS_EXPR
)
if
(
TREE_CODE
(
yyvsp
[
-
5
].
node
)
==
THIS_EXPR
)
yyval
.
node
=
build_this_super_qualified_invocation
yyval
.
node
=
build_this_super_qualified_invocation
...
@@ -4256,121 +4247,121 @@ case 392:
...
@@ -4256,121 +4247,121 @@ case 392:
;
;
break
;}
break
;}
case
393
:
case
393
:
#line 1
902
"./parse.y"
#line 1
893
"./parse.y"
{
{
yyval
.
node
=
build_this_super_qualified_invocation
yyval
.
node
=
build_this_super_qualified_invocation
(
0
,
yyvsp
[
-
2
].
node
,
NULL_TREE
,
yyvsp
[
-
4
].
operator
.
location
,
yyvsp
[
-
3
].
operator
.
location
);
(
0
,
yyvsp
[
-
2
].
node
,
NULL_TREE
,
yyvsp
[
-
4
].
operator
.
location
,
yyvsp
[
-
3
].
operator
.
location
);
;
;
break
;}
break
;}
case
394
:
case
394
:
#line 1
907
"./parse.y"
#line 1
898
"./parse.y"
{
{
yyval
.
node
=
build_this_super_qualified_invocation
yyval
.
node
=
build_this_super_qualified_invocation
(
0
,
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
-
5
].
operator
.
location
,
yyvsp
[
-
4
].
operator
.
location
);
(
0
,
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
,
yyvsp
[
-
5
].
operator
.
location
,
yyvsp
[
-
4
].
operator
.
location
);
;
;
break
;}
break
;}
case
395
:
case
395
:
#line 19
16
"./parse.y"
#line 19
07
"./parse.y"
{
yyerror
(
"'(' expected"
);
DRECOVER
(
method_invocation
);
;
{
yyerror
(
"'(' expected"
);
DRECOVER
(
method_invocation
);
;
break
;}
break
;}
case
396
:
case
396
:
#line 19
18
"./parse.y"
#line 19
09
"./parse.y"
{
yyerror
(
"'(' expected"
);
DRECOVER
(
method_invocation
);
;
{
yyerror
(
"'(' expected"
);
DRECOVER
(
method_invocation
);
;
break
;}
break
;}
case
397
:
case
397
:
#line 19
23
"./parse.y"
#line 19
14
"./parse.y"
{
yyval
.
node
=
build_array_ref
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_array_ref
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
398
:
case
398
:
#line 19
25
"./parse.y"
#line 19
16
"./parse.y"
{
yyval
.
node
=
build_array_ref
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
{
yyval
.
node
=
build_array_ref
(
yyvsp
[
-
2
].
operator
.
location
,
yyvsp
[
-
3
].
node
,
yyvsp
[
-
1
].
node
);
;
break
;}
break
;}
case
399
:
case
399
:
#line 19
27
"./parse.y"
#line 19
18
"./parse.y"
{
{
yyerror
(
"Missing term and ']' expected"
);
yyerror
(
"Missing term and ']' expected"
);
DRECOVER
(
array_access
);
DRECOVER
(
array_access
);
;
;
break
;}
break
;}
case
400
:
case
400
:
#line 19
32
"./parse.y"
#line 19
23
"./parse.y"
{
{
yyerror
(
"']' expected"
);
yyerror
(
"']' expected"
);
DRECOVER
(
array_access
);
DRECOVER
(
array_access
);
;
;
break
;}
break
;}
case
401
:
case
401
:
#line 19
37
"./parse.y"
#line 19
28
"./parse.y"
{
{
yyerror
(
"Missing term and ']' expected"
);
yyerror
(
"Missing term and ']' expected"
);
DRECOVER
(
array_access
);
DRECOVER
(
array_access
);
;
;
break
;}
break
;}
case
402
:
case
402
:
#line 19
42
"./parse.y"
#line 19
33
"./parse.y"
{
{
yyerror
(
"']' expected"
);
yyerror
(
"']' expected"
);
DRECOVER
(
array_access
);
DRECOVER
(
array_access
);
;
;
break
;}
break
;}
case
407
:
case
407
:
#line 19
57
"./parse.y"
#line 19
48
"./parse.y"
{
yyval
.
node
=
build_incdec
(
yyvsp
[
0
].
operator
.
token
,
yyvsp
[
0
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
1
);
;
{
yyval
.
node
=
build_incdec
(
yyvsp
[
0
].
operator
.
token
,
yyvsp
[
0
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
1
);
;
break
;}
break
;}
case
408
:
case
408
:
#line 19
62
"./parse.y"
#line 19
53
"./parse.y"
{
yyval
.
node
=
build_incdec
(
yyvsp
[
0
].
operator
.
token
,
yyvsp
[
0
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
1
);
;
{
yyval
.
node
=
build_incdec
(
yyvsp
[
0
].
operator
.
token
,
yyvsp
[
0
].
operator
.
location
,
yyvsp
[
-
1
].
node
,
1
);
;
break
;}
break
;}
case
411
:
case
411
:
#line 196
9
"./parse.y"
#line 196
0
"./parse.y"
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
412
:
case
412
:
#line 19
71
"./parse.y"
#line 19
62
"./parse.y"
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
414
:
case
414
:
#line 19
74
"./parse.y"
#line 19
65
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;
{
yyerror
(
"Missing term"
);
RECOVER
;
break
;}
break
;}
case
415
:
case
415
:
#line 19
76
"./parse.y"
#line 19
67
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;
{
yyerror
(
"Missing term"
);
RECOVER
;
break
;}
break
;}
case
416
:
case
416
:
#line 19
81
"./parse.y"
#line 19
72
"./parse.y"
{
yyval
.
node
=
build_incdec
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
,
0
);
;
{
yyval
.
node
=
build_incdec
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
,
0
);
;
break
;}
break
;}
case
417
:
case
417
:
#line 19
83
"./parse.y"
#line 19
74
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;
{
yyerror
(
"Missing term"
);
RECOVER
;
break
;}
break
;}
case
418
:
case
418
:
#line 19
88
"./parse.y"
#line 19
79
"./parse.y"
{
yyval
.
node
=
build_incdec
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
,
0
);
;
{
yyval
.
node
=
build_incdec
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
,
0
);
;
break
;}
break
;}
case
419
:
case
419
:
#line 19
90
"./parse.y"
#line 19
81
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;
{
yyerror
(
"Missing term"
);
RECOVER
;
break
;}
break
;}
case
421
:
case
421
:
#line 19
96
"./parse.y"
#line 19
87
"./parse.y"
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
422
:
case
422
:
#line 19
98
"./parse.y"
#line 19
89
"./parse.y"
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_unaryop
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
424
:
case
424
:
#line
2001
"./parse.y"
#line
1992
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;
{
yyerror
(
"Missing term"
);
RECOVER
;
break
;}
break
;}
case
425
:
case
425
:
#line
2003
"./parse.y"
#line
1994
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;
{
yyerror
(
"Missing term"
);
RECOVER
;
break
;}
break
;}
case
426
:
case
426
:
#line
2008
"./parse.y"
#line
1999
"./parse.y"
{
{
tree
type
=
yyvsp
[
-
3
].
node
;
tree
type
=
yyvsp
[
-
3
].
node
;
while
(
CURRENT_OSB
(
ctxp
)
--
)
while
(
CURRENT_OSB
(
ctxp
)
--
)
...
@@ -4380,15 +4371,15 @@ case 426:
...
@@ -4380,15 +4371,15 @@ case 426:
;
;
break
;}
break
;}
case
427
:
case
427
:
#line 20
16
"./parse.y"
#line 20
07
"./parse.y"
{
yyval
.
node
=
build_cast
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_cast
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
428
:
case
428
:
#line 20
18
"./parse.y"
#line 20
09
"./parse.y"
{
yyval
.
node
=
build_cast
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_cast
(
yyvsp
[
-
3
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
429
:
case
429
:
#line 20
20
"./parse.y"
#line 20
11
"./parse.y"
{
{
char
*
ptr
;
char
*
ptr
;
while
(
CURRENT_OSB
(
ctxp
)
--
)
while
(
CURRENT_OSB
(
ctxp
)
--
)
...
@@ -4403,11 +4394,11 @@ case 429:
...
@@ -4403,11 +4394,11 @@ case 429:
;
;
break
;}
break
;}
case
430
:
case
430
:
#line 20
33
"./parse.y"
#line 20
24
"./parse.y"
{
yyerror
(
"']' expected, invalid type expression"
);;
{
yyerror
(
"']' expected, invalid type expression"
);;
break
;}
break
;}
case
431
:
case
431
:
#line 20
35
"./parse.y"
#line 20
26
"./parse.y"
{
{
if
(
ctxp
->
prevent_ese
!=
lineno
)
if
(
ctxp
->
prevent_ese
!=
lineno
)
yyerror
(
"Invalid type expression"
);
RECOVER
;
yyerror
(
"Invalid type expression"
);
RECOVER
;
...
@@ -4415,243 +4406,243 @@ case 431:
...
@@ -4415,243 +4406,243 @@ case 431:
;
;
break
;}
break
;}
case
432
:
case
432
:
#line 20
41
"./parse.y"
#line 20
32
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
433
:
case
433
:
#line 20
43
"./parse.y"
#line 20
34
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
434
:
case
434
:
#line 20
45
"./parse.y"
#line 20
36
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
436
:
case
436
:
#line 20
51
"./parse.y"
#line 20
42
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
437
:
case
437
:
#line 20
56
"./parse.y"
#line 20
47
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
438
:
case
438
:
#line 20
61
"./parse.y"
#line 20
52
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
439
:
case
439
:
#line 20
66
"./parse.y"
#line 20
57
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
440
:
case
440
:
#line 20
68
"./parse.y"
#line 20
59
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
441
:
case
441
:
#line 20
70
"./parse.y"
#line 20
61
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
443
:
case
443
:
#line 20
76
"./parse.y"
#line 20
67
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
444
:
case
444
:
#line 20
81
"./parse.y"
#line 20
72
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
445
:
case
445
:
#line 20
86
"./parse.y"
#line 20
77
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
446
:
case
446
:
#line 20
88
"./parse.y"
#line 20
79
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
448
:
case
448
:
#line 20
94
"./parse.y"
#line 20
85
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
449
:
case
449
:
#line 209
9
"./parse.y"
#line 209
0
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
450
:
case
450
:
#line 2
104
"./parse.y"
#line 2
095
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
451
:
case
451
:
#line 210
9
"./parse.y"
#line 210
0
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
452
:
case
452
:
#line 21
11
"./parse.y"
#line 21
02
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
453
:
case
453
:
#line 21
13
"./parse.y"
#line 21
04
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
455
:
case
455
:
#line 211
9
"./parse.y"
#line 211
0
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
456
:
case
456
:
#line 21
24
"./parse.y"
#line 21
15
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
457
:
case
457
:
#line 212
9
"./parse.y"
#line 212
0
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
458
:
case
458
:
#line 21
34
"./parse.y"
#line 21
25
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
459
:
case
459
:
#line 213
9
"./parse.y"
#line 213
0
"./parse.y"
{
yyval
.
node
=
build_binop
(
INSTANCEOF_EXPR
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_binop
(
INSTANCEOF_EXPR
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
460
:
case
460
:
#line 21
41
"./parse.y"
#line 21
32
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
461
:
case
461
:
#line 21
43
"./parse.y"
#line 21
34
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
462
:
case
462
:
#line 21
45
"./parse.y"
#line 21
36
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
463
:
case
463
:
#line 21
47
"./parse.y"
#line 21
38
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
464
:
case
464
:
#line 214
9
"./parse.y"
#line 214
0
"./parse.y"
{
yyerror
(
"Invalid reference type"
);
RECOVER
;;
{
yyerror
(
"Invalid reference type"
);
RECOVER
;;
break
;}
break
;}
case
466
:
case
466
:
#line 21
55
"./parse.y"
#line 21
46
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
467
:
case
467
:
#line 21
60
"./parse.y"
#line 21
51
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
468
:
case
468
:
#line 21
65
"./parse.y"
#line 21
56
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
469
:
case
469
:
#line 21
67
"./parse.y"
#line 21
58
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
471
:
case
471
:
#line 21
73
"./parse.y"
#line 21
64
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
472
:
case
472
:
#line 21
78
"./parse.y"
#line 21
69
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
474
:
case
474
:
#line 21
84
"./parse.y"
#line 21
75
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
475
:
case
475
:
#line 218
9
"./parse.y"
#line 218
0
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
477
:
case
477
:
#line 21
95
"./parse.y"
#line 21
86
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
478
:
case
478
:
#line 2
200
"./parse.y"
#line 2
191
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
480
:
case
480
:
#line 2
206
"./parse.y"
#line 2
197
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
481
:
case
481
:
#line 22
11
"./parse.y"
#line 22
02
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
483
:
case
483
:
#line 22
17
"./parse.y"
#line 22
08
"./parse.y"
{
{
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyval
.
node
=
build_binop
(
BINOP_LOOKUP
(
yyvsp
[
-
1
].
operator
.
token
),
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
;
break
;}
break
;}
case
484
:
case
484
:
#line 22
22
"./parse.y"
#line 22
13
"./parse.y"
{
yyerror
(
"Missing term"
);
RECOVER
;;
{
yyerror
(
"Missing term"
);
RECOVER
;;
break
;}
break
;}
case
486
:
case
486
:
#line 22
28
"./parse.y"
#line 22
19
"./parse.y"
{
{
yyval
.
node
=
build
(
CONDITIONAL_EXPR
,
NULL_TREE
,
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
yyval
.
node
=
build
(
CONDITIONAL_EXPR
,
NULL_TREE
,
yyvsp
[
-
4
].
node
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
yyvsp
[
-
3
].
operator
.
location
;
EXPR_WFL_LINECOL
(
yyval
.
node
)
=
yyvsp
[
-
3
].
operator
.
location
;
;
;
break
;}
break
;}
case
487
:
case
487
:
#line 22
33
"./parse.y"
#line 22
24
"./parse.y"
{
{
YYERROR_NOW
;
YYERROR_NOW
;
yyerror
(
"Missing term"
);
yyerror
(
"Missing term"
);
...
@@ -4659,19 +4650,19 @@ case 487:
...
@@ -4659,19 +4650,19 @@ case 487:
;
;
break
;}
break
;}
case
488
:
case
488
:
#line 223
9
"./parse.y"
#line 223
0
"./parse.y"
{
yyerror
(
"Missing term"
);
DRECOVER
(
2
);;
{
yyerror
(
"Missing term"
);
DRECOVER
(
2
);;
break
;}
break
;}
case
489
:
case
489
:
#line 22
41
"./parse.y"
#line 22
32
"./parse.y"
{
yyerror
(
"Missing term"
);
DRECOVER
(
3
);;
{
yyerror
(
"Missing term"
);
DRECOVER
(
3
);;
break
;}
break
;}
case
492
:
case
492
:
#line 22
51
"./parse.y"
#line 22
42
"./parse.y"
{
yyval
.
node
=
build_assignment
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
{
yyval
.
node
=
build_assignment
(
yyvsp
[
-
1
].
operator
.
token
,
yyvsp
[
-
1
].
operator
.
location
,
yyvsp
[
-
2
].
node
,
yyvsp
[
0
].
node
);
;
break
;}
break
;}
case
493
:
case
493
:
#line 22
53
"./parse.y"
#line 22
44
"./parse.y"
{
{
if
(
ctxp
->
prevent_ese
!=
lineno
)
if
(
ctxp
->
prevent_ese
!=
lineno
)
yyerror
(
"Missing term"
);
yyerror
(
"Missing term"
);
...
@@ -4876,7 +4867,7 @@ yyerrhandle:
...
@@ -4876,7 +4867,7 @@ yyerrhandle:
yystate
=
yyn
;
yystate
=
yyn
;
goto
yynewstate
;
goto
yynewstate
;
}
}
#line 227
9
"./parse.y"
#line 227
0
"./parse.y"
...
@@ -6070,7 +6061,7 @@ fix_method_argument_names (orig_arg, meth)
...
@@ -6070,7 +6061,7 @@ fix_method_argument_names (orig_arg, meth)
/* Complete the method declaration with METHOD_BODY. */
/* Complete the method declaration with METHOD_BODY. */
static
void
static
void
complete
_method_declaration
(
method_body
)
finish
_method_declaration
(
method_body
)
tree
method_body
;
tree
method_body
;
{
{
BLOCK_EXPR_BODY
(
DECL_FUNCTION_BODY
(
current_function_decl
))
=
method_body
;
BLOCK_EXPR_BODY
(
DECL_FUNCTION_BODY
(
current_function_decl
))
=
method_body
;
...
@@ -10418,15 +10409,18 @@ java_complete_lhs (node)
...
@@ -10418,15 +10409,18 @@ java_complete_lhs (node)
node
=
patch_switch_statement
(
node
);
node
=
patch_switch_statement
(
node
);
if
(
TREE_OPERAND
(
node
,
0
)
==
error_mark_node
)
if
(
TREE_OPERAND
(
node
,
0
)
==
error_mark_node
)
return
error_mark_node
;
nn
=
error_mark_node
;
TREE_TYPE
(
nn
)
=
TREE_TYPE
(
node
)
=
void_type_node
;
else
/* If we returned something different, that's because we
inserted a label. Pop the label too. */
if
(
nn
!=
node
)
{
{
if
(
CAN_COMPLETE_NORMALLY
(
node
))
TREE_TYPE
(
nn
)
=
TREE_TYPE
(
node
)
=
void_type_node
;
CAN_COMPLETE_NORMALLY
(
nn
)
=
1
;
/* If we returned something different, that's because we
POP_LABELED_BLOCK
();
inserted a label. Pop the label too. */
if
(
nn
!=
node
)
{
if
(
CAN_COMPLETE_NORMALLY
(
node
))
CAN_COMPLETE_NORMALLY
(
nn
)
=
1
;
POP_LABELED_BLOCK
();
}
}
}
POP_LOOP
();
POP_LOOP
();
return
nn
;
return
nn
;
...
@@ -12991,30 +12985,35 @@ patch_if_else_statement (node)
...
@@ -12991,30 +12985,35 @@ patch_if_else_statement (node)
/* Action taken when a lableled statement is parsed. a new
/* Action taken when a lableled statement is parsed. a new
LABELED_BLOCK_EXPR is created. No statement is attached to the
LABELED_BLOCK_EXPR is created. No statement is attached to the
label, yet. */
label, yet.
LABEL can be NULL_TREE for artificially-generated blocks.
*/
static
tree
static
tree
build_labeled_block
(
location
,
label
)
build_labeled_block
(
location
,
label
)
int
location
;
int
location
;
tree
label
;
tree
label
;
{
{
tree
label_name
=
merge_qualified_name
(
label_id
,
label
)
;
tree
label_name
;
tree
label_decl
,
node
;
tree
label_decl
,
node
;
if
(
label
==
NULL_TREE
||
label
==
continue_identifier_node
)
/* Issue an error if we try to reuse a label that was previously
label_name
=
label
;
declared */
else
if
(
IDENTIFIER_LOCAL_VALUE
(
label_name
))
{
{
EXPR_WFL_LINECOL
(
wfl_operator
)
=
location
;
label_name
=
merge_qualified_name
(
label_id
,
label
);
parse_error_context
(
wfl_operator
,
"Declaration of `%s' shadows "
/* Issue an error if we try to reuse a label that was previously
"a previous label declaration"
,
declared */
IDENTIFIER_POINTER
(
label
));
if
(
IDENTIFIER_LOCAL_VALUE
(
label_name
))
EXPR_WFL_LINECOL
(
wfl_operator
)
=
{
EXPR_WFL_LINECOL
(
IDENTIFIER_LOCAL_VALUE
(
label_name
));
EXPR_WFL_LINECOL
(
wfl_operator
)
=
location
;
parse_error_context
(
wfl_operator
,
"This is the location of the "
parse_error_context
(
wfl_operator
,
"Declaration of `%s' shadows "
"previous declaration of label `%s'"
,
"a previous label declaration"
,
IDENTIFIER_POINTER
(
label
));
IDENTIFIER_POINTER
(
label
));
java_error_count
--
;
EXPR_WFL_LINECOL
(
wfl_operator
)
=
EXPR_WFL_LINECOL
(
IDENTIFIER_LOCAL_VALUE
(
label_name
));
parse_error_context
(
wfl_operator
,
"This is the location of the "
"previous declaration of label `%s'"
,
IDENTIFIER_POINTER
(
label
));
java_error_count
--
;
}
}
}
label_decl
=
create_label_decl
(
label_name
);
label_decl
=
create_label_decl
(
label_name
);
...
@@ -13024,20 +13023,10 @@ build_labeled_block (location, label)
...
@@ -13024,20 +13023,10 @@ build_labeled_block (location, label)
return
node
;
return
node
;
}
}
/* Generate a label crafting a unique name for it. This is used to
implicitely label loops that aren't the body part of labeled
statement. */
static
tree
generate_labeled_block
()
{
return
build_labeled_block
(
0
,
generate_name
());
}
/* A labeled statement LBE is attached a statement. */
/* A labeled statement LBE is attached a statement. */
static
tree
static
tree
complete
_labeled_statement
(
lbe
,
statement
)
finish
_labeled_statement
(
lbe
,
statement
)
tree
lbe
;
/* Labeled block expr */
tree
lbe
;
/* Labeled block expr */
tree
statement
;
tree
statement
;
{
{
...
@@ -13050,9 +13039,10 @@ complete_labeled_statement (lbe, statement)
...
@@ -13050,9 +13039,10 @@ complete_labeled_statement (lbe, statement)
if
(
TREE_CODE
(
statement
)
==
LOOP_EXPR
&&
IS_FOR_LOOP_P
(
statement
))
if
(
TREE_CODE
(
statement
)
==
LOOP_EXPR
&&
IS_FOR_LOOP_P
(
statement
))
{
{
java_method_add_stmt
(
current_function_decl
,
lbe
);
java_method_add_stmt
(
current_function_decl
,
lbe
);
return
exit_block
();
lbe
=
exit_block
();
}
}
pop_labeled_block
();
POP_LABELED_BLOCK
();
return
lbe
;
return
lbe
;
}
}
...
@@ -13104,7 +13094,7 @@ build_loop_body (location, condition, reversed)
...
@@ -13104,7 +13094,7 @@ build_loop_body (location, condition, reversed)
condition
=
build_debugable_stmt
(
location
,
condition
);
condition
=
build_debugable_stmt
(
location
,
condition
);
TREE_SIDE_EFFECTS
(
condition
)
=
1
;
TREE_SIDE_EFFECTS
(
condition
)
=
1
;
body
=
generate_labeled_block
(
);
body
=
build_labeled_block
(
0
,
continue_identifier_node
);
first
=
(
reversed
?
body
:
condition
);
first
=
(
reversed
?
body
:
condition
);
second
=
(
reversed
?
condition
:
body
);
second
=
(
reversed
?
condition
:
body
);
return
return
...
@@ -13117,7 +13107,7 @@ build_loop_body (location, condition, reversed)
...
@@ -13117,7 +13107,7 @@ build_loop_body (location, condition, reversed)
loop list. */
loop list. */
static
tree
static
tree
complete
_loop_body
(
location
,
condition
,
body
,
reversed
)
finish
_loop_body
(
location
,
condition
,
body
,
reversed
)
int
location
;
int
location
;
tree
condition
,
body
;
tree
condition
,
body
;
int
reversed
;
int
reversed
;
...
@@ -13139,16 +13129,16 @@ complete_loop_body (location, condition, body, reversed)
...
@@ -13139,16 +13129,16 @@ complete_loop_body (location, condition, body, reversed)
return
to_return
;
return
to_return
;
}
}
/* Tailored version of
complete
_loop_body for FOR loops, when FOR
/* Tailored version of
finish
_loop_body for FOR loops, when FOR
loops feature the condition part */
loops feature the condition part */
static
tree
static
tree
complete
_for_loop
(
location
,
condition
,
update
,
body
)
finish
_for_loop
(
location
,
condition
,
update
,
body
)
int
location
;
int
location
;
tree
condition
,
update
,
body
;
tree
condition
,
update
,
body
;
{
{
/* Put the condition and the loop body in place */
/* Put the condition and the loop body in place */
tree
loop
=
complete
_loop_body
(
location
,
condition
,
body
,
0
);
tree
loop
=
finish
_loop_body
(
location
,
condition
,
body
,
0
);
/* LOOP is the current loop which has been now popped of the loop
/* LOOP is the current loop which has been now popped of the loop
stack. Install the update block */
stack. Install the update block */
LOOP_EXPR_BODY_UPDATE_BLOCK
(
LOOP_EXPR_BODY
(
loop
))
=
update
;
LOOP_EXPR_BODY_UPDATE_BLOCK
(
LOOP_EXPR_BODY
(
loop
))
=
update
;
...
@@ -13156,28 +13146,21 @@ complete_for_loop (location, condition, update, body)
...
@@ -13156,28 +13146,21 @@ complete_for_loop (location, condition, update, body)
}
}
/* If the loop isn't surrounded by a labeled statement, create one and
/* If the loop isn't surrounded by a labeled statement, create one and
insert LOOP as it
'
s body. */
insert LOOP as its body. */
static
tree
static
tree
patch_loop_statement
(
loop
)
patch_loop_statement
(
loop
)
tree
loop
;
tree
loop
;
{
{
tree
loop_label
,
to_return_as_loop
;
if
(
!
LOOP_HAS_LABEL_P
(
loop
))
if
(
LOOP_HAS_LABEL_P
(
loop
))
{
loop_label
=
ctxp
->
current_labeled_block
;
to_return_as_loop
=
loop
;
}
else
{
{
loop_label
=
generate_labeled_block
(
);
tree
loop_label
=
build_labeled_block
(
0
,
NULL_TREE
);
LABELED_BLOCK_BODY
(
loop_label
)
=
loop
;
LABELED_BLOCK_BODY
(
loop_label
)
=
loop
;
PUSH_LABELED_BLOCK
(
loop_label
);
PUSH_LABELED_BLOCK
(
loop_label
);
to_return_as_
loop
=
loop_label
;
loop
=
loop_label
;
}
}
TREE_TYPE
(
to_return_as_
loop
)
=
void_type_node
;
TREE_TYPE
(
loop
)
=
void_type_node
;
return
to_return_as_
loop
;
return
loop
;
}
}
/* 14.13, 14.14: break and continue Statements */
/* 14.13, 14.14: break and continue Statements */
...
@@ -13221,98 +13204,63 @@ patch_bc_statement (node)
...
@@ -13221,98 +13204,63 @@ patch_bc_statement (node)
tree
node
;
tree
node
;
{
{
tree
bc_label
=
EXIT_BLOCK_LABELED_BLOCK
(
node
),
target_stmt
;
tree
bc_label
=
EXIT_BLOCK_LABELED_BLOCK
(
node
),
target_stmt
;
int
is_unlabeled
=
0
;
tree
labeled_block
=
ctxp
->
current_labeled_block
;
EXPR_WFL_LINECOL
(
wfl_operator
)
=
EXPR_WFL_LINECOL
(
node
);
EXPR_WFL_LINECOL
(
wfl_operator
)
=
EXPR_WFL_LINECOL
(
node
);
/* Not having a target means that the break/continue statement is
unlabeled. We try to find a decent label for it */
if
(
!
bc_label
)
{
is_unlabeled
=
1
;
/* There should be a loop/switch to branch to */
if
(
ctxp
->
current_loop
)
{
if
(
TREE_CODE
(
ctxp
->
current_loop
)
==
LOOP_EXPR
)
{
/* At that stage, we're in the loop body, which is
encapsulated around a LABELED_BLOCK_EXPR. So searching
the current loop label requires us to consider the
labeled block before the current one. */
if
(
!
LOOP_HAS_LABEL_SKIP_P
(
ctxp
->
current_loop
))
fatal
(
"unlabeled loop has no installed label -- "
"patch_bc_statement"
);
bc_label
=
TREE_CHAIN
(
ctxp
->
current_labeled_block
);
}
/* For a SWITCH statement, this is the current one */
else
bc_label
=
ctxp
->
current_labeled_block
;
}
/* Not having a loop to break/continue to is an error */
else
{
parse_error_context
(
wfl_operator
,
"`%s' must be in loop%s"
,
(
IS_BREAK_STMT_P
(
node
)
?
"break"
:
"continue"
),
(
IS_BREAK_STMT_P
(
node
)
?
" or switch"
:
""
));
return
error_mark_node
;
}
}
/* Having an identifier here means that the target is unknown. */
/* Having an identifier here means that the target is unknown. */
else
if
(
TREE_CODE
(
bc_label
)
==
IDENTIFIER_NODE
)
if
(
bc_label
!=
NULL_TREE
&&
TREE_CODE
(
bc_label
)
==
IDENTIFIER_NODE
)
{
{
parse_error_context
(
wfl_operator
,
"No label definition found for `%s'"
,
parse_error_context
(
wfl_operator
,
"No label definition found for `%s'"
,
IDENTIFIER_POINTER
(
bc_label
));
IDENTIFIER_POINTER
(
bc_label
));
return
error_mark_node
;
return
error_mark_node
;
}
}
if
(
!
IS_BREAK_STMT_P
(
node
))
/* Find the statement we're targeting. */
target_stmt
=
LABELED_BLOCK_BODY
(
bc_label
);
/* Target loop is slightly burrowed in the case of a for loop, it
appears at the first sight to be a block. */
if
(
TREE_CODE
(
target_stmt
)
==
BLOCK
)
{
tree
sub
=
BLOCK_SUBBLOCKS
(
target_stmt
);
if
(
sub
&&
TREE_CODE
(
sub
)
==
COMPOUND_EXPR
&&
TREE_OPERAND
(
sub
,
1
)
&&
TREE_CODE
(
TREE_OPERAND
(
sub
,
1
))
==
LOOP_EXPR
)
target_stmt
=
TREE_OPERAND
(
sub
,
1
);
}
/* 14.13 The break Statement */
if
(
IS_BREAK_STMT_P
(
node
))
{
{
/* Named break are always fine, as far as they have a target
/* It's a continue statement. */
(already verified). Anonymous break need to target
for
(;;
labeled_block
=
TREE_CHAIN
(
labeled_block
))
while/do/for/switch */
if
(
is_unlabeled
&&
!
(
TREE_CODE
(
target_stmt
)
==
LOOP_EXPR
/* do/while/for */
||
TREE_CODE
(
target_stmt
)
==
SWITCH_EXPR
))
/* switch */
{
{
parse_error_context
(
wfl_operator
,
if
(
labeled_block
==
NULL_TREE
)
"`break' must be in loop or switch"
);
{
return
error_mark_node
;
if
(
bc_label
==
NULL_TREE
)
parse_error_context
(
wfl_operator
,
"`continue' must be in loop"
);
else
parse_error_context
(
wfl_operator
,
"continue label `%d' does not name a loop"
,
IDENTIFIER_POINTER
(
bc_label
));
return
error_mark_node
;
}
if
((
DECL_NAME
(
LABELED_BLOCK_LABEL
(
labeled_block
))
==
continue_identifier_node
)
&&
(
bc_label
==
NULL_TREE
||
TREE_CHAIN
(
labeled_block
)
==
bc_label
))
{
bc_label
=
labeled_block
;
break
;
}
}
}
/* If previously unlabeled, install the new found label */
if
(
is_unlabeled
)
EXIT_BLOCK_LABELED_BLOCK
(
node
)
=
bc_label
;
}
}
/* 14.14 The continue Statement */
else
if
(
!
bc_label
)
/* The continue statement must always target a loop, unnamed or not. */
else
{
{
if
(
TREE_CODE
(
target_stmt
)
!=
LOOP_EXPR
)
/* do/while/for */
for
(;;
labeled_block
=
TREE_CHAIN
(
labeled_block
))
{
{
parse_error_context
(
wfl_operator
,
"`continue' must be in loop"
);
if
(
labeled_block
==
NULL_TREE
)
return
error_mark_node
;
{
parse_error_context
(
wfl_operator
,
"`break' must be in loop or switch"
);
return
error_mark_node
;
}
target_stmt
=
LABELED_BLOCK_BODY
(
labeled_block
);
if
(
TREE_CODE
(
target_stmt
)
==
SWITCH_EXPR
||
TREE_CODE
(
target_stmt
)
==
LOOP_EXPR
)
{
bc_label
=
labeled_block
;
break
;
}
}
}
/* Everything looks good. We can fix the `continue' jump to go
at the place in the loop were the continue is. For unlabeled
continue, the continuation point is the current labeled
block, by construction. */
if
(
is_unlabeled
)
EXIT_BLOCK_LABELED_BLOCK
(
node
)
=
bc_label
=
ctxp
->
current_labeled_block
;
}
}
EXIT_BLOCK_LABELED_BLOCK
(
node
)
=
bc_label
;
CAN_COMPLETE_NORMALLY
(
bc_label
)
=
1
;
CAN_COMPLETE_NORMALLY
(
bc_label
)
=
1
;
/* Our break/continue don't return values. */
/* Our break/continue don't return values. */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment