summaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/text_p.cpp8
-rw-r--r--src/parser/text_p.h1
2 files changed, 6 insertions, 3 deletions
diff --git a/src/parser/text_p.cpp b/src/parser/text_p.cpp
index 447a556..f833743 100644
--- a/src/parser/text_p.cpp
+++ b/src/parser/text_p.cpp
@@ -20,7 +20,7 @@ text_p::text_p() : text_p::base_type(text_) {
using namespace ph;
using qi::standard_wide::char_;
- text_ = stext_(_r1) | pstext_(_r1) | ptext_(_r1);
+ text_ = stext_(_r1) | pstext_(_r1) | atom_ | ptext_(_r1);
stext_ = lit("***") >> attr(VSEMPH) >> +text_(_r1) >> "***"
| lit("**") >> attr(SEMPH) >> +text_(_r1) >> "**"
@@ -37,7 +37,9 @@ text_p::text_p() : text_p::base_type(text_) {
pstext_ = lit('[') >> attr(LINK) >> +text_(val(L"]")) >> ']' >>
lit('(') >> ptext_(val(L")")) >> ')';
+ atom_ = lit(L"\\ ") >> attr(NBSP);
+
ptext_ = +(echar_ | rchar_(_r1));
- echar_ = lit('\\') >> char_;
- rchar_ = char_ - char_(_r1);
+ echar_ = lit('\\') >> ~char_(' ');
+ rchar_ = ~char_('\\') - char_(_r1);
}
diff --git a/src/parser/text_p.h b/src/parser/text_p.h
index 35fc41f..27f84c0 100644
--- a/src/parser/text_p.h
+++ b/src/parser/text_p.h
@@ -27,6 +27,7 @@ struct text_p : qi::grammar<iiterator, text_t(std::wstring)> {
qi::rule<iiterator, text_t(std::wstring)> text_;
qi::rule<iiterator, stext_t(std::wstring)> stext_;
qi::rule<iiterator, pstext_t(std::wstring)> pstext_;
+ qi::rule<iiterator, stattribute_t()> atom_;
qi::rule<iiterator, std::wstring(std::wstring)> ptext_;
qi::rule<iiterator, wchar_t()> echar_;
qi::rule<iiterator, wchar_t(std::wstring)> rchar_;