Skip to content

Commit

Permalink
Merge pull request #171 from DerekStride/ds/json
Browse files Browse the repository at this point in the history
alternative implementation using binary_expression
  • Loading branch information
DerekStride authored Jun 29, 2023
2 parents 16b2631 + c0e3be8 commit e238bc9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 43 deletions.
16 changes: 4 additions & 12 deletions grammar.js
Original file line number Diff line number Diff line change
Expand Up @@ -2318,22 +2318,10 @@ module.exports = grammar({
$.array,
$.interval,
$.between_expression,
$.json_traversal,
seq("(", $._expression, ")"),
)
),

json_traversal: $ => seq(
$._expression,
choice(
'->',
'->>',
'#>',
'#>>',
),
$._literal_string,
),

binary_expression: $ => choice(
...[
['+', 'binary_plus'],
Expand All @@ -2350,6 +2338,10 @@ module.exports = grammar({
['>=', 'binary_relation'],
['>', 'binary_relation'],
['<>', 'binary_relation'],
['->', 'binary_relation'],
['->>', 'binary_relation'],
['#>', 'binary_relation'],
['#>>', 'binary_relation'],
[$.keyword_is, 'binary_is'],
[$.is_not, 'binary_is'],
[$.keyword_like, 'pattern_matching'],
Expand Down
69 changes: 38 additions & 31 deletions test/corpus/json.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,42 @@ FROM users;
--------------------------------------------------------------------------------

(program
(statement
(select
(keyword_select)
(select_expression
(term
(json_traversal
(literal))
(keyword_as)
(identifier))
(term
(json_traversal
(json_traversal
(literal))))
(term
(json_traversal
(json_traversal
(literal)))
(keyword_as)
(identifier))
(term
(json_traversal
(literal)))
(term
(json_traversal
(literal))
(keyword_as)
(identifier))))
(statement
(select
(keyword_select)
(select_expression
(term
value: (binary_expression
left: (literal)
right: (literal))
(keyword_as)
alias: (identifier))
(term
value: (binary_expression
left: (binary_expression
left: (literal)
right: (literal))
right: (literal)))
(term
value: (binary_expression
left: (binary_expression
left: (literal)
right: (literal))
right: (literal))
(keyword_as)
alias: (identifier))
(term
value: (binary_expression
left: (literal)
right: (literal)))
(term
value: (binary_expression
left: (literal)
right: (literal))
(keyword_as)
alias: (identifier))))
(from
(keyword_from)
(relation
(object_reference
(identifier))))))
(keyword_from)
(relation
(object_reference
name: (identifier))))))

0 comments on commit e238bc9

Please sign in to comment.