Narzędzia użytkownika

Narzędzia witryny


spirit

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
spirit [2008/04/16 23:19]
bwojcies
spirit [2008/04/16 23:59]
bwojcies
Linia 1: Linia 1:
-[[http://​example.com|Odnośnik zewnętrzny]]+
 ====== Biblioteka Boost Spirit ====== ====== Biblioteka Boost Spirit ======
 Bartłomiej Wojcieszek G1SST Bartłomiej Wojcieszek G1SST
Linia 239: Linia 239:
  
 ==== Zbierzmy wszystko razem ==== ==== Zbierzmy wszystko razem ====
 +Po tych podstawach, przydałoby się napisać krótki program ilustrujący faktyczne działanie biblioteki Spirit. Podany program zamienia formatowanie w stylu wiki na dokument html. Aby rozpocząc wprowadzanie należy otworzyć klamrę { a po zakończonym wprowadzaniu zamknąć klamrą }. Podobnie jak w wiki nagłówki oznacza się za pomocą symboli "​="​ linki tak jak w wiki, kod za pomocą tagów <​coding>​ </​coding>​. Program jest bardzo uproszczony,​ ale latwo mozna dodac więcej rozpoznawanych przez niego tagów.
  
-Po tych podstawach, przydałoby się napisać krótki program ilustrujący faktyczne działanie biblioteki Spirit. Wykorzytsmy w nim dyrektywy, prymitywy , reguły , operatory oraz akcje semantyczne. 
  
  
 <code cpp> <code cpp>
 +
 +
 #include <​boost/​spirit/​core.hpp>​ #include <​boost/​spirit/​core.hpp>​
 #include <​iostream>​ #include <​iostream>​
Linia 253: Linia 255:
  
 ////////////////////////////////////////////////////////////////////////////​ ////////////////////////////////////////////////////////////////////////////​
-// +//TUTAJ PODAJEMY AKCJE JAKIE BEDA WYKONYWANE W ZALEZNOSCI OD WEJSCIA
-//  Semantic actions +
-//+
 ////////////////////////////////////////////////////////////////////////////​ ////////////////////////////////////////////////////////////////////////////​
  
Linia 283: Linia 283:
  std::​string str(first, last);  std::​string str(first, last);
         std::cout << "<a href="​+str.substr(2,​str.find("​|",​2)-2)+">"​+str.substr(str.find("​|",​2)+1,​str.length()-5-(str.substr(2,​str.find("​|",​2)-2)).length())+"</​a>"​ << std::endl;         std::cout << "<a href="​+str.substr(2,​str.find("​|",​2)-2)+">"​+str.substr(str.find("​|",​2)+1,​str.length()-5-(str.substr(2,​str.find("​|",​2)-2)).length())+"</​a>"​ << std::endl;
 +   }
 +
 +void code(char const* first,char const* last)
 +   {
 +  
 + std::​string str(first, last);
 +        std::cout << "<​div style=\"​border-width:​ 1px; border-style:​ dashed; border-color:​ blue; \">"​+str.substr(6,​str.length()-13)+"</​div>"​ << std::endl;
    }    }
  
Linia 300: Linia 307:
  
 ///////////////////////////////////////////////////////////////////////////////​ ///////////////////////////////////////////////////////////////////////////////​
-//GRAMAR+//TUTAJ DEFINIUJEMY REGULY PARSOWANIA
 ///////////////////////////////////////////////////////////////////////////////​ ///////////////////////////////////////////////////////////////////////////////​
  
Linia 317: Linia 324:
             | (str_p("​=="​)>>​(*(~ch_p('​='​)))>>​str_p("​=="​))[&​h3Action]             | (str_p("​=="​)>>​(*(~ch_p('​='​)))>>​str_p("​=="​))[&​h3Action]
             | (str_p("​="​)>>​(*(~ch_p('​='​)))>>​str_p("​="​))[&​h4Action]             | (str_p("​="​)>>​(*(~ch_p('​='​)))>>​str_p("​="​))[&​h4Action]
 +            | (str_p("<​coding>"​)>>​*(anychar_p-str_p("</​coding>"​))>>​str_p("</​coding>"​))[&​code] ​          
             | (str_p("​[["​)>>​(*((~ch_p('​]'​))-ch_p('​|'​)))>>​ch_p('​|'​)>>​(*(~ch_p('​]'​)))>>​str_p("​]]"​))[&​href];​             | (str_p("​[["​)>>​(*((~ch_p('​]'​))-ch_p('​|'​)))>>​ch_p('​|'​)>>​(*(~ch_p('​]'​)))>>​str_p("​]]"​))[&​href];​
             document             document
spirit.txt · ostatnio zmienione: 2008/04/17 00:26 przez bwojcies