delorean_lang 0.4.2 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e28b88960385dcb51187a4ad4aa9f6449ba7d2ab3bf2d156954136466ba783a
4
- data.tar.gz: 04c88ebab877fa9ee7e623246954a3734f3d28400e35316f52da930015b135df
3
+ metadata.gz: 9ee6c299a28d2661c437cfc0553212fea130fd66ecf24c0ffee3e107862c39cf
4
+ data.tar.gz: c4e175afaddad9ef6ec2f8c8f38627b0ccae1dc0221750c330fee618eede8797
5
5
  SHA512:
6
- metadata.gz: 99a1c358f6fb77804cfb434d683721080d3fdfec500f757b50c62e6c6393e32cd082ceac78cf76735b520c4e06282199a178a34cc48a13aa0dd5dce4b84af033
7
- data.tar.gz: b4413fd38b79db395ccd53b150e8f667809969235def188142ef55ee7e841ae1e6020d1adf32f5314815be6d08801ef825f90cc2aa571f606594d88483f835b8
6
+ metadata.gz: 40e755c1bc18b01c98a91954dd7b1885c3b36d807cd596fe6c867f94a8194d8475d3e0e5bc6784a7b64af40e4f55d39f125e3bcd63b020e163b18c95f5e24392
7
+ data.tar.gz: ad92b4bca8c7707fb3995799eb1de2b838972be97da2934d51f32dd2bc97c59f6f40dedf44be9f60ad74711bdb4eed4c8d6c557035d0e7d6765afacc53bbee9b
data/lib/delorean/base.rb CHANGED
@@ -94,7 +94,7 @@ module Delorean
94
94
  # This is pretty awful. NOTE: can't sanitize params as Marty
95
95
  # patches NodeCall and modifies params to send _parent_id.
96
96
  # This whole thing needs to be redone.
97
- @cp ||= params.clone
97
+ @cp ||= Hash[params]
98
98
  end
99
99
 
100
100
  def evaluate(attr)
@@ -258,12 +258,7 @@ module Delorean
258
258
  s.detect {|sc| sc && ai.class <= sc}
259
259
  end
260
260
 
261
- res = obj.send(msg, *args)
262
- # FIXME: can't freeze AR relations since then we can't chain
263
- # calls (e.g. the chaining modifies the relation object. Not
264
- # sure what this side-effect means. Delorean code which
265
- # perform queries on queries seems to work.
266
- (ActiveRecord::Relation === res || Class === res) ? res : res.freeze
261
+ obj.send(msg, *args)
267
262
  end
268
263
 
269
264
  ######################################################################
@@ -914,19 +914,19 @@ module Delorean
914
914
  end
915
915
 
916
916
  module DotExp1
917
- def al
917
+ def i
918
918
  elements[2]
919
919
  end
920
920
 
921
+ def al
922
+ elements[5]
923
+ end
924
+
921
925
  end
922
926
 
923
927
  module DotExp2
924
- def i
925
- elements[2]
926
- end
927
-
928
928
  def al
929
- elements[5]
929
+ elements[2]
930
930
  end
931
931
 
932
932
  end
@@ -1002,11 +1002,11 @@ module Delorean
1002
1002
  r0 = r1
1003
1003
  else
1004
1004
  i9, s9 = index, []
1005
- if (match_len = has_terminal?('(', false, index))
1005
+ if (match_len = has_terminal?('.', false, index))
1006
1006
  r10 = true
1007
1007
  @index += match_len
1008
1008
  else
1009
- terminal_parse_failure('\'(\'')
1009
+ terminal_parse_failure('\'.\'')
1010
1010
  r10 = nil
1011
1011
  end
1012
1012
  s9 << r10
@@ -1019,36 +1019,59 @@ module Delorean
1019
1019
  end
1020
1020
  s9 << r11
1021
1021
  if r11
1022
- r14 = _nt_kw_args
1023
- if r14
1024
- r13 = r14
1025
- else
1026
- r13 = instantiate_node(SyntaxNode,input, index...index)
1027
- end
1022
+ r13 = _nt_identifier
1028
1023
  s9 << r13
1029
1024
  if r13
1030
- r16 = _nt_sp
1031
- if r16
1032
- r15 = r16
1025
+ if (match_len = has_terminal?('(', false, index))
1026
+ r14 = true
1027
+ @index += match_len
1033
1028
  else
1034
- r15 = instantiate_node(SyntaxNode,input, index...index)
1029
+ terminal_parse_failure('\'(\'')
1030
+ r14 = nil
1035
1031
  end
