これに合わせようとしている
f(some_thing) == 'something else'
- f(some_thing)は式である関数呼び出しです
- ==はブール演算子です
- 'something else'は文字列であり、式でもあります
したがって、ブール式は
expression operator expression
問題は、左再帰なしでそれを行う方法を理解できないことです これらは私のルールです
expression
=
bool_expression
/ function_call
/ string
/ real_number
/ integer
/ identifier
bool_expression
= l:expression space* op:bool_operator space* r:expression
{ return ... }
文法表記法を使用して、私は持っています
O := ==|<=|>=|<|>|!= // operators
E := B|.... // expression, many non terminals
B := EOE
私の文法はEOEなので、左手アルゴリズムの使い方がわかりません。
A := Ab|B
transforms into
A := BA'
A':= e|bA
ここで、e は空で、b は端末です