myco 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/lib/myco/bootstrap/component.rb +2 -0
  3. data/lib/myco/bootstrap/evaluator.rb +58 -0
  4. data/lib/myco/bootstrap/instance.rb +1 -1
  5. data/lib/myco/bootstrap/meme.rb +4 -9
  6. data/lib/myco/bootstrap.my +1 -1
  7. data/lib/myco/bootstrap.my.rb +1 -1
  8. data/lib/myco/code_loader.rb +6 -1
  9. data/lib/myco/code_tools/AST/ArgumentAssembly.my +8 -12
  10. data/lib/myco/code_tools/AST/ArgumentAssembly.my.rb +12 -9
  11. data/lib/myco/code_tools/AST/ArrayAssembly.my +2 -3
  12. data/lib/myco/code_tools/AST/ArrayAssembly.my.rb +2 -5
  13. data/lib/myco/code_tools/AST/Block.my +4 -4
  14. data/lib/myco/code_tools/AST/Block.my.rb +3 -7
  15. data/lib/myco/code_tools/AST/BlockArgument.my +4 -5
  16. data/lib/myco/code_tools/AST/BlockArgument.my.rb +2 -5
  17. data/lib/myco/code_tools/AST/BlockLiteral.my +3 -4
  18. data/lib/myco/code_tools/AST/BlockLiteral.my.rb +6 -6
  19. data/lib/myco/code_tools/AST/BlockParameter.my +4 -11
  20. data/lib/myco/code_tools/AST/BlockParameter.my.rb +4 -13
  21. data/lib/myco/code_tools/AST/BranchOperator.my +2 -3
  22. data/lib/myco/code_tools/AST/BranchOperator.my.rb +4 -9
  23. data/lib/myco/code_tools/AST/ConstantAccess.my +11 -8
  24. data/lib/myco/code_tools/AST/ConstantAccess.my.rb +16 -12
  25. data/lib/myco/code_tools/AST/ConstantAssignment.my +13 -5
  26. data/lib/myco/code_tools/AST/ConstantAssignment.my.rb +16 -11
  27. data/lib/myco/code_tools/AST/ConstantDefine.my +2 -3
  28. data/lib/myco/code_tools/AST/ConstantDefine.my.rb +3 -7
  29. data/lib/myco/code_tools/AST/DeclareCategory.my +4 -14
  30. data/lib/myco/code_tools/AST/DeclareCategory.my.rb +20 -36
  31. data/lib/myco/code_tools/AST/DeclareDecorator.my +2 -3
  32. data/lib/myco/code_tools/AST/DeclareDecorator.my.rb +3 -7
  33. data/lib/myco/code_tools/AST/DeclareExtension.my +22 -0
  34. data/lib/myco/code_tools/AST/DeclareExtension.my.rb +19 -0
  35. data/lib/myco/code_tools/AST/DeclareFile.my +4 -15
  36. data/lib/myco/code_tools/AST/DeclareFile.my.rb +34 -50
  37. data/lib/myco/code_tools/AST/DeclareMeme.my +5 -7
  38. data/lib/myco/code_tools/AST/DeclareMeme.my.rb +8 -17
  39. data/lib/myco/code_tools/AST/DeclareObject.my +6 -18
  40. data/lib/myco/code_tools/AST/DeclareObject.my.rb +41 -59
  41. data/lib/myco/code_tools/AST/DeclareString.my +2 -3
  42. data/lib/myco/code_tools/AST/DeclareString.my.rb +3 -7
  43. data/lib/myco/code_tools/AST/{MycoModuleScope.my → DeclaredScope.my} +15 -16
  44. data/lib/myco/code_tools/AST/{MycoModuleScope.my.rb → DeclaredScope.my.rb} +15 -20
  45. data/lib/myco/code_tools/AST/Invoke.my +8 -8
  46. data/lib/myco/code_tools/AST/Invoke.my.rb +13 -21
  47. data/lib/myco/code_tools/AST/InvokeMethod.my +2 -3
  48. data/lib/myco/code_tools/AST/InvokeMethod.my.rb +4 -9
  49. data/lib/myco/code_tools/AST/KeywordAssembly.my +3 -4
  50. data/lib/myco/code_tools/AST/KeywordAssembly.my.rb +2 -5
  51. data/lib/myco/code_tools/AST/KeywordOptionalParameter.my +16 -0
  52. data/lib/myco/code_tools/AST/KeywordOptionalParameter.my.rb +14 -0
  53. data/lib/myco/code_tools/AST/KeywordRequiredParameter.my +16 -0
  54. data/lib/myco/code_tools/AST/KeywordRequiredParameter.my.rb +13 -0
  55. data/lib/myco/code_tools/AST/KeywordRestParameter.my +16 -0
  56. data/lib/myco/code_tools/AST/KeywordRestParameter.my.rb +13 -0
  57. data/lib/myco/code_tools/AST/LocalVariableAccessAmbiguous.my +2 -3
  58. data/lib/myco/code_tools/AST/LocalVariableAccessAmbiguous.my.rb +2 -5
  59. data/lib/myco/code_tools/AST/LocalVariableAssignment.my +3 -3
  60. data/lib/myco/code_tools/AST/LocalVariableAssignment.my.rb +3 -7
  61. data/lib/myco/code_tools/AST/Node.my +32 -2
  62. data/lib/myco/code_tools/AST/Node.my.rb +34 -1
  63. data/lib/myco/code_tools/AST/NumericLiteral.my +15 -0
  64. data/lib/myco/code_tools/AST/NumericLiteral.my.rb +12 -0
  65. data/lib/myco/code_tools/AST/OptionalParameter.my +24 -0
  66. data/lib/myco/code_tools/AST/OptionalParameter.my.rb +19 -0
  67. data/lib/myco/code_tools/AST/ParameterAssembly.my +60 -103
  68. data/lib/myco/code_tools/AST/ParameterAssembly.my.rb +60 -121
  69. data/lib/myco/code_tools/AST/PipeOperator.my +2 -3
  70. data/lib/myco/code_tools/AST/PipeOperator.my.rb +3 -7
  71. data/lib/myco/code_tools/AST/Quest.my +8 -10
  72. data/lib/myco/code_tools/AST/Quest.my.rb +9 -13
  73. data/lib/myco/code_tools/AST/RequiredParameter.my +12 -0
  74. data/lib/myco/code_tools/AST/RequiredParameter.my.rb +10 -0
  75. data/lib/myco/code_tools/AST/RestParameter.my +12 -0
  76. data/lib/myco/code_tools/AST/RestParameter.my.rb +10 -0
  77. data/lib/myco/code_tools/AST/Script.my +4 -4
  78. data/lib/myco/code_tools/AST/Script.my.rb +3 -7
  79. data/lib/myco/code_tools/AST/Sequence.my +2 -3
  80. data/lib/myco/code_tools/AST/Sequence.my.rb +2 -5
  81. data/lib/myco/code_tools/AST/SplatValue.my +3 -4
  82. data/lib/myco/code_tools/AST/SplatValue.my.rb +2 -5
  83. data/lib/myco/code_tools/AST/{DynamicString.my → StringCompose.my} +3 -4
  84. data/lib/myco/code_tools/AST/{DynamicString.my.rb → StringCompose.my.rb} +4 -7
  85. data/lib/myco/code_tools/AST/StringLiteral.my +2 -3
  86. data/lib/myco/code_tools/AST/StringLiteral.my.rb +2 -5
  87. data/lib/myco/code_tools/AST/{DynamicSymbol.my → SymbolCompose.my} +3 -4
  88. data/lib/myco/code_tools/AST/{DynamicSymbol.my.rb → SymbolCompose.my.rb} +4 -7
  89. data/lib/myco/code_tools/AST/SymbolLiteral.my +2 -3
  90. data/lib/myco/code_tools/AST/SymbolLiteral.my.rb +2 -5
  91. data/lib/myco/code_tools/AST/ToRuby.my +40 -57
  92. data/lib/myco/code_tools/AST/ToRuby.my.rb +43 -52
  93. data/lib/myco/code_tools/AST/misc.my +19 -24
  94. data/lib/myco/code_tools/AST/misc.my.rb +18 -23
  95. data/lib/myco/code_tools/AST.my +17 -8
  96. data/lib/myco/code_tools/AST.my.rb +14 -7
  97. data/lib/myco/code_tools/Parser.my +1 -1
  98. data/lib/myco/code_tools/parser/MycoBuilder.my +3 -3
  99. data/lib/myco/code_tools/parser/MycoBuilder.my.rb +3 -3
  100. data/lib/myco/code_tools/parser/MycoGrammar.my +67 -74
  101. data/lib/myco/code_tools/parser/MycoGrammar.my.rb +211 -316
  102. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/BytecodeHelpers.my +3 -3
  103. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/BytecodeHelpers.my.rb +2 -2
  104. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/BytecodeInstructions.my +9 -9
  105. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/BytecodeInstructions.my.rb +9 -9
  106. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/BytecodeParser.my +2 -2
  107. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/BytecodeParser.my.rb +4 -1
  108. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/Grammar.my +2 -3
  109. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/Grammar.my.rb +2 -3
  110. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/Machine.my +1 -1
  111. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/Machine.my.rb +1 -1
  112. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/Processor.my +5 -5
  113. data/lib/myco/code_tools/parser/pegleromyces/lib/pegleromyces/Processor.my.rb +5 -5
  114. data/lib/myco/command.my +1 -1
  115. data/lib/myco/command.my.rb +1 -1
  116. data/lib/myco/core/BasicDecorators.my +10 -8
  117. data/lib/myco/core/BasicDecorators.my.rb +7 -7
  118. data/lib/myco/core/BasicObject.my +38 -7
  119. data/lib/myco/core/BasicObject.my.rb +23 -4
  120. data/lib/myco/tools/BasicCommand.my +1 -1
  121. data/lib/myco/tools/BasicCommand.my.rb +1 -1
  122. data/lib/myco/version.rb +1 -1
  123. data/lib/myco.rb +3 -0
  124. metadata +41 -26
  125. data/lib/myco/code_tools/AST/ConstantReopen.my +0 -29
  126. data/lib/myco/code_tools/AST/ConstantReopen.my.rb +0 -35