1036
- s9 << r15
1037
- if r15
1038
- if (match_len = has_terminal?(')', false, index))
1039
- r17 = true
1040
- @index += match_len
1032
+ s9 << r14
1033
+ if r14
1034
+ r16 = _nt_sp
1035
+ if r16
1036
+ r15 = r16
1041
1037
  else
1042
- terminal_parse_failure('\')\'')
1043
- r17 = nil
1038
+ r15 = instantiate_node(SyntaxNode,input, index...index)
1039
+ end
1040
+ s9 << r15
1041
+ if r15
1042
+ r18 = _nt_fn_args
1043
+ if r18
1044
+ r17 = r18
1045
+ else
1046
+ r17 = instantiate_node(SyntaxNode,input, index...index)
1047
+ end
1048
+ s9 << r17
1049
+ if r17
1050
+ r20 = _nt_sp
1051
+ if r20
1052
+ r19 = r20
1053
+ else
1054
+ r19 = instantiate_node(SyntaxNode,input, index...index)
1055
+ end
1056
+ s9 << r19
1057
+ if r19
1058
+ if (match_len = has_terminal?(')', false, index))
1059
+ r21 = true
1060
+ @index += match_len
1061
+ else
1062
+ terminal_parse_failure('\')\'')
1063
+ r21 = nil
1064
+ end
1065
+ s9 << r21
1066
+ end
1067
+ end
1044
1068
  end
1045
- s9 << r17
1046
1069
  end
1047
1070
  end
1048
1071
  end
1049
1072
  end
1050
1073
  if s9.last
1051
- r9 = instantiate_node(NodeCall,input, i9...index, s9)
1074
+ r9 = instantiate_node(Call,input, i9...index, s9)
1052
1075
  r9.extend(DotExp1)
1053
1076
  else
1054
1077
  @index = i9
@@ -1058,85 +1081,62 @@ module Delorean
1058
1081
  r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
1059
1082
  r0 = r9
1060
1083
  else
1061
- i18, s18 = index, []
1062
- if (match_len = has_terminal?('.', false, index))
1063
- r19 = true
1084
+ i22, s22 = index, []
1085
+ if (match_len = has_terminal?('(', false, index))
1086
+ r23 = true
1064
1087
  @index += match_len
1065
1088
  else
1066
- terminal_parse_failure('\'.\'')
1067
- r19 = nil
1068
- end
1069
- s18 << r19
1070
- if r19
1071
- r21 = _nt_sp
1072
- if r21
1073
- r20 = r21
1089
+ terminal_parse_failure('\'(\'')
1090
+ r23 = nil
1091
+ end
1092
+ s22 << r23
1093
+ if r23
1094
+ r25 = _nt_sp
1095
+ if r25
1096
+ r24 = r25
1074
1097
  else
1075
- r20 = instantiate_node(SyntaxNode,input, index...index)
1076
- end
1077
- s18 << r20
1078
- if r20
1079
- r22 = _nt_identifier
1080
- s18 << r22
1081
- if r22
1082
- if (match_len = has_terminal?('(', false, index))
1083
- r23 = true
1084
- @index += match_len
1098
+ r24 = instantiate_node(SyntaxNode,input, index...index)
1099
+ end
1100
+ s22 << r24
1101
+ if r24
1102
+ r27 = _nt_kw_args
1103
+ if r27
1104
+ r26 = r27
1105
+ else
1106
+ r26 = instantiate_node(SyntaxNode,input, index...index)
1107
+ end
1108
+ s22 << r26
1109
+ if r26
1110
+ r29 = _nt_sp
1111
+ if r29
1112
+ r28 = r29
1085
1113
  else
1086
- terminal_parse_failure('\'(\'')
1087
- r23 = nil
1114
+ r28 = instantiate_node(SyntaxNode,input, index...index)
1088
1115
  end
1089
- s18 << r23
1090
- if r23
1091
- r25 = _nt_sp
1092
- if r25
1093
- r24 = r25
1116
+ s22 << r28
1117
+ if r28
1118
+ if (match_len = has_terminal?(')', false, index))
1119
+ r30 = true
1120
+ @index += match_len
1094
1121
  else
1095
- r24 = instantiate_node(SyntaxNode,input, index...index)
1096
- end
1097
- s18 << r24
1098
- if r24
1099
- r27 = _nt_kw_args
1100
- if r27
1101
- r26 = r27
1102
- else
1103
- r26 = instantiate_node(SyntaxNode,input, index...index)
1104
- end
1105
- s18 << r26
1106
- if r26
1107
- r29 = _nt_sp
1108
- if r29
1109
- r28 = r29
1110
- else
1111
- r28 = instantiate_node(SyntaxNode,input, index...index)
1112
- end
1113
- s18 << r28
1114
- if r28
1115
- if (match_len = has_terminal?(')', false, index))
1116
- r30 = true
1117
- @index += match_len
1118
- else
1119
- terminal_parse_failure('\')\'')
1120
- r30 = nil
1121
- end
1122
- s18 << r30
1123
- end
1124
- end
1122
+ terminal_parse_failure('\')\'')
1123
+ r30 = nil
1125
1124
  end
