3 ms·
labels definitely matter. Naming is one of the two hardest things [0]. The point in this case is that the names are hard because they're making up for limitat
by spinningslate 6y ago
labels definitely matter. Naming is one of the two hardest things [0].
The point in this case is that the names are hard because they're making up for limitations in left-recursive grammars. Personally, I still find "Addable_expr" to be more intuitive than "additive_expr": where it means "an expression that can be added". Both are more intuitive (to me) than "Expr2". But that's personal preference, and part of why naming is hard :).
[0] https://martinfowler.com/bliki/TwoHardThings.html https://martinfowler.com/bliki/TwoHardThings.html
- srtjstjsj 6y agoTry your idea. It won't work. The reason is that they aren't "addable", they are precedence1 and precedence2. You can change Exp to Precedence if you wanted but that's just longer.
- tom_mellior 6y ago"It won't work" is a hilarious claim seeing how actual language standards do exactly this, and it works well. See the C standard for example: https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt https://web.archive.org/web/20161223125339/http://flash-gord... . Search for "additive-expression" to see the relevant grammar rules.
- nxpnsv 6y agoI am not disagreeing with you, I just think that the "grammar" still works even with terrible naming. It is harder to read, it is harder to maintain, but it is still real. Perhaps I am missing some subtler point here...
- tom_mellior 6y agoWhen I wrote "real grammars" above I meant the grammars that people write to specify "real" widely used production-quality programming languages. I linked to the C standard elsethread: https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt https://web.archive.org/web/20161223125339/http://flash-gord... Here is the Java specification: https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.17 https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.htm... Here is the Python language reference (with terser names, but definitely "m" for multiplicative and "a" for additive expressions): https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations https://docs.python.org/3/reference/expressions.html#binary-... These are "real" grammars. As opposed to a "toy" grammar that someone throws on GitHub to demonstrate an "X in 100 lines" thing.
- nxpnsv 6y agoThanks, i am enjoying reading this!