Add try-catch, for, while, while do, and enum, and fix if
Hi! Was working on Helix support for the queries when I realized the grammar hadn't implemented these structures. Figured I'd have a go at it. First time playing around with treesitter so things probably aren't ideal but it mostly works. I still also need to get tests passing and write some tests
There's some odd behavior where when trying to do the range operator on two ints, the grammar thinks it's a float:
1...5 would give (float) instead of ( (integer) (integer))
I have also yet to figure out the best way to do array comprehension, accounting for while, do while and for, and also making sure that nested comprehension works as well
it may be worth looking into https://tree-sitter.github.io/tree-sitter/creating-parsers#external-scanners for the range operator/floats, the regex for the floats would be hard to get right
"fixed" the range expression for now. Still really confused on how to deal with the conditional operator thing. Looks like it conflicts with type_params??
Instead of having specific constructs for array comprehensions, perhaps for/while should be allowed as a generic "expression" element, and expressions should be allowed within [ ].
There's some odd behavior where when trying to do the range operator on two ints, the grammar thinks it's a float: 1...5 would give (float) instead of ( (integer) (integer))
Fixing this regex may solve the float problem: https://github.com/vantreeseba/tree-sitter-haxe/blob/12e814cd9b0656b0eaa3e04b0036b3b6625cc0d7/grammar-literals.js#L12
Right now it accepts any number of . >= 1.
I think having this merged would also open up for support on Zed-Haxe, right?
I think having this merged would also open up for support on Zed-Haxe, right?
This PR is still pretty underbaked and I don't have a whole lot of time to dedicate to learning haxe and treesitter as I am unfamiliar with haxe and treesitter currently. If you or anyone else wants to get this polished enough to merge and make a fully functioning haxe treesitter grammar feel free, not sure if the current maintainer checks this repo so it might be best to do the work in a fork
That makes sense, thanks the detailed reply. :+1: