FlexとBisonを使用して、論理「and」、「or」、「not」操作、および「()」を使用したネストされた部分式をサポートするブールクエリ言語の文法仕様があります。
「(A&B)|(C&D)」として解析したい「AとBまたはCとD」のようなクエリが実際には「A&(B |( CD ) )"。これは結合性の問題であるとほぼ確信していますが、適切な説明や例をどこにも見つけることができないようです。それか、重要な何かが欠けています。
boolpars.yからの関連情報:
%token TOKEN
%token OPEN_PAREN CLOSE_PAREN
%right NOT
%left AND
%left OR
%%
query: expression { ... }
;
expression: expression AND expression { ... }
| expression OR expression { ... }
| NOT expression { ... }
| OPEN_PAREN expression CLOSE_PAREN { ... }
| TOKEN { ... }
;
誰かが欠陥を見つけることができますか?バイソンが「または」適切な優先順位を与えていない理由がわかりません。