sydparse 1.0.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/sydparse.y CHANGED
@@ -377,7 +377,7 @@ program : {
377
377
  void_expr(node->nd_head);
378
378
  }
379
379
  }
380
- vps->top = block_append(vps->top, $2);
380
+ vps->top = block_append(parse_state, vps->top, $2);
381
381
  //vps->top = NEW_SCOPE(block_append(vps->top, $2));
382
382
  rb_funcall(vps->self, rb_intern("local_finish"), 0);
383
383
 
@@ -397,7 +397,7 @@ bodystmt : compstmt
397
397
  }
398
398
  else if ($3) {
399
399
  rb_warn("else without rescue is useless");
400
- $$ = block_append($$, $3);
400
+ $$ = block_append(parse_state, $$, $3);
401
401
  }
402
402
  if ($4) {
403
403
  $$ = NEW_ENSURE($$, $4);
@@ -416,11 +416,11 @@ compstmt : stmts opt_terms
416
416
  stmts : none
417
417
  | stmt
418
418
  {
419
- $$ = newline_node($1);
419
+ $$ = newline_node(parse_state, $1);
420
420
  }
421
421
  | stmts terms stmt
422
422
  {
423
- $$ = block_append($1, newline_node($3));
423
+ $$ = block_append(parse_state, $1, newline_node(parse_state, $3));
424
424
  }
425
425
  | error stmt
426
426
  {
@@ -565,7 +565,7 @@ stmt : kALIAS fitem {vps->lex_state = EXPR_FNAME;} fitem
565
565
  args = NEW_LIST($6);
566
566
  if ($3 && nd_type($3) != NODE_ARRAY)
567
567
  $3 = NEW_LIST($3);
568
- $3 = list_append($3, NEW_NIL());
568
+ $3 = list_append(parse_state, $3, NEW_NIL());
569
569
  list_concat(args, $3);
570
570
  if ($5 == tOROP) {
571
571
  $5 = 0;
@@ -680,11 +680,11 @@ command_call : command
680
680
  block_command : block_call
681
681
  | block_call '.' operation2 command_args
682
682
  {
683
- $$ = new_call($1, $3, $4);
683
+ $$ = new_call(parse_state, $1, $3, $4);
684
684
  }
685
685
  | block_call tCOLON2 operation2 command_args
686
686
  {
687
- $$ = new_call($1, $3, $4);
687
+ $$ = new_call(parse_state, $1, $3, $4);
688
688
  }
689
689
  ;
690
690
 
@@ -705,12 +705,12 @@ cmd_brace_block : tLBRACE_ARG
705
705
 
706
706
  command : operation command_args %prec tLOWEST
707
707
  {
708
- $$ = new_fcall($1, $2);
708
+ $$ = new_fcall(parse_state, $1, $2);
709
709
  fixpos($$, $2);
710
710
  }
711
711
  | operation command_args cmd_brace_block
712
712
  {
713
- $$ = new_fcall($1, $2);
713
+ $$ = new_fcall(parse_state, $1, $2);
714
714
  if ($3) {
715
715
  if (nd_type($$) == NODE_BLOCK_PASS) {
716
716
  rb_compile_error("both block arg and actual block given");
@@ -722,12 +722,12 @@ command : operation command_args %prec tLOWEST
722
722
  }
723
723
  | primary_value '.' operation2 command_args %prec tLOWEST
724
724
  {
725
- $$ = new_call($1, $3, $4);
725
+ $$ = new_call(parse_state, $1, $3, $4);
726
726
  fixpos($$, $1);
727
727
  }
728
728
  | primary_value '.' operation2 command_args cmd_brace_block
729
729
  {
730
- $$ = new_call($1, $3, $4);
730
+ $$ = new_call(parse_state, $1, $3, $4);
731
731
  if ($5) {
732
732
  if (nd_type($$) == NODE_BLOCK_PASS) {
733
733
  rb_compile_error("both block arg and actual block given");
@@ -739,12 +739,12 @@ command : operation command_args %prec tLOWEST
739
739
  }
740
740
  | primary_value tCOLON2 operation2 command_args %prec tLOWEST
741
741
  {
742
- $$ = new_call($1, $3, $4);
742
+ $$ = new_call(parse_state, $1, $3, $4);
743
743
  fixpos($$, $1);
744
744
  }
745
745
  | primary_value tCOLON2 operation2 command_args cmd_brace_block
746
746
  {
747
- $$ = new_call($1, $3, $4);
747
+ $$ = new_call(parse_state, $1, $3, $4);
748
748
  if ($5) {
749
749
  if (nd_type($$) == NODE_BLOCK_PASS) {
750
750
  rb_compile_error("both block arg and actual block given");
@@ -756,12 +756,12 @@ command : operation command_args %prec tLOWEST
756
756
  }
757
757
  | kSUPER command_args
758
758
  {
759
- $$ = new_super($2);
759
+ $$ = new_super(parse_state, $2);
760
760
  fixpos($$, $2);
761
761
  }
762
762
  | kYIELD command_args
763
763
  {
764
- $$ = new_yield($2);
764
+ $$ = new_yield(parse_state, $2);
765
765
  fixpos($$, $2);
766
766
  }
767
767
  ;
@@ -786,7 +786,7 @@ mlhs_basic : mlhs_head
786
786
  }
787
787
  | mlhs_head mlhs_item
788
788
  {
789
- $$ = NEW_MASGN(list_append($1,$2), 0);
789
+ $$ = NEW_MASGN(list_append(parse_state, $1,$2), 0);
790
790
  }
791
791
  | mlhs_head tSTAR mlhs_node
792
792
  {
@@ -819,7 +819,7 @@ mlhs_head : mlhs_item ','
819
819
  }
820
820
  | mlhs_head mlhs_item ','
821
821
  {
822
- $$ = list_append($1, $2);
822
+ $$ = list_append(parse_state, $1, $2);
823
823
  }
824
824
  ;
825
825
 
@@ -947,7 +947,7 @@ undef_list : fitem
947
947
  }
948
948
  | undef_list ',' {vps->lex_state = EXPR_FNAME;} fitem
949
949
  {
950
- $$ = block_append($1, NEW_UNDEF($4));
950
+ $$ = block_append(parse_state, $1, NEW_UNDEF($4));
951
951
  }
952
952
  ;
953
953
 
@@ -1029,7 +1029,7 @@ arg : lhs '=' arg
1029
1029
  args = NEW_LIST($6);
1030
1030
  if ($3 && nd_type($3) != NODE_ARRAY)
1031
1031
  $3 = NEW_LIST($3);
1032
- $3 = list_append($3, NEW_NIL());
1032
+ $3 = list_append(parse_state, $3, NEW_NIL());
1033
1033
  list_concat(args, $3);
1034
1034
  if ($5 == tOROP) {
1035
1035
  $5 = 0;
@@ -1261,7 +1261,7 @@ aref_args : none
1261
1261
  | args ',' tSTAR arg opt_nl
1262
1262
  {
1263
1263
  value_expr($4);
1264
- $$ = arg_concat($1, $4);
1264
+ $$ = arg_concat(parse_state, $1, $4);
1265
1265
  }
1266
1266
  | assocs trailer
1267
1267
  {
@@ -1290,7 +1290,7 @@ paren_args : '(' none ')'
1290
1290
  | '(' args ',' block_call opt_nl ')'
1291
1291
  {
1292
1292
  rb_warn("parenthesize argument for future version");
1293
- $$ = list_append($2, $4);
1293
+ $$ = list_append(parse_state, $2, $4);
1294
1294
  }
1295
1295
  ;
1296
1296
 
@@ -1309,7 +1309,7 @@ call_args : command
1309
1309
  }
1310
1310
  | args ',' tSTAR arg_value opt_block_arg
1311
1311
  {
1312
- $$ = arg_concat($1, $4);
1312
+ $$ = arg_concat(parse_state, $1, $4);
1313
1313
  $$ = arg_blk_pass($$, $5);
1314
1314
  }
1315
1315
  | assocs opt_block_arg
@@ -1319,18 +1319,18 @@ call_args : command
1319
1319
  }
1320
1320
  | assocs ',' tSTAR arg_value opt_block_arg
1321
1321
  {
1322
- $$ = arg_concat(NEW_LIST(NEW_POSITIONAL($1)), $4);
1322
+ $$ = arg_concat(parse_state, NEW_LIST(NEW_POSITIONAL($1)), $4);
1323
1323
  $$ = arg_blk_pass($$, $5);
1324
1324
  }
1325
1325
  | args ',' assocs opt_block_arg
1326
1326
  {
1327
- $$ = list_append($1, NEW_POSITIONAL($3));
1327
+ $$ = list_append(parse_state, $1, NEW_POSITIONAL($3));
1328
1328
  $$ = arg_blk_pass($$, $4);
1329
1329
  }
1330
1330
  | args ',' assocs ',' tSTAR arg opt_block_arg
1331
1331
  {
1332
1332
  value_expr($6);
1333
- $$ = arg_concat(list_append($1, NEW_POSITIONAL($3)), $6);
1333
+ $$ = arg_concat(parse_state, list_append(parse_state, $1, NEW_POSITIONAL($3)), $6);
1334
1334
  $$ = arg_blk_pass($$, $7);
1335
1335
  }
1336
1336
  | tSTAR arg_value opt_block_arg
@@ -1350,12 +1350,12 @@ call_args2 : arg_value ',' args opt_block_arg
1350
1350
  }
1351
1351
  | arg_value ',' tSTAR arg_value opt_block_arg
1352
1352
  {
1353
- $$ = arg_concat(NEW_LIST($1), $4);
1353
+ $$ = arg_concat(parse_state, NEW_LIST($1), $4);
1354
1354
  $$ = arg_blk_pass($$, $5);
1355
1355
  }
1356
1356
  | arg_value ',' args ',' tSTAR arg_value opt_block_arg
1357
1357
  {
1358
- $$ = arg_concat(list_concat(NEW_LIST($1),$3), $6);
1358
+ $$ = arg_concat(parse_state, list_concat(NEW_LIST($1),$3), $6);
1359
1359
  $$ = arg_blk_pass($$, $7);
1360
1360
  }
1361
1361
  | assocs opt_block_arg
@@ -1365,27 +1365,27 @@ call_args2 : arg_value ',' args opt_block_arg
1365
1365
  }
1366
1366
  | assocs ',' tSTAR arg_value opt_block_arg
1367
1367
  {
1368
- $$ = arg_concat(NEW_LIST(NEW_POSITIONAL($1)), $4);
1368
+ $$ = arg_concat(parse_state, NEW_LIST(NEW_POSITIONAL($1)), $4);
1369
1369
  $$ = arg_blk_pass($$, $5);
1370
1370
  }
1371
1371
  | arg_value ',' assocs opt_block_arg
1372
1372
  {
1373
- $$ = list_append(NEW_LIST($1), NEW_POSITIONAL($3));
1373
+ $$ = list_append(parse_state, NEW_LIST($1), NEW_POSITIONAL($3));
1374
1374
  $$ = arg_blk_pass($$, $4);
1375
1375
  }
1376
1376
  | arg_value ',' args ',' assocs opt_block_arg
1377
1377
  {
1378
- $$ = list_append(list_concat(NEW_LIST($1),$3), NEW_POSITIONAL($5));
1378
+ $$ = list_append(parse_state, list_concat(NEW_LIST($1),$3), NEW_POSITIONAL($5));
1379
1379
  $$ = arg_blk_pass($$, $6);
1380
1380
  }
1381
1381
  | arg_value ',' assocs ',' tSTAR arg_value opt_block_arg
1382
1382
  {
1383
- $$ = arg_concat(list_append(NEW_LIST($1), NEW_POSITIONAL($3)), $6);
1383
+ $$ = arg_concat(parse_state, list_append(parse_state, NEW_LIST($1), NEW_POSITIONAL($3)), $6);
1384
1384
  $$ = arg_blk_pass($$, $7);
1385
1385
  }
1386
1386
  | arg_value ',' args ',' assocs ',' tSTAR arg_value opt_block_arg
1387
1387
  {
1388
- $$ = arg_concat(list_append(list_concat(NEW_LIST($1), $3), NEW_POSITIONAL($5)), $8);
1388
+ $$ = arg_concat(parse_state, list_append(parse_state, list_concat(NEW_LIST($1), $3), NEW_POSITIONAL($5)), $8);
1389
1389
  $$ = arg_blk_pass($$, $9);
1390
1390
  }
1391
1391
  | tSTAR arg_value opt_block_arg
@@ -1439,17 +1439,17 @@ args : arg_value
1439
1439
  }
1440
1440
  | args ',' arg_value
1441
1441
  {
1442
- $$ = list_append($1, $3);
1442
+ $$ = list_append(parse_state, $1, $3);
1443
1443
  }
1444
1444
  ;
1445
1445
 
1446
1446
  mrhs : args ',' arg_value
1447
1447
  {
1448
- $$ = list_append($1, $3);
1448
+ $$ = list_append(parse_state, $1, $3);
1449
1449
  }
1450
1450
  | args ',' tSTAR arg_value
1451
1451
  {
1452
- $$ = arg_concat($1, $4);
1452
+ $$ = arg_concat(parse_state, $1, $4);
1453
1453
  }
1454
1454
  | tSTAR arg_value
1455
1455
  {
@@ -1527,7 +1527,7 @@ primary : literal
1527
1527
  }
1528
1528
  | kYIELD '(' call_args ')'
1529
1529
  {
1530
- $$ = new_yield($3);
1530
+ $$ = new_yield(parse_state, $3);
1531
1531
  }
1532
1532
  | kYIELD '(' ')'
1533
1533
  {
@@ -1811,32 +1811,32 @@ block_call : command do_block
1811
1811
  }
1812
1812
  | block_call '.' operation2 opt_paren_args
1813
1813
  {
1814
- $$ = new_call($1, $3, $4);
1814
+ $$ = new_call(parse_state, $1, $3, $4);
1815
1815
  }
1816
1816
  | block_call tCOLON2 operation2 opt_paren_args
1817
1817
  {
1818
- $$ = new_call($1, $3, $4);
1818
+ $$ = new_call(parse_state, $1, $3, $4);
1819
1819
  }
1820
1820
  ;
1821
1821
 
1822
1822
  method_call : operation paren_args
1823
1823
  {
1824
- $$ = new_fcall($1, $2);
1824
+ $$ = new_fcall(parse_state, $1, $2);
1825
1825
  fixpos($$, $2);
1826
1826
  }
1827
1827
  | primary_value '.' operation2 opt_paren_args
1828
1828
  {
1829
- $$ = new_call($1, $3, $4);
1829
+ $$ = new_call(parse_state, $1, $3, $4);
1830
1830
  fixpos($$, $1);
1831
1831
  }
1832
1832
  | primary_value tCOLON2 operation2 paren_args
1833
1833
  {
1834
- $$ = new_call($1, $3, $4);
1834
+ $$ = new_call(parse_state, $1, $3, $4);
1835
1835
  fixpos($$, $1);
1836
1836
  }
1837
1837
  | primary_value tCOLON2 operation3
1838
1838
  {
1839
- $$ = new_call($1, $3, 0);
1839
+ $$ = new_call(parse_state, $1, $3, 0);
1840
1840
  }
1841
1841
  | primary_value '\\' operation2
1842
1842
  {
@@ -1848,7 +1848,7 @@ method_call : operation paren_args
1848
1848
  }
1849
1849
  | kSUPER paren_args
1850
1850
  {
1851
- $$ = new_super($2);
1851
+ $$ = new_super(parse_state, $2);
1852
1852
  }
1853
1853
  | kSUPER
1854
1854
  {
@@ -1892,7 +1892,7 @@ case_body : kWHEN when_args then
1892
1892
  when_args : args
1893
1893
  | args ',' tSTAR arg_value
1894
1894
  {
1895
- $$ = list_append($1, NEW_WHEN($4, 0, 0));
1895
+ $$ = list_append(parse_state, $1, NEW_WHEN($4, 0, 0));
1896
1896
  }
1897
1897
  | tSTAR arg_value
1898
1898
  {
@@ -1910,7 +1910,7 @@ opt_rescue : kRESCUE exc_list exc_var then
1910
1910
  {
1911
1911
  if ($3) {
1912
1912
  $3 = node_assign($3, NEW_GVAR(rb_intern("$!")), parse_state);
1913
- $5 = block_append($3, $5);
1913
+ $5 = block_append(parse_state, $3, $5);
1914
1914
  }
1915
1915
  $$ = NEW_RESBODY($2, $5, $6);
1916
1916
  fixpos($$, $2?$2:$5);
@@ -1959,7 +1959,7 @@ strings : string
1959
1959
  node = NEW_STR(rb_str_new(0, 0));
1960
1960
  }
1961
1961
  else {
1962
- node = evstr2dstr(node);
1962
+ node = evstr2dstr(parse_state, node);
1963
1963
  }
1964
1964
  $$ = node;
1965
1965
  }
@@ -1968,7 +1968,7 @@ strings : string
1968
1968
  string : string1
1969
1969
  | string string1
1970
1970
  {
1971
- $$ = literal_concat($1, $2);
1971
+ $$ = literal_concat(parse_state, $1, $2);
1972
1972
  }
1973
1973
  ;
1974
1974
 
@@ -2056,14 +2056,14 @@ word_list : /* none */
2056
2056
  }
2057
2057
  | word_list word ' '
2058
2058
  {
2059
- $$ = list_append($1, evstr2dstr($2));
2059
+ $$ = list_append(parse_state, $1, evstr2dstr(parse_state, $2));
2060
2060
  }
2061
2061
  ;
2062
2062
 
2063
2063
  word : string_content
2064
2064
  | word string_content
2065
2065
  {
2066
- $$ = literal_concat($1, $2);
2066
+ $$ = literal_concat(parse_state, $1, $2);
2067
2067
  }
2068
2068
  ;
2069
2069
 
@@ -2083,7 +2083,7 @@ qword_list : /* none */
2083
2083
  }
2084
2084
  | qword_list tSTRING_CONTENT ' '
2085
2085
  {
2086
- $$ = list_append($1, $2);
2086
+ $$ = list_append(parse_state, $1, $2);
2087
2087
  }
2088
2088
  ;
2089
2089
 
@@ -2093,7 +2093,7 @@ string_contents : /* none */
2093
2093
  }
2094
2094
  | string_contents string_content
2095
2095
  {
2096
- $$ = literal_concat($1, $2);
2096
+ $$ = literal_concat(parse_state, $1, $2);
2097
2097
  }
2098
2098
  ;
2099
2099
 
@@ -2103,7 +2103,7 @@ xstring_contents: /* none */
2103
2103
  }
2104
2104
  | xstring_contents string_content
2105
2105
  {
2106
- $$ = literal_concat($1, $2);
2106
+ $$ = literal_concat(parse_state, $1, $2);
2107
2107
  }
2108
2108
  ;
2109
2109
 
@@ -2134,9 +2134,9 @@ string_content : tSTRING_CONTENT
2134
2134
  CMDARG_LEXPOP();
2135
2135
  if (($$ = $3) && nd_type($$) == NODE_NEWLINE) {
2136
2136
  $$ = $$->nd_next;
2137
- rb_gc_force_recycle((VALUE)$3);
2137
+ // rb_gc_force_recycle((VALUE)$3);
2138
2138
  }
2139
- $$ = new_evstr($$);
2139
+ $$ = new_evstr(parse_state, $$);
2140
2140
  }