1125
+ s22 << r30
1126
1126
  end
1127
1127
  end
1128
1128
  end
1129
1129
  end
1130
- if s18.last
1131
- r18 = instantiate_node(Call,input, i18...index, s18)
1132
- r18.extend(DotExp2)
1130
+ if s22.last
1131
+ r22 = instantiate_node(NodeCall,input, i22...index, s22)
1132
+ r22.extend(DotExp2)
1133
1133
  else
1134
- @index = i18
1135
- r18 = nil
1134
+ @index = i22
1135
+ r22 = nil
1136
1136
  end
1137
- if r18
1138
- r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true
1139
- r0 = r18
1137
+ if r22
1138
+ r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true
1139
+ r0 = r22
1140
1140
  else
1141
1141
  i31, s31 = index, []
1142
1142
  if (match_len = has_terminal?('.', false, index))
@@ -2749,12 +2749,58 @@ module Delorean
2749
2749
  end
2750
2750
 
2751
2751
  module HashArgs0
2752
+ def sp
2753
+ elements[1]
2754
+ end
2755
+
2756
+ def e3
2757
+ elements[2]
2758
+ end
2759
+
2760
+ end
2761
+
2762
+ module HashArgs1
2752
2763
  def al
2753
2764
  elements[3]
2754
2765
  end
2755
2766
  end
2756
2767
 
2757
- module HashArgs1
2768
+ module HashArgs2
2769
+ def splat
2770
+ elements[0]
2771
+ end
2772
+
2773
+ def e0
2774
+ elements[1]
2775
+ end
2776
+
2777
+ def ifexp
2778
+ elements[3]
2779
+ end
2780
+
2781
+ def args_rest
2782
+ elements[4]
2783
+ end
2784
+ end
2785
+
2786
+ module HashArgs3
2787
+ def sp
2788
+ elements[1]
2789
+ end
2790
+
2791
+ def e3
2792
+ elements[2]
2793
+ end
2794
+
2795
+ end
2796
+
2797
+ module HashArgs4
2798
+ def al
2799
+ elements[3]
2800
+ end
2801
+ end
2802
+
2803
+ module HashArgs5
2758
2804
  def e0
2759
2805
  elements[0]
2760
2806
  end
@@ -2763,8 +2809,12 @@ module Delorean
2763
2809
  elements[4]
2764
2810
  end
2765
2811
 
2812
+ def ifexp
2813
+ elements[6]
2814
+ end
2815
+
2766
2816
  def args_rest
2767
- elements[5]
2817
+ elements[7]
2768
2818
  end
2769
2819
  end
2770
2820
 
@@ -2779,98 +2829,282 @@ module Delorean
2779
2829
  return cached
2780
2830
  end
2781
2831
 
2782
- i0, s0 = index, []
2783
- r1 = _nt_expression
2784
- s0 << r1
2785
- if r1
2786
- r3 = _nt_sp
2832
+ i0 = index
2833
+ i1, s1 = index, []
2834
+ if (match_len = has_terminal?('**', false, index))
2835
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2836
+ @index += match_len
2837
+ else
2838
+ terminal_parse_failure('\'**\'')
2839
+ r2 = nil
2840
+ end
2841
+ s1 << r2
2842
+ if r2
2843
+ r3 = _nt_expression
2844
+ s1 << r3
2787
2845
  if r3
2788
- r2 = r3
2789
- else
2790
- r2 = instantiate_node(SyntaxNode,input, index...index)
2791
- end
2792
- s0 << r2
2793
- if r2
2794
- if (match_len = has_terminal?(':', false, index))
2795
- r4 = true
2796
- @index += match_len
2846
+ r5 = _nt_sp
2847
+ if r5
2848
+ r4 = r5
2797
2849
  else
2798
- terminal_parse_failure('\':\'')
2799
- r4 = nil
2850
+ r4 = instantiate_node(SyntaxNode,input, index...index)
2800
2851
  end
2801
- s0 << r4
2852
+ s1 << r4
2802
2853
  if r4
2803
- r6 = _nt_sp
2804
- if r6
2805
- r5 = r6
2854
+ i7, s7 = index, []
2855
+ if (match_len = has_terminal?('if', false, index))
2856
+ r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2857
+ @index += match_len
2806
2858
  else
