Yes, but it doesn't need any funny parsing trick to handle them. Just parse the whole statement as a list of expressions joined by operators, and then you can convert the flat list into a precedence-respecting tree with a few lines of code and an operator-to-precedence table.
Yes, it's as easy as that. Or check out Jonathan Blow on precedence.
The infamous dragon book convinced people to use the wrong tools and have the wrong mindset. It was a work of incompetence. There were no dragons, but the book itself.
hyperscript has some operator precedence, but within a given general precedence level you have to explicitly parenthesize if you use different operators:
this eliminates most practical precendence questions
NB: one thing that may strike people as strange is that the parse methods are on the parse elements themselves, I like to localize everything about a parse element in one place
“All J verbs (functions and operators) have the same priority and associate right-to-left. For example, a b + c is equivalent to a * (b + c), not (a * b) + c.”*
Your point about not needing operator precedence still stands, though.
The infamous dragon book convinced people to use the wrong tools and have the wrong mindset. It was a work of incompetence. There were no dragons, but the book itself.
https://github.com/bigskysoftware/_hyperscript/blob/06f9078a...
https://github.com/bigskysoftware/_hyperscript/blob/06f9078a...
this eliminates most practical precendence questions
NB: one thing that may strike people as strange is that the parse methods are on the parse elements themselves, I like to localize everything about a parse element in one place
Not if the programming language has evaluation order from left to right, e.g.
2+3*4
is evaluated as
(2+3)*4.
For example J uses this kind of evaluation.
“All J verbs (functions and operators) have the same priority and associate right-to-left. For example, a b + c is equivalent to a * (b + c), not (a * b) + c.”*
Your point about not needing operator precedence still stands, though.
You are indeed right (it has been quite a long time since I experimented with J):
> https://www.jsoftware.com/help/jforc/preliminaries.htm (scroll down to "Order of Evaluation")