I have to admit I'm an absolute newbie in this and might not even understand what I am doing.
I am trying to make a grammar that at least contains grammar from BABA IS YOU, and if possible expands on it. I am using this tool to debug my grammar: http://jsmachines.sourceforge.net/machines/lalr1.html
Admittedly, my grammar is currently not LALR(1) (as seen by many shift/reduce conflicts which I am unsure on how to properly resolve).
So, when I enter "RED AND BLUE BABA IS YOU" into the parser, this is what I expect to see:

And yet what I see is:

I have no idea at where to dig to start understanding my problem and I need help with at least that
The Grammar I use is this: https://pastebin.com/5MHZrFLe
sentence' -> sentence
sentence -> give
give -> giver property
giver -> noun IS
selector -> adjective noun
multinoun -> noun AND
multinoun -> multinoun AND
multinoun -> multinoun noun
multiadjective -> adjective AND
multiadjective -> multiadjective AND
multiadjective -> multiadjective adjective
noun -> multinoun
noun -> selector
noun -> BABA
noun -> KEKE
noun -> ROBOT
adjective -> RED
adjective -> BLUE
adjective -> GREEN
property -> YOU
In order for the token
ANDin that sentence to be recognised, there would have to be a derivation sequence leading fromsentence'tomultiadjective. There is no such sequence, as can easily be verified by doing a simple reachability graph (which is just a DFS).That makes
multiadjectiveuseless in that grammar. It's slightly surprising that the tool you use doesn't warn you about that.That's not the case for
multinoun, which is reachable through thenoun -> multinounproduction. However, that creates a number of ambiguities, leading to shift/reduce conflicts. One example:vs
The general pattern for a bottom-up grammar representing a list of token-separated items is:
In such a grammar, the list is included in an outer production using the non-terminal
list, notitem. Addingitem -> listin order to be able to refer to it asitemleads to the same ambiguities as yournounnon-terminal, which more or less reproduces this error.