@@ -48,10 +48,10 @@
48
48
  self.left_chained_operations
49
49
  ).__send__(
50
50
  :/,
51
- self.dyn_string
51
+ self.string_compose
52
52
  ).__send__(
53
53
  :/,
54
- self.dyn_symstr
54
+ self.symbol_compose
55
55
  ).__send__(
56
56
  :/,
57
57
  self.left_chained_piping
@@ -175,7 +175,7 @@
175
175
  self.r(::Myco.find_constant(:T).float.__send__(
176
176
  :[],
177
177
  :t0
178
- )) { || (self.ast.lit(
178
+ )) { || (self.ast.numeric(
179
179
  self.__send__(:t0),
180
180
  self.__send__(:t0).float
181
181
  ))}
@@ -184,7 +184,7 @@
184
184
  self.r(::Myco.find_constant(:T).integer.__send__(
185
185
  :[],
186
186
  :t0
187
- )) { || (self.ast.lit(
187
+ )) { || (self.ast.numeric(
188
188
  self.__send__(:t0),
189
189
  self.__send__(:t0).integer
190
190
  ))}
@@ -193,9 +193,9 @@
193
193
  self.r(::Myco.find_constant(:T).symbol.__send__(
194
194
  :[],
195
195
  :t0
196
- )) { || (self.ast.lit(
196
+ )) { || (self.ast.symbol(
197
197
  self.__send__(:t0),
198
- self.__send__(:t0).text.slice(::Range.new(
198
+ self.__send__(:t0).text.slice(::Myco.find_constant(:Range).new(
199
199
  1,
200
200
  -1
201
201
  )).to_sym
@@ -256,7 +256,7 @@
256
256
  :+,
257
257
  ::Myco.find_constant(:T).sstring_end
258
258
  )
259
- )) { || (self.ast.lit(
259
+ )) { || (self.ast.symbol(
260
260
  self.tb,
261
261
  self.encode_escapes(self.tb.text)
262
262
  ))})}
@@ -281,7 +281,7 @@
281
281
  :+,
282
282
  ::Myco.find_constant(:T).sstring_end
283
283
  )
284
- )) { || (self.ast.lit(
284
+ )) { || (self.ast.symbol(
285
285
  self.tb,
286
286
  self.encode_escapes(self.tb.text).to_sym
287
287
  ))})}
@@ -294,7 +294,7 @@
294
294
  ).__send__(
295
295
  :+,
296
296
  ::Myco.find_constant(:T).string_end
297
- )) { || (self.ast.lit(
297
+ )) { || (self.ast.symbol(
298
298
  self.tb,
299
299
  self.encode_escapes(self.tb.text).to_sym
300
300
  ))})}
