axiacore / py-expression-eval

MIT License
149 stars 54 forks source link

Add "not" and "xor" operators #55

Closed thimel closed 4 years ago

thimel commented 4 years ago

I originally requested the "not" operator be added. Someone kindly did it, but I tested it and it didn't work. I believe I have it working properly. While I was at it, I added the "xor" function (exclusive OR).

I handled parsing for "not" in a manner similar to how "-" was handled. This required adding an "if" statement which the previous person missed. I also had to make adjustments to tokenprio to get the operator precedence correct. ("not" gets done before "and" which gets done before "or")

Note that Python only has a bitwise exclusive or operator with symbol "^" which is high on the priority ladder. Since this parser uses "^" for exponentiation, I used "xor" and made its priority the same as "or"

I noticed while working on this that the parser has multiplication and division with different priorities. In all languages I know, these have equal precedence. I didn't change it because someone may be using this package and changing this could change their results.

This is my first time ever making a Git pull request on someone else's repository. Please forgive me if I have messed up in some way.

coveralls commented 4 years ago

Coverage Status

Coverage remained the same at 0.0% when pulling 757acdf405e5c7e530da86e44150fa36e5dd3240 on thimel:master into dcb94a433805f2df6278d335f35003820f24348a on Axiacore:master.

camilonova commented 4 years ago

Thank you