PLY's document: https://ply.readthedocs.io/_/downloads/en/latest/pdf/
I try to make it parse a[b]
:
precedence = (
# other rules...
('left', 'AND'),
# other rules...
('nonassoc', 'GET-ITEM'),
)
def p_expression(p):
"""
expression : expression AND expression
| expression '[' expression ']' %prec GET-ITEM
| other rules...
"""
But something bad happening, when I have this token stream, it do not make thing that I want:
expression AND expression '[' expression ']'
It do not shift token '['
but reduce expresion -> expression AND expression
.
It make me sad and I go to read the document. Now I know that it do not shift '['
because token '['
do not have high precedence... Wait but why? I have used %prec GET-ITEM
!
To be honest, I do not know how %prec
works (I only find two paragraphs in document)... Is it just change the first token's precedence? And how can I make it? Is it the only way that just make '['
have high precedence - but even '['
is not a operator?
Thx.