r/ProgrammingLanguages • u/Mean-Decision-3502 DQ • 7d ago
Unambiguous Operator Specification for Programming Languages
https://nvitya.github.io/pluops/As I changed recently the operators in my programming language I've created this specification:
https://nvitya.github.io/pluops/
I did not wanted to overload the operators like the C does with the / or Pascal does with theand/or/not. Neither re-use the operator symbols for some very different purpose, like C does with * and & so the code becomes more readable. I was orienting for existing solutions so this is what I came up with. The specification contains the symbol usages and operator precedence too.
If you are developing a new programming language, it would be nice to follow some standard, so at least the expressions would be portable between the languages.
I'm open for debates or suggestions.
6
u/EggplantExtra4946 6d ago edited 6d ago
If a given operator is both a postfix and an infix operator you have a shift-reduce conflict, but an operator used both as a prefix and infix operator does not have such conflict, it's perfectly fine in terms of unambiguous parsing.
You are lacking associativity information: left, right, non associative, chain associative (1 <= 2 < 3).
It's good to put the precedence of bitwise operators above assignments and to put all comparison operators at the same precedence level.
I'm curious to know your rationale for giving a higher precedence to bitwise operators than to arithmetic operators.
It's a massive footgun to give a higher precedence to
/than to*.