@@ -307,11 +307,11 @@
307
307
  ).__send__(
308
308
  :+,
309
309
  ::Myco.find_constant(:T).catgry_end
310
- )) { || (self.ast.lit(
310
+ )) { || (self.ast.symbol(
311
311
  self.tb,
312
312
  self.encode_escapes(self.tb.text).to_sym
313
313
  ))})}
314
- declare_meme(:dyn_string_part, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:C).spc.__send__(:*).__send__(
314
+ declare_meme(:string_compose_part, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:C).spc.__send__(:*).__send__(
315
315
  :+,
316
316
  self.expr_atom_not_string.__send__(
317
317
  :[],
@@ -330,36 +330,36 @@
330
330
  self.__send__(:n0),
331
331
  self.__send__(:n1)
332
332
  ])})}
333
- declare_meme(:dyn_string_parts, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.dyn_string_part.__send__(:+).__send__(
333
+ declare_meme(:string_compose_parts, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.string_compose_part.__send__(:+).__send__(
334
334
  :[],
335
335
  :nlist
336
336
  )) { || (self.nlist.flatten)})}
337
- declare_meme(:dyn_string, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.lit_string.__send__(
337
+ declare_meme(:string_compose, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.lit_string.__send__(
338
338
  :[],
339
339
  :n0
340
340
  ).__send__(
341
341
  :+,
342
- self.dyn_string_parts.__send__(
342
+ self.string_compose_parts.__send__(
343
343
  :[],
344
344
  :nrest
345
345
  )
346
- )) { || (self.ast.dstr(
346
+ )) { || (self.ast.string_compose(
347
347
  self.__send__(:n0),
348
348
  [self.__send__(:n0)].__send__(
349
349
  :+,
350
350
  self.nrest
351
351
  )
352
352
  ))})}
353
- declare_meme(:dyn_symstr, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.lit_symstr.__send__(
353
+ declare_meme(:symbol_compose, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.lit_symstr.__send__(
354
354
  :[],
355
355
  :n0
356
356
  ).__send__(
357
357
  :+,
358
- self.dyn_string_parts.__send__(
358
+ self.string_compose_parts.__send__(
359
359
  :[],
360
360
  :nrest
361
361
  )
362
- )) { || (self.ast.dsym(
362
+ )) { || (self.ast.symbol_compose(
363
363
  self.__send__(:n0),
364
364
  [self.__send__(:n0)].__send__(
365
365
  :+,
@@ -419,7 +419,7 @@
419
419
  :[],
420
420
  :nrest
421
421
  )
422
- )) { || (self.ast.arrass(
422
+ )) { || (self.ast.array(
423
423
  self.__send__(:n0),
424
424
  [
425
425
  self.__send__(:n0),
@@ -429,7 +429,7 @@
429
429
  declare_meme(:id_as_symbol, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).identifier.__send__(
430
430
  :[],
431
431
  :t0
432
- )) { || (self.ast.lit(
432
+ )) { || (self.ast.symbol(
433
433
  self.__send__(:t0),
434
434
  self.__send__(:t0).sym
435
435
  ))})}
@@ -725,7 +725,7 @@
725
725
  ]}
726
726
  self.lhs.__send__(
727
727
  :arguments=,
728
- self.ast.argass(
728
+ self.ast.args(
729
729
  self.rhs,
730
730
  arg_order
731
731
  )
@@ -803,7 +803,7 @@
803
803
  self.na,
804
804
  nil,
805
805
  :[],
806
- self.ast.argass(
806
+ self.ast.args(
807
807
  self.na,
808
808
  self.na.body
809
809
  ),
@@ -1039,7 +1039,7 @@
1039
1039
  ).__send__(
1040
1040
  :+,
1041
1041
  ::Myco.find_constant(:T).args_end
1042
- )) { || (self.ast.argass(
1042
+ )) { || (self.ast.args(
1043
1043
  self.tb,
1044
1044
  ::Myco.branch_op(:"||", self.nlist) {[]}
1045
1045
  ))})}
@@ -1061,11 +1061,45 @@
1061
1061
  ).__send__(
1062
1062
  :+,
1063
1063
  ::Myco.find_constant(:T).array_end
1064
- )) { || (self.ast.arrass(
1064
+ )) { || (self.ast.array(
1065
1065
  self.tb,
1066
1066
  ::Myco.branch_op(:"||", self.nlist) {[]}
1067
1067
  ))})}
1068
- declare_meme(:param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).identifier.__send__(
1068
+ declare_meme(:param_sep, [], nil, ::Myco.cscope.dup) { |*| (::Myco.find_constant(:C).spc.__send__(:*).__send__(
1069
+ :+,
1070
+ ::Myco.find_constant(:T).arg_sep
1071
+ ).__send__(
1072
+ :+,
1073
+ ::Myco.find_constant(:C).spc.__send__(:*)
1074
+ ).__send__(:+).__send__(
1075
+ :/,
1076
+ ::Myco.find_constant(:C).spc.__send__(:*).__send__(
1077
+ :+,
1078
+ ::Myco.find_constant(:T).params_end.__send__(:!).__send__(:!)
1079
+ )
1080
+ ))}
1081
+ declare_meme(:param_sep_opt, [], nil, ::Myco.cscope.dup) { |*| (::Myco.find_constant(:C).spc.__send__(
1082
+ :/,
1083
+ ::Myco.find_constant(:T).arg_sep
1084
+ ).__send__(:*))}
1085
+ declare_meme(:param_sepd, [], nil, ::Myco.cscope.dup) { |x| (self.r(x.__send__(
1086
+ :[],
1087
+ :n0
1088
+ ).__send__(
1089
+ :+,
1090
+ self.param_sep
1091
+ )) { || (self.__send__(:n0))})}
1092
+ declare_meme(:req_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).identifier.__send__(
1093
+ :[],
1094
+ :ti
1095
+ ).__send__(
1096
+ :+,
1097
+ self.param_sep.__send__(:!).__send__(:!)
1098
+ )) { || (self.ast.reqprm(
1099
+ self.ti,
1100
+ self.ti.sym
1101
+ ))})}
1102
+ declare_meme(:opt_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).identifier.__send__(
1069
1103
  :[],
1070
1104
  :ti
1071
1105
  ).__send__(
@@ -1086,318 +1120,179 @@
1086
1120
  :[],
1087
1121
  :nv
1088
1122
  )
1089
- )) { || ([
1090
- :optional,
1091
- self.ast.lasgn(
1092
- self.ti,
1093
- self.ti.sym,
1094
- self.nv
1095
- )
1096
- ])}.__send__(
1097
- :/,
1098
- self.r(::Myco.find_constant(:T).identifier.__send__(
1123
+ )) { || (self.ast.optprm(
1124
+ self.ti,
1125
+ self.ti.sym,
1126
+ self.nv
1127
+ ))})}
1128
+ declare_meme(:rest_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).op_mult.__send__(
1129
+ :+,
1130
+ ::Myco.find_constant(:C).spc_nl.__send__(:*)
1131
+ ).__send__(
1132
+ :+,
1133
+ ::Myco.find_constant(:T).identifier.__send__(
1099
1134
  :[],
1100
1135
  :ti
1101
- ).__send__(
1102
- :+,
1103
- ::Myco.find_constant(:C).spc_nl.__send__(:*)
1104
- ).__send__(
1105
- :+,
1106
- ::Myco.find_constant(:T).meme_mark.__send__(
1107
- :[],
1108
- :to
1109
- )
1110
- ).__send__(
1111
- :+,
1112
- ::Myco.find_constant(:C).spc_nl.__send__(:*)
1113
- ).__send__(
1114
- :+,
1115
- self.arg_expr.__send__(:-).__send__(
1116
- :[],
1117
- :nv
1118
- )
1119
- )) { || ([
1120
- :kwargs,
1121
- self.ast.lasgn(
1122
- self.ti,
1123
- self.ti.sym,
1124
- ::Myco.branch_op(:"||", self.nv) {self.ast.lit(
1125
- self.to,
1126
- :*
1127
- )}
1128
- )
1129
- ])}
1136
+ )
1137
+ )) { || (self.ast.restprm(
1138
+ self.ti,
1139
+ self.ti.sym
1140
+ ))})}
1141
+ declare_meme(:kwopt_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).identifier.__send__(
1142
+ :[],
1143
+ :ti
1130
1144
  ).__send__(
1131
- :/,
1132
- self.r(::Myco.find_constant(:T).op_exp.__send__(
1133
- :+,
1134
- ::Myco.find_constant(:C).spc_nl.__send__(:*)
1135
- ).__send__(
1136
- :+,
1137
- ::Myco.find_constant(:T).identifier.__send__(
1138
- :[],
1139
- :ti
1140
- )
1141
- )) { || ([
1142
- :kwrest,
1143
- self.ti.sym
1144
- ])}
1145
+ :+,
1146
+ ::Myco.find_constant(:C).spc_nl.__send__(:*)
1145
1147
  ).__send__(
1146
- :/,
1147
- self.r(::Myco.find_constant(:T).op_mult.__send__(
1148
- :+,
1149
- ::Myco.find_constant(:C).spc_nl.__send__(:*)
1150
- ).__send__(
1151
- :+,
1152
- ::Myco.find_constant(:T).identifier.__send__(
1153
- :[],
1154
- :ti
1155
- )
1156
- )) { || ([
1157
- :rest,
1158
- self.ti.sym
1159
- ])}
1148
+ :+,
1149
+ ::Myco.find_constant(:T).meme_mark.__send__(
1150
+ :[],
1151
+ :to
1152
+ )
1160
1153
  ).__send__(
1161
- :/,
1162
- self.r(::Myco.find_constant(:T).op_toproc.__send__(
1163
- :+,
1164
- ::Myco.find_constant(:C).spc_nl.__send__(:*)
1165
- ).__send__(
1166
- :+,
1167
- ::Myco.find_constant(:T).identifier.__send__(
1168
- :[],
1169
- :ti
1170
- )
1171
- )) { || ([
1172
- :block,
1173
- self.ti.sym
1174
- ])}
1154
+ :+,
1155
+ ::Myco.find_constant(:C).spc_nl.__send__(:*)
1175
1156
  ).__send__(
1176
- :/,
1177
- self.r(::Myco.find_constant(:T).identifier.__send__(
1178
- :[],
1179
- :ti
1180
- )) { || ([
1181
- :required,
1182
- self.ti.sym
1183
- ])}
1184
- ))}
1185
- declare_meme(:param_sepd, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.arg_sep.__send__(
1186
1157
  :+,
1187
- self.param.__send__(
1158
+ self.arg_expr.__send__(
1188
1159
  :[],
1189
- :n0
1160
+ :nv
1190
1161
  )
1191
- )) { || (self.__send__(:n0))})}
1192
- declare_meme(:param_sepds, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(self.param.__send__(
1162
+ )) { || (self.ast.kwoptprm(
1163
+ self.ti,
1164
+ self.ti.sym,
1165
+ self.nv
1166
+ ))})}
1167
+ declare_meme(:kwreq_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).identifier.__send__(
1193
1168
  :[],
1194
- :n0
1169
+ :ti
1170
+ ).__send__(
1171
+ :+,
1172
+ ::Myco.find_constant(:C).spc_nl.__send__(:*)
1195
1173
  ).__send__(
1196
1174
  :+,
1197
- self.param_sepd.__send__(:*).__send__(
1175
+ ::Myco.find_constant(:T).meme_mark.__send__(
1198
1176
  :[],
1199
- :nrest
1177
+ :to
1200
1178
  )
1201
1179
  ).__send__(
1202
1180
  :+,
1203
- self.arg_sep_opt
1204
- )) { || ([
1205
- self.__send__(:n0),
1206
- *self.nrest
1207
- ])})}
1181
+ self.param_sep.__send__(:!).__send__(:!)
1182
+ )) { || (self.ast.kwreqprm(
1183
+ self.ti,
1184
+ self.ti.sym
1185
+ ))})}
1186
+ declare_meme(:kwrest_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).op_exp.__send__(
1187
+ :+,
1188
+ ::Myco.find_constant(:C).spc_nl.__send__(:*)
1189
+ ).__send__(
1190
+ :+,
1191
+ ::Myco.find_constant(:T).identifier.__send__(
1192
+ :[],
1193
+ :ti
1194
+ )
1195
+ )) { || (self.ast.kwrestprm(
1196
+ self.ti,
1197
+ self.ti.sym
1198
+ ))})}
1199
+ declare_meme(:block_param, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).op_toproc.__send__(
1200
+ :+,
1201
+ ::Myco.find_constant(:C).spc_nl.__send__(:*)
1202
+ ).__send__(
1203
+ :+,
1204
+ ::Myco.find_constant(:T).identifier.__send__(
1205
+ :[],
1206
+ :ti
1207
+ )
1208
+ )) { || (self.ast.blkprm(
1209
+ self.ti,
1210
+ self.ti.sym
1211
+ ))})}
1208
1212
  declare_meme(:param_list, [[:rule, []]], nil, ::Myco.cscope.dup) { |*| (self.r(::Myco.find_constant(:T).params_begin.__send__(
1209
1213
  :[],
1210
1214
  :tb
1211
1215
  ).__send__(
1212
1216
  :+,
1213
- ::Myco.find_constant(:T).params_end
1214
- )) { || (self.ast.args(
1215
- self.tb,
1216
- [],
1217
- [],
1218
- nil,
1219
- [],
1220
- [],
1221
- nil,
1222
- nil
1223
- ))}.__send__(
1224
- :/,
1225
- self.r(::Myco.find_constant(:T).params_begin.__send__(
1217
+ self.param_sep_opt
1218
+ ).__send__(
1219
+ :+,
1220
+ self.param_sepd(self.req_param).__send__(:*).__send__(
1226
1221
  :[],
1227
- :tb
1228
- ).__send__(
1229
- :+,
1230
- self.param_sepds.__send__(
1231
- :[],
1232
- :plist
1233
- )
1234
- ).__send__(
1235
- :+,
1236
- ::Myco.find_constant(:T).params_end
1237
- )) { || (
1238
- required = []
1239
- optional = []
1240
- rest = []
1241
- post = []
1242
- kwargs = []
1243
- kwrest = []
1244
- block = []
1245
- self.loop { || (
1246
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1247
- :[],
1248
- 0
1249
- )) {self.plist.__send__(
1250
- :[],
1251
- 0
1252
- ).__send__(
1253
- :[],
1254
- 0
1255
- ).__send__(
1256
- :==,
1257
- :required
1258
- )}) {self.__send__(:break)}
1259
- required.push(self.plist.shift.__send__(
1260
- :[],
1261
- 1
1262
- ))
1263
- )}
1264
- self.loop { || (
1265
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1266
- :[],
1267
- 0
1268
- )) {self.plist.__send__(
1269
- :[],
1270
- 0
1271
- ).__send__(
1272
- :[],
1273
- 0
1274
- ).__send__(
1275
- :==,
1276
- :optional
1277
- )}) {self.__send__(:break)}
1278
- optional.push(self.plist.shift.__send__(
1279
- :[],
1280
- 1
1281
- ))
1282
- )}
1283
- self.loop { || (
1284
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1285
- :[],
1286
- 0
1287
- )) {self.plist.__send__(
1288
- :[],
1289
- 0
1290
- ).__send__(
1291
- :[],
1292
- 0
1293
- ).__send__(
1294
- :==,
1295
- :rest
1296
- )}) {self.__send__(:break)}
1297
- rest.push(self.plist.shift.__send__(
1298
- :[],
1299
- 1
1300
- ))
1301
- )}
1302
- self.loop { || (
1303
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1304
- :[],
1305
- 0
1306
- )) {self.plist.__send__(
1307
- :[],
1308
- 0
1309
- ).__send__(
1310
- :[],
1311
- 0
1312
- ).__send__(
1313
- :==,
1314
- :required
1315
- )}) {self.__send__(:break)}
1316
- post.push(self.plist.shift.__send__(
1317
- :[],
1318
- 1
1319
- ))
1320
- )}
1321
- self.loop { || (
1322
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1323
- :[],
1324
- 0
1325
- )) {self.plist.__send__(
1326
- :[],
1327
- 0
1328
- ).__send__(
1329
- :[],
1330
- 0
1331
- ).__send__(
1332
- :==,
1333
- :kwargs
1334
- )}) {self.__send__(:break)}
1335
- kwargs.push(self.plist.shift.__send__(
1336
- :[],
1337
- 1
1338
- ))
1339
- )}
1340
- self.loop { || (
1341
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1342
- :[],
1343
- 0
1344
- )) {self.plist.__send__(
1345
- :[],
1346
- 0
1347
- ).__send__(
1348
- :[],
1349
- 0
1350
- ).__send__(
1351
- :==,
1352
- :kwrest
1353
- )}) {self.__send__(:break)}
1354
- kwrest.push(self.plist.shift.__send__(
1355
- :[],
1356
- 1
1357
- ))
1358
- )}
1359
- self.loop { || (
1360
- ::Myco.branch_op(:"||", ::Myco.branch_op(:"&&", self.plist.__send__(
1361
- :[],
1362
- 0
1363
- )) {self.plist.__send__(
1364
- :[],
1365
- 0
1366
- ).__send__(
1367
- :[],
1368
- 0
1369
- ).__send__(
1370
- :==,
1371
- :block
1372
- )}) {self.__send__(:break)}
1373
- block.push(self.plist.shift.__send__(
1374
- :[],
1375
- 1
1376
- ))
1377
- )}
1378
- required = required
1379
- optional = optional
1380
- rest = rest.first
1381
- post = post
1382
- kwargs = kwargs
1383
- kwrest = kwrest.first
1384
- block = block.first
1385
- block = ::Myco.branch_op(:"&&", block) {self.ast.blkprm(
1386
- self.tb,
1387
- block
1388
- )}
1389
- self.ast.args(
1390
- self.tb,
1391
- required,
1392
- optional,
1393
- rest,
1394
- post,
1395
- kwargs,
1396
- kwrest,
1397
- block
1398
- )
1399
- )}
1400
- ))}
1222
+ :required
1223
+ )
1224
+ ).__send__(
1225
+ :+,
1226
+ self.param_sepd(self.opt_param).__send__(:*).__send__(
1227
+ :[],
1228
+ :optional
1229
+ )
1230
+ ).__send__(
1231
+ :+,
1232
+ self.param_sepd(self.rest_param).__send__(:-).__send__(
1233
+ :[],
1234
+ :rest
1235
+ )
1236
+ ).__send__(
1237
+ :+,
1238
+ self.param_sepd(self.req_param).__send__(:*).__send__(
1239
+ :[],
1240
+ :post
1241
+ )
1242
+ ).__send__(
1243
+ :+,
1244
+ self.param_sepd(self.kwreq_param.__send__(
1245
+ :/,
1246
+ self.kwopt_param
1247
+ )).__send__(:*).__send__(
1248
+ :[],
1249
+ :kw
1250
+ )
1251
+ ).__send__(
1252
+ :+,
1253
+ self.param_sepd(self.kwrest_param).__send__(:-).__send__(
1254
+ :[],
1255
+ :kwrest
1256
+ )
1257
+ ).__send__(
1258
+ :+,
1259
+ self.param_sepd(self.block_param).__send__(:-).__send__(
1260
+ :[],
1261
+ :block
1262
+ )
1263
+ ).__send__(
1264
+ :+,
1265
+ ::Myco.find_constant(:T).params_end
1266
+ )) { || (
1267
+ kwrequired = self.kw.select { |x| (x.node_type.__send__(
1268
+ :==,
1269
+ :kwreqprm
1270
+ ))}
1271
+ kwoptional = self.kw.select { |x| (x.node_type.__send__(
1272
+ :==,
1273
+ :kwoptprm
1274
+ ))}
1275
+ self.ast.params(
1276
+ self.tb,
1277
+ self.required,
1278
+ self.optional,
1279
+ ::Myco.branch_op(:"??", ::Myco.branch_op(:"&?", self.rest.__send__(
1280
+ :is_a?,
1281
+ ::Myco.find_constant(:Array)
1282
+ )) {self.rest.first}) {self.rest},
1283
+ self.post,
1284
+ kwrequired,
1285
+ kwoptional,
1286
+ ::Myco.branch_op(:"??", ::Myco.branch_op(:"&?", self.kwrest.__send__(
1287
+ :is_a?,
1288
+ ::Myco.find_constant(:Array)
1289
+ )) {self.kwrest.first}) {self.kwrest},
1290
+ ::Myco.branch_op(:"??", ::Myco.branch_op(:"&?", self.block.__send__(
1291
+ :is_a?,
1292
+ ::Myco.find_constant(:Array)
1293
+ )) {self.block.first}) {self.block}
1294
+ )
1295
+ )})}
1401
1296
  declare_meme(:left_op_normal, [], nil, ::Myco.cscope.dup) { |*| (::Myco.find_constant(:T).op_exp.__send__(
1402
1297
  :/,
1403
1298
  ::Myco.find_constant(:T).op_mult
@@ -1862,7 +1757,7 @@
1862
1757
  :[],
1863
1758
  :nrest
1864
1759
  )
1865
- )) { || (self.ast.arrass(
1760
+ )) { || (self.ast.array(
1866
1761
  self.__send__(:n0),
1867
1762
  [
1868
1763
  self.__send__(:n0),