2141
2141
  ;
2142
2142
 
@@ -2255,38 +2255,38 @@ f_arglist : '(' f_args opt_nl ')'
2255
2255
  f_args : f_arg ',' f_optarg ',' f_rest_arg opt_f_block_arg
2256
2256
  {
2257
2257
  // printf("rest + all = %d\n", $5);
2258
- $$ = block_append(NEW_ARGS($1, $3, $5), $6);
2258
+ $$ = block_append(parse_state, NEW_ARGS($1, $3, $5), $6);
2259
2259
  }
2260
2260
  | f_arg ',' f_optarg opt_f_block_arg
2261
2261
  {
2262
- $$ = block_append(NEW_ARGS($1, $3, -1), $4);
2262
+ $$ = block_append(parse_state, NEW_ARGS($1, $3, -1), $4);
2263
2263
  }
2264
2264
  | f_arg ',' f_rest_arg opt_f_block_arg
2265
2265
  {
2266
2266
  // printf("arg + rest = %d\n", $3);
2267
- $$ = block_append(NEW_ARGS($1, 0, $3), $4);
2267
+ $$ = block_append(parse_state, NEW_ARGS($1, 0, $3), $4);
2268
2268
  }
2269
2269
  | f_arg opt_f_block_arg
2270
2270
  {
2271
- $$ = block_append(NEW_ARGS($1, 0, -1), $2);
2271
+ $$ = block_append(parse_state, NEW_ARGS($1, 0, -1), $2);
2272
2272
  }