2807
- r5 = instantiate_node(SyntaxNode,input, index...index)
2859
+ terminal_parse_failure('\'if\'')
2860
+ r8 = nil
2808
2861
  end
2809
- s0 << r5
2810
- if r5
2811
- r7 = _nt_expression
2812
- s0 << r7
2813
- if r7
2814
- i9, s9 = index, []
2815
- r11 = _nt_sp
2816
- if r11
2817
- r10 = r11
2862
+ s7 << r8
2863
+ if r8
2864
+ r9 = _nt_sp
2865
+ s7 << r9
2866
+ if r9
2867
+ r10 = _nt_expression
2868
+ s7 << r10
2869
+ if r10
2870
+ r12 = _nt_sp
2871
+ if r12
2872
+ r11 = r12
2873
+ else
2874
+ r11 = instantiate_node(SyntaxNode,input, index...index)
2875
+ end
2876
+ s7 << r11
2877
+ end
2878
+ end
2879
+ end
2880
+ if s7.last
2881
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
2882
+ r7.extend(HashArgs0)
2883
+ else
2884
+ @index = i7
2885
+ r7 = nil
2886
+ end
2887
+ if r7
2888
+ r6 = r7
2889
+ else
2890
+ r6 = instantiate_node(SyntaxNode,input, index...index)
2891
+ end
2892
+ s1 << r6
2893
+ if r6
2894
+ i14, s14 = index, []
2895
+ r16 = _nt_sp
2896
+ if r16
2897
+ r15 = r16
2898
+ else
2899
+ r15 = instantiate_node(SyntaxNode,input, index...index)
2900
+ end
2901
+ s14 << r15
2902
+ if r15
2903
+ if (match_len = has_terminal?(',', false, index))
2904
+ r17 = true
2905
+ @index += match_len
2818
2906
  else
2819
- r10 = instantiate_node(SyntaxNode,input, index...index)
2907
+ terminal_parse_failure('\',\'')
2908
+ r17 = nil
2820
2909
  end
2821
- s9 << r10
2822
- if r10
2823
- if (match_len = has_terminal?(',', false, index))
2824
- r12 = true
2825
- @index += match_len
2910
+ s14 << r17
2911
+ if r17
2912
+ r19 = _nt_sp
2913
+ if r19
2914
+ r18 = r19
2826
2915
  else
2827
- terminal_parse_failure('\',\'')
2828
- r12 = nil
2916
+ r18 = instantiate_node(SyntaxNode,input, index...index)
2829
2917
  end
2830
- s9 << r12
2831
- if r12
2832
- r14 = _nt_sp
2833
- if r14
2834
- r13 = r14
2918
+ s14 << r18
2919
+ if r18
2920
+ r21 = _nt_hash_args
2921
+ if r21
2922
+ r20 = r21
2923
+ else
2924
+ r20 = instantiate_node(SyntaxNode,input, index...index)
2925
+ end
2926
+ s14 << r20
2927
+ end
2928
+ end
2929
+ end
2930
+ if s14.last
2931
+ r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
2932
+ r14.extend(HashArgs1)
2933
+ else
2934
+ @index = i14
2935
+ r14 = nil
2936
+ end
2937
+ if r14
2938
+ r13 = r14
2939
+ else
2940
+ r13 = instantiate_node(SyntaxNode,input, index...index)
2941
+ end
2942
+ s1 << r13
2943
+ end
2944
+ end
2945
+ end
2946
+ end
2947
+ if s1.last
2948
+ r1 = instantiate_node(HashArgs,input, i1...index, s1)
2949
+ r1.extend(HashArgs2)
2950
+ else
2951
+ @index = i1
2952
+ r1 = nil
2953
+ end
2954
+ if r1
2955
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2956
+ r0 = r1
2957
+ else
2958
+ i22, s22 = index, []
2959
+ r23 = _nt_expression
2960
+ s22 << r23
2961
+ if r23
2962
+ r25 = _nt_sp
2963
+ if r25
2964
+ r24 = r25
2965
+ else
2966
+ r24 = instantiate_node(SyntaxNode,input, index...index)
2967
+ end
2968
+ s22 << r24
2969
+ if r24
2970
+ if (match_len = has_terminal?(':', false, index))
2971
+ r26 = true
2972
+ @index += match_len
2973
+ else
2974
+ terminal_parse_failure('\':\'')
2975
+ r26 = nil
2976
+ end
2977
+ s22 << r26
2978
+ if r26
2979
+ r28 = _nt_sp
2980
+ if r28
2981
+ r27 = r28
2982
+ else
2983
+ r27 = instantiate_node(SyntaxNode,input, index...index)
2984
+ end
2985
+ s22 << r27
2986
+ if r27
2987
+ r29 = _nt_expression
2988
+ s22 << r29
2989
+ if r29
2990
+ r31 = _nt_sp
2991
+ if r31
2992
+ r30 = r31
2993
+ else
2994
+ r30 = instantiate_node(SyntaxNode,input, index...index)
2995
+ end
2996
+ s22 << r30
2997
+ if r30
2998
+ i33, s33 = index, []
2999
+ if (match_len = has_terminal?('if', false, index))
3000
+ r34 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3001
+ @index += match_len
3002
+ else
3003
+ terminal_parse_failure('\'if\'')
3004
+ r34 = nil
3005
+ end
3006
+ s33 << r34
3007
+ if r34
3008
+ r35 = _nt_sp
3009
+ s33 << r35
3010
+ if r35
3011
+ r36 = _nt_expression
3012
+ s33 << r36
3013
+ if r36
3014
+ r38 = _nt_sp
3015
+ if r38
3016
+ r37 = r38
3017
+ else
3018
+ r37 = instantiate_node(SyntaxNode,input, index...index)
3019
+ end
3020
+ s33 << r37
3021
+ end
3022
+ end
3023
+ end
3024
+ if s33.last
3025
+ r33 = instantiate_node(SyntaxNode,input, i33...index, s33)
3026
+ r33.extend(HashArgs3)
3027
+ else
3028
+ @index = i33
3029
+ r33 = nil
3030
+ end
3031
+ if r33
3032
+ r32 = r33
2835
3033
  else
2836
- r13 = instantiate_node(SyntaxNode,input, index...index)
3034
+ r32 = instantiate_node(SyntaxNode,input, index...index)
2837
3035
  end
2838
- s9 << r13
2839
- if r13
2840
- r16 = _nt_hash_args
2841
- if r16
2842
- r15 = r16
3036
+ s22 << r32
3037
+ if r32
3038
+ i40, s40 = index, []
3039
+ r42 = _nt_sp
3040
+ if r42
3041
+ r41 = r42
3042
+ else
3043
+ r41 = instantiate_node(SyntaxNode,input, index...index)
3044
+ end
3045
+ s40 << r41
3046
+ if r41
3047
+ if (match_len = has_terminal?(',', false, index))
3048
+ r43 = true
3049
+ @index += match_len
3050
+ else
3051
+ terminal_parse_failure('\',\'')
3052
+ r43 = nil
3053
+ end
3054
+ s40 << r43
3055
+ if r43
3056
+ r45 = _nt_sp
3057
+ if r45
3058
+ r44 = r45
3059
+ else
3060
+ r44 = instantiate_node(SyntaxNode,input, index...index)
3061
+ end
3062
+ s40 << r44
3063
+ if r44
3064
+ r47 = _nt_hash_args
3065
+ if r47
3066
+ r46 = r47
3067
+ else
3068
+ r46 = instantiate_node(SyntaxNode,input, index...index)
3069
+ end
3070
+ s40 << r46
3071
+ end
3072
+ end
3073
+ end
3074
+ if s40.last
3075
+ r40 = instantiate_node(SyntaxNode,input, i40...index, s40)
3076
+ r40.extend(HashArgs4)
3077
+ else
3078
+ @index = i40
3079
+ r40 = nil
3080
+ end
3081
+ if r40
3082
+ r39 = r40
2843
3083
  else
2844
- r15 = instantiate_node(SyntaxNode,input, index...index)
3084
+ r39 = instantiate_node(SyntaxNode,input, index...index)
2845
3085
  end
2846
- s9 << r15
3086
+ s22 << r39
2847
3087
  end
2848
3088
  end
2849
3089
  end
2850
- if s9.last
2851
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2852
- r9.extend(HashArgs0)
2853
- else
2854
- @index = i9
2855
- r9 = nil
2856
- end
2857
- if r9
2858
- r8 = r9
2859
- else
2860
- r8 = instantiate_node(SyntaxNode,input, index...index)
2861
- end
2862
- s0 << r8
2863
3090
  end
2864
3091
  end
2865
3092
  end
2866
3093
  end
2867
- end
2868
- if s0.last
2869
- r0 = instantiate_node(HashArgs,input, i0...index, s0)
2870
- r0.extend(HashArgs1)
2871
- else
2872
- @index = i0
2873
- r0 = nil
3094
+ if s22.last
3095
+ r22 = instantiate_node(HashArgs,input, i22...index, s22)
3096
+ r22.extend(HashArgs5)
3097
+ else
3098
+ @index = i22
3099
+ r22 = nil
3100
+ end
3101
+ if r22
3102
+ r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true
3103
+ r0 = r22
3104
+ else
3105
+ @index = i0
3106
+ r0 = nil
3107
+ end
2874
3108
  end
