| エスケープ文字パーサ |
![]() |
![]() |
エスケープ文字パーサはC/C++、 LEX 、Perl の正規表現などで用いられえいるエスケープ文字シーケンスを構文解析するユーティリティパーサである。 confix_p ユーティリティパーサと組み合わせると、ダブルクォートや他のエスケープ文字を含む C/C++ 文字列を構文解析する際に便利である:
confix_p('"', *c_escape_ch_p, '"')
二つの異なるタイプのエスケープ文字パーサがある: C/C++ のエスケープ文字シーケンスを構文解析する c_escape_ch_p と、 LEX スタイルのエスケープ文字シーケンスを構文解析する lex_escape_ch_p である。 次のテーブルはこれらのユーティリティパーサが理解する有効な文字シーケンスを示す。
| 有効なエスケープ文字シーケンスのまとめ | |
| c_escape_ch_p |
|
| lex_escape_ch_p |
上記全ての C/C++ エスケープ文字シーケンスに加え、バックスラッシュに続くあらゆる他の文字 |
エスケープ文字パーサに直接接続されたセマンティックアクションがある場合、 全ての有効なエスケープ文字はそれらに等価な文字 (例えば、'r' が後に続くバックスラッシュは '\r')に変換され、 それが接続されたアクターを消費する(fed)。 構文解析される十六進数や八進数数字の数は一つの入力文字のサイズに依存する。 オーバーフローは検出され、非マッチを生成する。 lex_escape_ch_pは、接続されたアクションにエスケープされない文字を渡す時、 有効な C/C++ エスケープシーケンスとしてリストに挙げられていない全ての文字シーケンスから 先行する(leading)バックスラッシュを剥ぎ取る(strip)。
だが(though)注意して欲しい、 最も外側のパーサに接続されたセマンティックアクションがあるなら (例えば (*c_escape_ch_p)[some_actor] におけるように。 ここでアクションは kleene star が生成したパーサに接続されている)、 その時点では変換は行われず、neverthless エスケープ文字は正しく構文解析される。 この制限はこのライブラリの将来のバージョンでは取り除かれるだろう。
![]() |
![]() |
Copyright © 2001-2002 Daniel C. Nuffer
Permission to copy, use, modify, sell and distribute this document
is granted provided this copyright notice appears in all copies. This document
is provided "as is" without express or implied warranty, and with
no claim as to its suitability for any purpose.
Japanese Translation Copyright © 2003 Kent.N
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。
このドキュメントの対象: Boost Version 1.30.0
最新版ドキュメント(英語)