2273
2273
  | f_optarg ',' f_rest_arg opt_f_block_arg
2274
2274
  {
2275
2275
  // printf("rest + opt = %d\n", $3);
2276
- $$ = block_append(NEW_ARGS(0, $1, $3), $4);
2276
+ $$ = block_append(parse_state, NEW_ARGS(0, $1, $3), $4);
2277
2277
  }
2278
2278
  | f_optarg opt_f_block_arg
2279
2279
  {
2280
- $$ = block_append(NEW_ARGS(0, $1, -1), $2);
2280
+ $$ = block_append(parse_state, NEW_ARGS(0, $1, -1), $2);
2281
2281
  }
2282
2282
  | f_rest_arg opt_f_block_arg
2283
2283
  {
2284
2284
  // printf("rest only = %d\n", $1);
2285
- $$ = block_append(NEW_ARGS(0, 0, $1), $2);
2285
+ $$ = block_append(parse_state, NEW_ARGS(0, 0, $1), $2);
2286
2286
  }
2287
2287
  | f_block_arg
2288
2288
  {
2289
- $$ = block_append(NEW_ARGS(0, 0, -1), $1);
2289
+ $$ = block_append(parse_state, NEW_ARGS(0, 0, -1), $1);
2290
2290
  }
2291
2291
  | /* none */
