Re:Regular, Recursive, Restricted
by 082349872349872 on Wednesday June 05, 2024 @07:13PM
(#40591722)
Lisps, Smalltalks, and APLs are among the language families that haven't bothered with precedence.
(that said, I think it's worth it: an afternoon spent providing precedence is easily paid back —in an expression-oriented language, anyway— in avoiding myriad pairs of parens)
Re:Regular, Recursive, Restricted
by munificent on Wednesday June 05, 2024 @07:39PM
(#40591890)
Smalltalk does have precedence, just not among infix operators. It has keyword, infix, and postfix expressions and needs to specify the relative precedence between those. In other words, the language has to decide if:
a b: c - d e
Is parsed like: a b: (c - (d e))
a b: ((c - d) e)
(a b: c) - (d e)
(a b: (c - d)) e
((a b: c) - d) eI spend far more time reading code than typing it, so the time to type () is in the noise compared to the time to remember precedence rules while reading.
If there were only a couple of operators, maybe precedence would be manageable, but there aren't.
The ratio of time spent on precedence parsing in compilers to utility feels very low to me. That being said, I do appreciate the satisfaction of being able to implement it declaratively as the author does here.