Boost Spirit の演算子

ID: 6
creation date: 2009/11/27 14:39
modification date: 2013/02/20 18:07
owner: taiji
tags: C++,Spirit,operator,EBNF

Boost にある Spirit は、EBNF(Extended Backus Naur Form)に似た形式を直接 C++ のコードとして表現することによって、構文解析の機能を提供するライブラリです。

Spirit で使用されている演算子を優先順位でまとめてみました。

Spirit Name EBNF Spiritでの分類 Description
+a Positive a+ Optional and Loops 1回以上のマッチ
*a Kleene star a* Optional and Loops 0回以上のマッチ
!a Optional a? Optional and Loops 0回または1回のマッチ
~a Negation [^...] charset C-aにマッチ(Cは文字集合全体)
a % b List a (b a)* Optional and Loops 1回以上の b 区切り a のリストのマッチ。a>>*(b>>a) と同義
a - b Difference a - b Set a にマッチかつ b にマッチしない。
a >> b Sequence a b Sequencing a,b の並びにマッチ
a & b Intersection なし Set a,b の両方にマッチ
a ^ b XOR a - b | b - a Set a か b にマッチし両方にはマッチしない。a-b|b-a と同義
a | b Union,Alternative a | b Set a か b にマッチ
a && b Sequential-and a b Sequencing a,b の並びにマッチ。a >> b と同義
a || b Sequential-or (a b) | a | b,(a b?) | b Sequencing a,b の並びもしくはどちらかにマッチ。a>>b|a|b,(a>>!b)|b と同義

私は git://vcs.aihara.co.jp/logdo.git の xpsed で sed スクリプトを構文解析するために使用しましたが、その後、新しい Spirit V2.1 がリリースされたので改めて試す予定。

0 コメント
ゲストコメント認証用なぞなぞ:
キーボードのLから左に全部打って下さい。それを二回やって下さい。 ...