以前、Boost の Spirit (Classic) について書きましたが、新しい Boost Spirit V2 で使用されている演算子を優先順位でまとめてみました。
Spirit V2 |
Name | EBNF | SpiritのAttribute |
Description |
&a |
And Predicate | なし | unused_type,A |
aにマッチする。 |
-a |
Optional | なし | optional<A> |
0回または1回のマッチ |
+a |
Plus | a+ | vector<A> |
1回以上のマッチ |
*a |
Kleene | a* | vector<A> |
0回以上のマッチ |
!a |
Not Predicate | なし | unused_type,A |
aにマッチしない。 |
~a |
Negation | [^...] | - |
C-aにマッチ(Cは文字集合全体) |
a % b |
List | a (b a)* | vector<A> |
1回以上の b 区切り a のリストのマッチ。a>>*(b>>a) と同義 |
a - b |
Difference | a - b | A |
a にマッチかつ b にマッチしない。 |
a >> b,a << b |
Sequence | a b | tupple<A,B> |
a,b の並びにマッチ |
a > b |
Expect | a b | tupple<A,B> |
a,b の並びにマッチしなければ例外 |
a ^ b |
Permutation | a - b | b - a | tuple<optional<A>,optional<B> > |
a か b にマッチし両方にはマッチしない。a-b|b-a と同義 |
a | b |
Alternative | a | b | variant<A,B> |
a か b にマッチ |
a || b |
Sequential Or | (a b) | a | b,(a b?) | b | tuple<optional<A>,optional<B> > |
a,b の並びもしくはどちらかにマッチ。a>>b|a|b,(a>>-b)|b と同義 |
「&
」Intersection,「&&
」Sequential-and がなくなり「!
」Optional が「-
」に変わっているようです。