2292
2292
  {
@@ -2345,7 +2345,7 @@ f_optarg : f_opt
2345
2345
  }
2346
2346
  | f_optarg ',' f_opt
2347
2347
  {
2348
- $$ = block_append($1, $3);
2348
+ $$ = block_append(parse_state, $1, $3);
2349
2349
  }
2350
2350
  ;
2351
2351
 
@@ -2451,12 +2451,12 @@ assoc : assoc1
2451
2451
 
2452
2452
  assoc1 : arg_value tASSOC arg_value
2453
2453
  {
2454
- $$ = list_append(NEW_LIST($1), $3);
2454
+ $$ = list_append(parse_state, NEW_LIST($1), $3);
2455
2455
  }
2456
2456
  ;
2457
2457
  assoc2 : tKEYSYM arg_value
2458
2458
  {
2459
- $$ = list_append(NEW_LIST(NEW_LIT(ID2SYM($1))), $2);
2459
+ $$ = list_append(parse_state, NEW_LIST(NEW_LIT(ID2SYM($1))), $2);
2460
2460
  }
2461
2461
 
2462
2462
  operation : tIDENTIFIER
@@ -3214,7 +3214,7 @@ tokadd_string(func, term, paren, nest, parse_state)
3214
3214
  }
3215
3215
 