2875
3109
 
2876
3110
  node_cache[:hash_args][start_index] = r0
@@ -2879,8 +3113,12 @@ module Delorean
2879
3113
  end
2880
3114
 
2881
3115
  module KwArgs0
2882
- def i
2883
- elements[0]
3116
+ def sp
3117
+ elements[1]
3118
+ end
3119
+
3120
+ def e3
3121
+ elements[2]
2884
3122
  end
2885
3123
 
2886
3124
  end
@@ -2892,7 +3130,7 @@ module Delorean
2892
3130
  end
2893
3131
 
2894
3132
  module KwArgs2
2895
- def k
3133
+ def splat
2896
3134
  elements[0]
2897
3135
  end
2898
3136
 
@@ -2900,9 +3138,55 @@ module Delorean
2900
3138
  elements[1]
2901
3139
  end
2902
3140
 
3141
+ def ifexp
3142
+ elements[3]
3143
+ end
3144
+
2903
3145
  def args_rest
3146
+ elements[4]
3147
+ end
3148
+ end
3149
+
3150
+ module KwArgs3
3151
+ def i
3152
+ elements[0]
3153
+ end
3154
+
3155
+ end
3156
+
3157
+ module KwArgs4
3158
+ def sp
3159
+ elements[1]
3160
+ end
3161
+
3162
+ def e3
2904
3163
  elements[2]
2905
3164
  end
3165
+
3166
+ end
3167
+
3168
+ module KwArgs5
3169
+ def al
3170
+ elements[3]
3171
+ end
3172
+ end
3173
+
3174
+ module KwArgs6
3175
+ def k
3176
+ elements[0]
3177
+ end
3178
+
3179
+ def arg0
3180
+ elements[1]
3181
+ end
3182
+
3183
+ def ifexp
3184
+ elements[3]
3185
+ end
3186
+
3187
+ def args_rest
3188
+ elements[4]
3189
+ end
2906
3190
  end
2907
3191
 
2908
3192
  def _nt_kw_args
@@ -2916,112 +3200,296 @@ module Delorean
2916
3200
  return cached
2917
3201
  end
2918
3202
 
2919
- i0, s0 = index, []
2920
- i2, s2 = index, []
2921
- r3 = _nt_identifier
2922
- s2 << r3
2923
- if r3
2924
- r5 = _nt_sp
2925
- if r5
2926
- r4 = r5
2927
- else
2928
- r4 = instantiate_node(SyntaxNode,input, index...index)
2929
- end
2930
- s2 << r4
2931
- if r4
2932
- if (match_len = has_terminal?('=', false, index))
2933
- r6 = true
2934
- @index += match_len
2935
- else
2936
- terminal_parse_failure('\'=\'')
2937
- r6 = nil
2938
- end
2939
- s2 << r6
2940
- if r6
2941
- r8 = _nt_sp
2942
- if r8
2943
- r7 = r8
2944
- else
2945
- r7 = instantiate_node(SyntaxNode,input, index...index)
2946
- end
2947
- s2 << r7
2948
- end
2949
- end
2950
- end
2951
- if s2.last
2952
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2953
- r2.extend(KwArgs0)
3203
+ i0 = index
3204
+ i1, s1 = index, []
3205
+ if (match_len = has_terminal?('**', false, index))
3206
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3207
+ @index += match_len
2954
3208
  else
2955
- @index = i2
3209
+ terminal_parse_failure('\'**\'')
2956
3210
  r2 = nil
2957
3211
  end
3212
+ s1 << r2
2958
3213
  if r2
2959
- r1 = r2
2960
- else
2961
- r1 = instantiate_node(SyntaxNode,input, index...index)
2962
- end
2963
- s0 << r1
2964
- if r1
2965
- r9 = _nt_expression
2966
- s0 << r9
2967
- if r9
2968
- i11, s11 = index, []
2969
- r13 = _nt_sp
2970
- if r13
2971
- r12 = r13
3214
+ r3 = _nt_expression
3215
+ s1 << r3
3216
+ if r3
3217
+ r5 = _nt_sp
3218
+ if r5
3219
+ r4 = r5
2972
3220
  else
2973
- r12 = instantiate_node(SyntaxNode,input, index...index)
3221
+ r4 = instantiate_node(SyntaxNode,input, index...index)
2974
3222
  end
2975
- s11 << r12
2976
- if r12
2977
- if (match_len = has_terminal?(',', false, index))
2978
- r14 = true
3223
+ s1 << r4
3224
+ if r4
3225
+ i7, s7 = index, []
3226
+ if (match_len = has_terminal?('if', false, index))
3227
+ r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2979
3228
  @index += match_len
