Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
spirit [2008/04/16 23:41] bwojcies |
spirit [2008/04/16 23:53] bwojcies |
||
---|---|---|---|
Linia 240: | Linia 240: | ||
==== Zbierzmy wszystko razem ==== | ==== Zbierzmy wszystko razem ==== | ||
- | 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. | + | 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 |
Linia 253: | Linia 253: | ||
//////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////// | ||
- | // | + | //TUTAJ PODAJEMY AKCJE JAKIE BEDA WYKONYWANE W ZALEZNOSCI OD WEJSCIA |
- | // Semantic actions | + | |
- | // | + | |
//////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////// | ||
Linia 283: | Linia 281: | ||
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 305: | ||
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// | ||
- | //GRAMAR | + | //TUTAJ DEFINIUJEMY REGULY PARSOWANIA |
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// | ||
Linia 310: | Linia 315: | ||
definition(html const& ) | definition(html const& ) | ||
{ | { | ||
- | header | + | header |
- | = ch_p('{')[&head]; | + | = ch_p('{')[&head]; |
tag | tag | ||
- | = (str_p("====")>>(*(~ch_p('=')))>>str_p("===="))[&h1Action] | + | = (str_p("====")>>(*(~ch_p('=')))>>str_p("===="))[&h1Action] |
| (str_p("===")>>(*(~ch_p('=')))>>str_p("==="))[&h2Action] | | (str_p("===")>>(*(~ch_p('=')))>>str_p("==="))[&h2Action] | ||
| (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 | ||
Linia 369: | Linia 375: | ||
} | } | ||
- | </code> | + | |
==== O bibliotece Spirit w sieci ==== | ==== O bibliotece Spirit w sieci ==== |