3216
3216
  #define NEW_STRTERM(func, term, paren) \
3217
- syd_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
3217
+ syd_node_newnode(parse_state, NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
3218
3218
  #define pslval ((YYSTYPE *)parse_state->lval)
3219
3219
  static int
3220
3220
  parse_string(quote, parse_state)
@@ -3322,7 +3322,7 @@ heredoc_identifier(rb_parse_state *parse_state)
3322
3322
  len = parse_state->lex_p - parse_state->lex_pbeg;
3323
3323
  parse_state->lex_p = parse_state->lex_pend;
3324
3324
  pslval->id = 0;
3325
- lex_strterm = syd_node_newnode(NODE_HEREDOC,
3325
+ lex_strterm = syd_node_newnode(parse_state, NODE_HEREDOC,
3326
3326
  rb_str_new(tok(), toklen()), /* nd_lit */
3327
3327
  len, /* nd_nth */
3328
3328
  parse_state->lex_lastline); /* nd_orig */
@@ -4667,14 +4667,19 @@ yylex(YYSTYPE *yylval, void *vstate)
4667
4667
  }
4668
4668
  }
4669
4669
 
4670
+ void *pt_allocate(rb_parse_state *st, int size);
4671
+
4670
4672
  NODE*
4671
- syd_node_newnode(type, a0, a1, a2)
4673
+ syd_node_newnode(st, type, a0, a1, a2)
4674
+ rb_parse_state *st;
4672
4675
  enum node_type type;