2980
3229
  else
2981
- terminal_parse_failure('\',\'')
2982
- r14 = nil
3230
+ terminal_parse_failure('\'if\'')
3231
+ r8 = nil
2983
3232
  end
2984
- s11 << r14
2985
- if r14
3233
+ s7 << r8
3234
+ if r8
3235
+ r9 = _nt_sp
3236
+ s7 << r9
3237
+ if r9
3238
+ r10 = _nt_expression
3239
+ s7 << r10
3240
+ if r10
3241
+ r12 = _nt_sp
3242
+ if r12
3243
+ r11 = r12
3244
+ else
3245
+ r11 = instantiate_node(SyntaxNode,input, index...index)
3246
+ end
3247
+ s7 << r11
3248
+ end
3249
+ end
3250
+ end
3251
+ if s7.last
3252
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
3253
+ r7.extend(KwArgs0)
3254
+ else
3255
+ @index = i7
3256
+ r7 = nil
3257
+ end
3258
+ if r7
3259
+ r6 = r7
3260
+ else
3261
+ r6 = instantiate_node(SyntaxNode,input, index...index)
3262
+ end
3263
+ s1 << r6
3264
+ if r6
3265
+ i14, s14 = index, []
2986
3266
  r16 = _nt_sp
2987
3267
  if r16
2988
3268
  r15 = r16
2989
3269
  else
2990
3270
  r15 = instantiate_node(SyntaxNode,input, index...index)
2991
3271
  end
2992
- s11 << r15
3272
+ s14 << r15
2993
3273
  if r15
2994
- r18 = _nt_kw_args
2995
- if r18
2996
- r17 = r18
3274
+ if (match_len = has_terminal?(',', false, index))
3275
+ r17 = true
3276
+ @index += match_len
2997
3277
  else
2998
- r17 = instantiate_node(SyntaxNode,input, index...index)
3278
+ terminal_parse_failure('\',\'')
3279
+ r17 = nil
2999
3280
  end
3000
- s11 << r17
3281
+ s14 << r17
3282
+ if r17
3283
+ r19 = _nt_sp
3284
+ if r19
3285
+ r18 = r19
3286
+ else
3287
+ r18 = instantiate_node(SyntaxNode,input, index...index)
3288
+ end
3289
+ s14 << r18
3290
+ if r18
3291
+ r21 = _nt_kw_args
3292
+ if r21
3293
+ r20 = r21
3294
+ else
3295
+ r20 = instantiate_node(SyntaxNode,input, index...index)
3296
+ end
3297
+ s14 << r20
3298
+ end
3299
+ end
3300
+ end
3301
+ if s14.last
3302
+ r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
3303
+ r14.extend(KwArgs1)
3304
+ else
3305
+ @index = i14
3306
+ r14 = nil
3307
+ end
3308
+ if r14
3309
+ r13 = r14
3310
+ else
3311
+ r13 = instantiate_node(SyntaxNode,input, index...index)
3001
3312
  end
3313
+ s1 << r13
3002
3314
  end
3003
3315
  end
3004
- if s11.last
3005
- r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
3006
- r11.extend(KwArgs1)
3316
+ end
3317
+ end
3318
+ if s1.last
3319
+ r1 = instantiate_node(KwArgs,input, i1...index, s1)
3320
+ r1.extend(KwArgs2)
3321
+ else
3322
+ @index = i1
3323
+ r1 = nil
3324
+ end
3325
+ if r1
3326
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
3327
+ r0 = r1
3328
+ else
3329
+ i22, s22 = index, []
3330
+ i24, s24 = index, []
3331
+ r25 = _nt_identifier
3332
+ s24 << r25
3333
+ if r25
3334
+ r27 = _nt_sp
3335
+ if r27
3336
+ r26 = r27
3007
3337
  else
3008
- @index = i11
3009
- r11 = nil
3338
+ r26 = instantiate_node(SyntaxNode,input, index...index)
3010
3339
  end
3011
- if r11
3012
- r10 = r11
3013
- else
3014
- r10 = instantiate_node(SyntaxNode,input, index...index)
3340
+ s24 << r26
3341
+ if r26
3342
+ if (match_len = has_terminal?('=', false, index))
3343
+ r28 = true
3344
+ @index += match_len
3345
+ else
3346
+ terminal_parse_failure('\'=\'')
3347
+ r28 = nil
3348
+ end
3349
+ s24 << r28
3350
+ if r28
3351
+ r30 = _nt_sp
3352
+ if r30
3353
+ r29 = r30
3354
+ else
3355
+ r29 = instantiate_node(SyntaxNode,input, index...index)
3356
+ end
3357
+ s24 << r29
3358
+ end
3015
3359
  end
