\r
block_start\r
=\r
- block_open type:`blockstart` !("end") name:IDENTIFIER parameters:[ { assignment_target }* ] block_close\r
+ block_open type:`blockstart` !("end") name:IDENTIFIER parameters:[ { block_parameter }* ] block_close\r
;\r
\r
block_end\r
{SP}* @:"%}"\r
;\r
\r
-assignment_target\r
+implicit_identifier_tuple\r
=\r
- tuple+:block_parameter {"," {SP}* tuple+:block_parameter}+\r
- | block_parameter\r
+ {SP}* tuple+:IDENTIFIER {SP}* { "," {SP}* tuple+:IDENTIFIER {SP}* }+\r
;\r
\r
block_parameter\r
=\r
- variable_accessor_call_parameter\r
+ block_parameter_key_value | block_parameter_value_only\r
+ ;\r
+\r
+block_parameter_key_value\r
+ =\r
+ key:block_parameter_key "=" value:variable_accessor_call_parameter_value\r
+ ;\r
+\r
+block_parameter_key\r
+ =\r
+ implicit_identifier_tuple | variable_accessor_call_parameter_key\r
+ ;\r
+\r
+block_parameter_value_only\r
+ =\r
+ value:implicit_identifier_tuple | value:variable_accessor_call_parameter_value\r
;\r
\r
variable_expression\r
\r
variable_accessor_call_parameter_key_value\r
=\r
- {SP}* key:IDENTIFIER {SP}* "=" value:variable_accessor_call_parameter_value {SP}*\r
+ key:variable_accessor_call_parameter_key "=" value:variable_accessor_call_parameter_value {SP}*\r
;\r
\r
variable_accessor_call_parameter_value_only\r
value:variable_accessor_call_parameter_value\r
;\r
\r
+variable_accessor_call_parameter_key\r
+ =\r
+ {SP}* key:IDENTIFIER {SP}*\r
+ ;\r
+\r
variable_accessor_call_parameter_value\r
=\r
{SP}* @:( variable_tests | variable_identifier ) {SP}*\r