diff --git a/grammar.js b/grammar.js index 98fb4bb..48991e7 100644 --- a/grammar.js +++ b/grammar.js @@ -38,8 +38,8 @@ module.exports = grammar({ 'member', 'call', $.spread_element, - $.await_expression, $.pipe_expression, + $.await_expression, $.lazy_expression, 'binary_times', 'binary_pow', @@ -106,7 +106,10 @@ module.exports = grammar({ [$.variant_declaration], [$.unit, $._function_type_parameter_list], [$.functor_parameter, $.module_primary_expression, $.module_identifier_path], - [$._reserved_identifier, $.function] + [$._reserved_identifier, $.function], + [$.expression, $._jsx_child], + [$.expression, $._jsx_attribute_value], + [$.block, $.jsx_expression] ], rules: { @@ -743,17 +746,9 @@ module.exports = grammar({ )), pipe_expression: $ => prec.left(seq( - $.primary_expression, + $.expression, choice('->', '|>'), - choice( - $.value_identifier, - $.value_identifier_path, - $.variant_identifier, - $.polyvar_identifier, - $.nested_variant_identifier, - $.parenthesized_expression, - $.block, - ), + $.expression, )), module_pack: $ => seq( diff --git a/test/corpus/expressions.txt b/test/corpus/expressions.txt index c32a342..ff11675 100644 --- a/test/corpus/expressions.txt +++ b/test/corpus/expressions.txt @@ -196,6 +196,8 @@ foo->{ baz } +{foo}->print() + --- (source_file @@ -209,24 +211,24 @@ foo->{ (value_identifier))) (expression_statement (pipe_expression - (call_expression - (pipe_expression - (value_identifier) + (pipe_expression + (value_identifier) + (call_expression (value_identifier_path - (module_identifier) - (value_identifier))) - (arguments (value_identifier))) + (module_identifier) (value_identifier)) + (arguments + (value_identifier)))) (value_identifier_path (module_identifier) (value_identifier)))) (expression_statement (pipe_expression (number) - (variant_identifier))) + (variant (variant_identifier)))) (expression_statement (pipe_expression (value_identifier) - (polyvar_identifier))) + (polyvar (polyvar_identifier)))) (expression_statement (pipe_expression (value_identifier) @@ -243,7 +245,12 @@ foo->{ (value_identifier) (block (open_statement (module_identifier)) - (expression_statement (value_identifier)))))) + (expression_statement (value_identifier))))) + (expression_statement + (pipe_expression + (block + (expression_statement (value_identifier))) + (call_expression (value_identifier) (arguments))))) =========================================== Record