Expressão booleana de análise sem recursão da mão esquerda
Estou tentando corresponder isso
f(some_thing) == 'something else'
f (alguma coisa) é uma chamada de função, que é uma expressão== é um operador booleano'algo mais' é uma string, que também é uma expressãoentão a expressão booleana deve ser
expression operator expression
O problema é que não consigo descobrir como fazer isso sem recursão à esquerda Essas são as minhas regras
expression
=
bool_expression
/ function_call
/ string
/ real_number
/ integer
/ identifier
bool_expression
= l:expression space* op:bool_operator space* r:expression
{ return ... }
Usando a notação gramatical, tenho
O := ==|<=|>=|<|>|!= // operators
E := B|.... // expression, many non terminals
B := EOE
Porque a minha gramática é EOE eu não sei como usar o algoritmo da esquerda que é
A := Ab|B
transforms into
A := BA'
A':= e|bA
Onde e está vazio eb é um terminal