From f6fb9390a9e117b9d9afb3aead3fa07030b6fe38 Mon Sep 17 00:00:00 2001 From: Myun2 Date: Sat, 24 Jul 2010 12:38:07 +0900 Subject: [PATCH] =?utf8?q?lexical,=20roast=5Fxml:=20attr,=20element?= =?utf8?q?=E3=82=92typedef=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- roast/include/roast/lexical/structure_base.hpp | 116 +++++++++++++++++++----- roast/include/roast/xml/roast_xml/structure.hpp | 29 +++--- 2 files changed, 108 insertions(+), 37 deletions(-) diff --git a/roast/include/roast/lexical/structure_base.hpp b/roast/include/roast/lexical/structure_base.hpp index 114e3b42..6a94d491 100644 --- a/roast/include/roast/lexical/structure_base.hpp +++ b/roast/include/roast/lexical/structure_base.hpp @@ -12,6 +12,28 @@ namespace roast { //////////////////////////////////////////////////////////////// + class _true_analyze + { + public: + template + bool analyze(T&) + { + return true; + } + }; + + class _false_analyze + { + public: + template + bool analyze(T&) + { + return false; + } + }; + + //////////////////////////////////////////////////////////////// + template class optional { @@ -36,6 +58,55 @@ namespace roast { }; + template + class seq + { + public: + template + bool analyze(T& it) + { + T1 t1; + if ( t1.analyze(it) == false ) + return false; + T2 t2; + if ( t2.analyze(it) == false ) + return false; + T3 t3; + if ( t3.analyze(it) == false ) + return false; + T4 t4; + if ( t4.analyze(it) == false ) + return false; + T5 t5; + if ( t5.analyze(it) == false ) + return false; + T6 t6; + if ( t6.analyze(it) == false ) + return false; + T7 t7; + if ( t7.analyze(it) == false ) + return false; + T8 t8; + if ( t8.analyze(it) == false ) + return false; + T9 t9; + if ( t9.analyze(it) == false ) + return false; + T10 t10; + if ( t10.analyze(it) == false ) + return false; + return true; + } + }; + //////////////////////////////////////////////////////////////// template class seq2 @@ -193,26 +264,6 @@ namespace roast { }; - class _true_analyze - { - public: - template - bool analyze(T&) - { - return true; - } - }; - - class _false_analyze - { - public: - template - bool analyze(T&) - { - return false; - } - }; - template class or { @@ -363,7 +414,7 @@ namespace roast //////////////////////////////////////////////////////////// template - class get_string + class get_string_by_ { public: __It start_it; @@ -392,8 +443,10 @@ namespace roast } }; + ///////////// + template - class _get_string_end_proc_analyze + class _get_string_end_proc_by_analyze_true { public: template @@ -406,9 +459,26 @@ namespace roast }; template - class get_string_end_analyze : public get_string<_get_string_end_proc_analyze<_EndAnalyzeT>, __It> + class get_string_end_by_analyze_true : public get_string_by_<_get_string_end_proc_by_analyze_true<_EndAnalyzeT>, __It> {}; + ///////////// + + template + class get_string_end_by + { + public: + template + bool analyze(_It& it) + { + get_string_end_by_analyze_true gs; + if ( gs.analyze(it) == false ) + return false; + /// + return true; + } + }; + //////////////////////////////////////////////////////////// } diff --git a/roast/include/roast/xml/roast_xml/structure.hpp b/roast/include/roast/xml/roast_xml/structure.hpp index 61eaefba..d501afc0 100644 --- a/roast/include/roast/xml/roast_xml/structure.hpp +++ b/roast/include/roast/xml/roast_xml/structure.hpp @@ -134,6 +134,7 @@ namespace roast ////////////////////////////////////////////////////////////////// + /* class attr { public: @@ -188,6 +189,16 @@ namespace roast return true; } }; + */ + typedef seq< + get_string_end_by< or >, + noreqws, + equal, + noreqws, + dblquote, + get_string_end_by< dblquote >, + dblquote + > attr; //typedef ws_ > attrs; //typedef seq3, nrqws> attrs; @@ -206,7 +217,7 @@ namespace roast typedef or tag;*/ - class element + /*class element { public: template @@ -252,20 +263,10 @@ namespace roast return true; } - }; + };*/ - //typedef seq greater> element; - - class body - { - public: - template - bool analyze(const T& it) - { - return true; - } - }; - //typedef element body; + typedef seq, greater> element; + typedef element body; /*class header { -- 2.11.0