3016
- s0 << r10
3017
3360
  end
3018
- end
3019
- if s0.last
3020
- r0 = instantiate_node(KwArgs,input, i0...index, s0)
3021
- r0.extend(KwArgs2)
3022
- else
3023
- @index = i0
3024
- r0 = nil
3361
+ if s24.last
3362
+ r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
3363
+ r24.extend(KwArgs3)
3364
+ else
3365
+ @index = i24
3366
+ r24 = nil
3367
+ end
3368
+ if r24
3369
+ r23 = r24
3370
+ else
3371
+ r23 = instantiate_node(SyntaxNode,input, index...index)
3372
+ end
3373
+ s22 << r23
3374
+ if r23
3375
+ r31 = _nt_expression
3376
+ s22 << r31
3377
+ if r31
3378
+ r33 = _nt_sp
3379
+ if r33
3380
+ r32 = r33
3381
+ else
3382
+ r32 = instantiate_node(SyntaxNode,input, index...index)
3383
+ end
3384
+ s22 << r32
3385
+ if r32
3386
+ i35, s35 = index, []
3387
+ if (match_len = has_terminal?('if', false, index))
3388
+ r36 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3389
+ @index += match_len
3390
+ else
3391
+ terminal_parse_failure('\'if\'')
3392
+ r36 = nil
3393
+ end
3394
+ s35 << r36
3395
+ if r36
3396
+ r37 = _nt_sp
3397
+ s35 << r37
3398
+ if r37
3399
+ r38 = _nt_expression
3400
+ s35 << r38
3401
+ if r38
3402
+ r40 = _nt_sp
3403
+ if r40
3404
+ r39 = r40
3405
+ else
3406
+ r39 = instantiate_node(SyntaxNode,input, index...index)
3407
+ end
3408
+ s35 << r39
3409
+ end
3410
+ end
3411
+ end
3412
+ if s35.last
3413
+ r35 = instantiate_node(SyntaxNode,input, i35...index, s35)
3414
+ r35.extend(KwArgs4)
3415
+ else
3416
+ @index = i35
3417
+ r35 = nil
3418
+ end
3419
+ if r35
3420
+ r34 = r35
3421
+ else
3422
+ r34 = instantiate_node(SyntaxNode,input, index...index)
3423
+ end
3424
+ s22 << r34
3425
+ if r34
3426
+ i42, s42 = index, []
3427
+ r44 = _nt_sp
3428
+ if r44
3429
+ r43 = r44
3430
+ else
3431
+ r43 = instantiate_node(SyntaxNode,input, index...index)
3432
+ end
3433
+ s42 << r43
3434
+ if r43
3435
+ if (match_len = has_terminal?(',', false, index))
3436
+ r45 = true
3437
+ @index += match_len
3438
+ else
3439
+ terminal_parse_failure('\',\'')
3440
+ r45 = nil
3441
+ end
3442
+ s42 << r45
3443
+ if r45
3444
+ r47 = _nt_sp
3445
+ if r47
3446
+ r46 = r47
3447
+ else
3448
+ r46 = instantiate_node(SyntaxNode,input, index...index)
3449
+ end
3450
+ s42 << r46
3451
+ if r46
3452
+ r49 = _nt_kw_args
3453
+ if r49
3454
+ r48 = r49
3455
+ else
3456
+ r48 = instantiate_node(SyntaxNode,input, index...index)
3457
+ end
3458
+ s42 << r48
3459
+ end
3460
+ end
3461
+ end
3462
+ if s42.last
3463
+ r42 = instantiate_node(SyntaxNode,input, i42...index, s42)
3464
+ r42.extend(KwArgs5)
3465
+ else
3466
+ @index = i42
3467
+ r42 = nil
3468
+ end
3469
+ if r42
3470
+ r41 = r42
3471
+ else
3472
+ r41 = instantiate_node(SyntaxNode,input, index...index)
3473
+ end
3474
+ s22 << r41
3475
+ end
3476
+ end
3477
+ end
3478
+ end
3479
+ if s22.last
3480
+ r22 = instantiate_node(KwArgs,input, i22...index, s22)
3481
+ r22.extend(KwArgs6)
3482
+ else
3483
+ @index = i22
3484
+ r22 = nil
3485
+ end
3486
+ if r22
3487
+ r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true
3488
+ r0 = r22
3489
+ else
3490
+ @index = i0
3491
+ r0 = nil
3492
+ end
3025
3493
  end
3026
3494
 
3027
3495
  node_cache[:kw_args][start_index] = r0