4673
4676
  VALUE a0, a1, a2;
4674
4677
  {
4675
- NODE *n = (NODE*)rb_newobj();
4678
+ NODE *n = (NODE*)pt_allocate(st, sizeof(NODE));
4679
+ // NODE *n = (NODE*)rb_newobj();
4676
4680
 
4677
- n->flags |= T_NODE;
4681
+ // n->flags |= T_NODE;
4682
+ n->flags = 0;
4678
4683
  nd_set_type(n, type);
4679
4684
  nd_set_line(n, ruby_sourceline);
4680
4685
  n->nd_file = ruby_sourcefile;
@@ -4704,7 +4709,8 @@ nodeline(node)
4704
4709
  #endif
4705
4710
 
4706
4711
  static NODE*
4707
- newline_node(node)
4712
+ newline_node(parse_state, node)
4713
+ rb_parse_state *parse_state;
4708
4714
  NODE *node;
4709
4715
  {
4710
4716
  NODE *nl = 0;
@@ -4751,7 +4757,8 @@ parser_warn(node, mesg)
4751
4757
  }
4752
4758
 
4753
4759
  static NODE*
4754
- block_append(head, tail)
4760
+ block_append(parse_state, head, tail)
4761
+ rb_parse_state *parse_state;
4755
4762
  NODE *head, *tail;
4756
4763
  {
4757
4764
  NODE *end, *h = head;
@@ -4811,7 +4818,8 @@ block_append(head, tail)
4811
4818
 
4812
4819
  /* append item to the list */
4813
4820
  static NODE*
4814
- list_append(list, item)
4821
+ list_append(parse_state, list, item)
4822
+ rb_parse_state *parse_state;
4815
4823
  NODE *list, *item;
4816
4824
  {
4817
4825
  NODE *last;
@@ -4858,7 +4866,8 @@ list_concat(head, tail)
4858
4866
 
4859
4867
  /* concat two string literals */
4860
4868
  static NODE *
4861
- literal_concat(head, tail)
4869
+ literal_concat(parse_state, head, tail)
4870
+ rb_parse_state *parse_state;
4862
4871
  NODE *head, *tail;
4863
4872
  {
4864
4873
  enum node_type htype;
@@ -4869,16 +4878,16 @@ literal_concat(head, tail)
4869
4878
  htype = nd_type(head);
4870
4879
  if (htype == NODE_EVSTR) {
4871
4880
  NODE *node = NEW_DSTR(rb_str_new(0, 0));
4872
- head = list_append(node, head);
4881
+ head = list_append(parse_state, node, head);
4873
4882
  }
4874
4883
  switch (nd_type(tail)) {
4875
4884
  case NODE_STR:
4876
4885
  if (htype == NODE_STR) {
4877
4886
  rb_str_concat(head->nd_lit, tail->nd_lit);
4878
- rb_gc_force_recycle((VALUE)tail);
4887
+ // rb_gc_force_recycle((VALUE)tail);
4879
4888
  }
4880
4889
  else {
4881
- list_append(head, tail);
4890
+ list_append(parse_state, head, tail);
4882
4891
  }
4883
4892
  break;
4884
4893
 
@@ -4886,7 +4895,7 @@ literal_concat(head, tail)
4886
4895
  if (htype == NODE_STR) {
4887
4896
  rb_str_concat(head->nd_lit, tail->nd_lit);
4888
4897
  tail->nd_lit = head->nd_lit;
4889
- rb_gc_force_recycle((VALUE)head);
4898
+ // rb_gc_force_recycle((VALUE)head);
4890
4899
  head = tail;
4891
4900
  }
4892
4901
  else {
@@ -4901,24 +4910,26 @@ literal_concat(head, tail)
4901
4910
  nd_set_type(head, NODE_DSTR);
4902
4911
  head->nd_alen = 1;
4903
4912
  }
4904
- list_append(head, tail);
4913
+ list_append(parse_state, head, tail);
4905
4914
  break;
4906
4915
  }
4907
4916
  return head;
4908
4917
  }
4909
4918
 
4910
4919
  static NODE *
4911
- evstr2dstr(node)
4920
+ evstr2dstr(parse_state, node)
4921
+ rb_parse_state *parse_state;
4912
4922
  NODE *node;
4913
4923
  {
4914
4924
  if (nd_type(node) == NODE_EVSTR) {
4915
- node = list_append(NEW_DSTR(rb_str_new(0, 0)), node);
4925
+ node = list_append(parse_state, NEW_DSTR(rb_str_new(0, 0)), node);
4916
4926
  }
4917
4927
  return node;
4918
4928
  }
4919
4929
 
4920
4930
  static NODE *
4921
- new_evstr(node)
4931
+ new_evstr(parse_state, node)
4932
+ rb_parse_state *parse_state;
4922
4933
  NODE *node;
4923
4934
  {
4924
4935
  NODE *head = node;
@@ -5217,7 +5228,8 @@ rb_backref_error(node)
5217
5228
  }
5218
5229
 
5219
5230
  static NODE *
5220
- arg_concat(node1, node2)
5231
+ arg_concat(parse_state, node1, node2)
5232
+ rb_parse_state *parse_state;
5221
5233
  NODE *node1;
5222
5234
  NODE *node2;
5223
5235
  {
@@ -5226,13 +5238,14 @@ arg_concat(node1, node2)
5226
5238
  }
5227
5239
 
5228
5240
  static NODE *
5229
- arg_add(node1, node2)
5241
+ arg_add(parse_state, node1, node2)
5242
+ rb_parse_state *parse_state;
5230
5243
  NODE *node1;
5231
5244
  NODE *node2;
5232
5245
  {
5233
5246
  if (!node1) return NEW_LIST(node2);
5234
5247
  if (nd_type(node1) == NODE_ARRAY) {
5235
- return list_append(node1, node2);
5248
+ return list_append(parse_state, node1, node2);
5236
5249
  }
5237
5250
  else {
5238
5251
  return NEW_ARGSPUSH(node1, node2);
@@ -5262,7 +5275,7 @@ node_assign(lhs, rhs, parse_state)
5262
5275
 
5263
5276
  case NODE_ATTRASGN:
5264
5277
  case NODE_CALL:
5265
- lhs->nd_args = arg_add(lhs->nd_args, rhs);
5278
+ lhs->nd_args = arg_add(parse_state, lhs->nd_args, rhs);
5266
5279
  break;
5267
5280
 
5268
5281
  default:
@@ -5698,7 +5711,8 @@ no_blockarg(node)
5698
5711
  }
5699
5712
 
5700
5713
  static NODE *
5701
- ret_args(node)
5714
+ ret_args(parse_state, node)
5715
+ rb_parse_state *parse_state;
5702
5716
  NODE *node;
5703
5717
  {
5704
5718
  if (node) {
@@ -5714,7 +5728,8 @@ ret_args(node)
5714
5728
  }
5715
5729
 
5716
5730
  static NODE *
5717
- new_yield(node)
5731
+ new_yield(parse_state, node)
5732
+ rb_parse_state *parse_state;
5718
5733
  NODE *node;
5719
5734
  {
5720
5735
  long state = Qtrue;
@@ -5768,7 +5783,8 @@ arg_blk_pass(node1, node2)
5768
5783
  }
5769
5784
 
5770
5785
  static NODE*
5771
- arg_prepend(node1, node2)
5786
+ arg_prepend(parse_state, node1, node2)
5787
+ rb_parse_state *parse_state;
5772
5788
  NODE *node1, *node2;
5773
5789
  {
5774
5790
  switch (nd_type(node2)) {
@@ -5776,10 +5792,10 @@ arg_prepend(node1, node2)
5776
5792
  return list_concat(NEW_LIST(node1), node2);
5777
5793
 
5778
5794
  case NODE_SPLAT:
5779
- return arg_concat(node1, node2->nd_head);
5795
+ return arg_concat(parse_state, node1, node2->nd_head);
5780
5796
 
5781
5797
  case NODE_BLOCK_PASS:
5782
- node2->nd_body = arg_prepend(node1, node2->nd_body);
5798
+ node2->nd_body = arg_prepend(parse_state, node1, node2->nd_body);
5783
5799
  return node2;
5784
5800
 
5785
5801
  default:
@@ -5789,7 +5805,8 @@ arg_prepend(node1, node2)
5789
5805
  }
5790
5806
 
5791
5807
  static NODE*
5792
- new_call(r,m,a)
5808
+ new_call(parse_state, r,m,a)
5809
+ rb_parse_state *parse_state;
5793
5810
  NODE *r;
5794
5811
  ID m;
5795
5812
  NODE *a;
@@ -5802,7 +5819,8 @@ new_call(r,m,a)
5802
5819
  }
5803
5820
 
5804
5821
  static NODE*
5805
- new_fcall(m,a)
5822
+ new_fcall(parse_state, m,a)
5823
+ rb_parse_state *parse_state;
5806
5824
  ID m;
5807
5825
  NODE *a;
5808
5826
  {
@@ -5814,7 +5832,8 @@ new_fcall(m,a)
5814
5832
  }
5815
5833
 
5816
5834
  static NODE*
5817
- new_super(a)
5835
+ new_super(parse_state,a)
5836
+ rb_parse_state *parse_state;
5818
5837
  NODE *a;
5819
5838
  {
5820
5839
  if (a && nd_type(a) == NODE_BLOCK_PASS) {
@@ -6072,10 +6091,13 @@ syd_dyna_init(st, node, pre)
6072
6091
  VALUE pre;
6073
6092
  {
6074
6093
  VALUE vars;
6094
+ rb_parse_state *parse_state;
6075
6095
  int i;
6076
6096
  // struct RVarmap *post = ruby_dyna_vars;
6077
6097
  NODE *var, *out;
6078
6098
 
6099
+ parse_state = st;
6100
+
6079
6101
  if (!node) return node;
6080
6102
 
6081
6103
  vars = rb_funcall(st->self, rb_intern("dyna_init"), 1, pre);
@@ -6091,7 +6113,7 @@ syd_dyna_init(st, node, pre)
6091
6113
  var = NEW_DASGN_CURR(post->id, var);
6092
6114
  }
6093
6115
  */
6094
- out = block_append(var, node);
6116
+ out = block_append(st, var, node);
6095
6117
  return out;
6096
6118
  }
6097
6119
 
@@ -6424,4 +6446,4 @@ rb_lastline_set(val)
6424
6446
  special_local_set('_', val);
6425
6447
  }
6426
6448
  }
6427
- */
6449
+ */