Comments (4)
Hello and thank you for the detailed bug report!
Here is my try:
$ hoa compiler:pp hoa://Library/Ruler/Grammar.pp <( echo 'a and b or c' ) -v dump
> #expression
> > #and
> > > token(identifier, a)
> > > #or
> > > > token(identifier, b)
> > > > token(identifier, c)
I guess the tree should look like this:
$ hoa compiler:pp hoa://Library/Ruler/Grammar.pp <( echo '(a and b) or c' ) -v dump
> #expression
> > #or
> > > #and
> > > > token(identifier, a)
> > > > token(identifier, b)
> > > token(identifier, c)
So in our implementation, logical operators are right-associatives, whilst they are commonly left-associatives.
from ruler.
Thank you for your reply.
In my eyes the problem isn't a question about left- or right-assiociatives. You can see that if you include my $rule3
in your inspections.
Either way (left- or right-assiociating), $rule2
and $rule3
will yield complementary results whilst they should be identical!
IMO operators must be set in relation to each other to achieve precedence. However I understand that with the current architecture this is far away from trivial.
Actually, I stumbled along this issue will thinking about how to implement new operators +
and *
, which need the same precedence...
from ruler.
@Pittiplatsch I am really really really sorry for the too late reply… I have finally time to work back on issues on Hoa. Excuse me. A PR has been proposed, see #107 please. Your feedback is valuable.
from ruler.
I'm still unsure about the right vs. left association thingy...
However, dividing the grammar into separate OR / AND pieces looks reasonable, as does your unit test, which exactly mirrors my test cases.
Thank you for fixing :-)
from ruler.
Related Issues (20)
- How could I combine different existing rules? HOT 1
- How can I check that array contain sub array? HOT 6
- Maybe an issue in `identifier` definition ? HOT 2
- Access to an array returned by a method property HOT 4
- Still maintained? HOT 3
- Space or no-space in expressions HOT 10
- Interface for writing rules
- Invert operator HOT 2
- Matching values in an Array? HOT 2
- I want to get all variable appear in string rule. Example "q1 != 8 and q2 != 12", i need ["q1", "q2"] How ? HOT 3
- Removing existing operators HOT 2
- Wrong use of instanceof HOT 3
- Incorrect condition on disassembly HOT 3
- Match any in array? HOT 5
- Error "Failed to open stream hoa://Library/Ruler/Grammar.pp" wich seems related to case sensitivity HOT 8
- Is this project still actively maintained? HOT 4
- Why operator cast to lowercase ? HOT 4
- Produce results in response of rule evaluations HOT 5
- Matches operator does not match HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ruler.