私はいくつかの文字列演算子をサポートする必要があるflex-bisonプロジェクトを持っています。演算子 '^'は文字列を逆にすることを意味し、演算子[i]は文字列中のインデックスiを返します。 正しい入力と出力の例を示します。その後、バイソンの演算子優先度
input : ^"abc"[0] ---> correct output: "c", my output: "a"
私は(「CBA」)、それを逆にする最初のためだと0インデックス(「CBA」は[0] Cである)を取ります。 今、私はその優先順位を行う方法がわからないので、 "abc" [0] - > "a"を取ってから逆に "a"を取るので、コードは "a"を出力します。今の私のバイソンファイルには、
%left STR MINI
%left '^'
substring:
STR MINI { //THIS IS DONE FIRST, SUBSTRING
$$ = substringFind($1,$2,$2,temp);
}
| '^' substring { //BUT I WANT THIS (REVERSING) TO BE FIRST
$$ = reverseStrings($2,temp);
}
;
どのようにその優先順位を変更できますか?私は実際に優先順位のルールを理解していない、複数(*)の前にプラス(+)で非常に簡単だったが、それらの演算子で私はそれを扱う方法を本当に知らない。 すべてのヘルプ...?
を。 MINIとは何ですか? – EJP
MINIは "abc" [0]のようなインデックスです。私は0としてminiを取得します。私は2を分離する方法を理解していません。 – mooly
@EJP: 'substring:STR |部分文字列MINI | '^' substring'と優先順位宣言。解決する競合がないため、優先順位の宣言はOPで機能しません。 (私は優先順位宣言のないバージョンも好きですが)+ – rici