summaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/line_p.cpp20
-rw-r--r--src/parser/line_p.h31
-rw-r--r--src/parser/paragraph_p.cpp2
-rw-r--r--src/parser/paragraph_p.h4
-rw-r--r--src/parser/text_p.cpp10
5 files changed, 59 insertions, 8 deletions
diff --git a/src/parser/line_p.cpp b/src/parser/line_p.cpp
new file mode 100644
index 0000000..8426679
--- /dev/null
+++ b/src/parser/line_p.cpp
@@ -0,0 +1,20 @@
+/*
+Copyright (c) 2010, 2011, Grégoire Duchêne <gduchene@fastmail.net>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+#include "line_p.h"
+
+line_p::line_p() : line_p::base_type(line_) {
+ line_ = +text_(ph::val(L"*'`$@_[\n")) > qi::eol;
+}
diff --git a/src/parser/line_p.h b/src/parser/line_p.h
new file mode 100644
index 0000000..be4b61b
--- /dev/null
+++ b/src/parser/line_p.h
@@ -0,0 +1,31 @@
+/*
+Copyright (c) 2010, 2011, Grégoire Duchêne <gduchene@fastmail.net>
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+#ifndef _MPPDOWN_LINE_P
+#define _MPPDOWN_LINE_P
+#include <boost/spirit/include/qi.hpp>
+#include "../elements.h"
+#include "text_p.h"
+
+namespace qi = boost::spirit::qi;
+namespace ph = boost::phoenix;
+
+struct line_p : qi::grammar<iiterator, line_t()> {
+ qi::rule<iiterator, line_t()> line_;
+ text_p text_;
+
+ line_p();
+};
+#endif
diff --git a/src/parser/paragraph_p.cpp b/src/parser/paragraph_p.cpp
index 46f0935..d7470ea 100644
--- a/src/parser/paragraph_p.cpp
+++ b/src/parser/paragraph_p.cpp
@@ -16,5 +16,5 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "paragraph_p.h"
paragraph_p::paragraph_p() : paragraph_p::base_type(paragraph_) {
- paragraph_ = +text_(ph::val(L"*`$^@["));
+ paragraph_ = +line_ > qi::eol;
}
diff --git a/src/parser/paragraph_p.h b/src/parser/paragraph_p.h
index 7409b52..f7f1f56 100644
--- a/src/parser/paragraph_p.h
+++ b/src/parser/paragraph_p.h
@@ -17,14 +17,14 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define _MPPDOWN_PARAGRAPH_P
#include <boost/spirit/include/qi.hpp>
#include "../elements.h"
-#include "text_p.h"
+#include "line_p.h"
namespace qi = boost::spirit::qi;
namespace ph = boost::phoenix;
struct paragraph_p : qi::grammar<iiterator, paragraph_t()> {
qi::rule<iiterator, paragraph_t()> paragraph_;
- text_p text_;
+ line_p line_;
paragraph_p();
};
diff --git a/src/parser/text_p.cpp b/src/parser/text_p.cpp
index 4aa6a68..bd16a60 100644
--- a/src/parser/text_p.cpp
+++ b/src/parser/text_p.cpp
@@ -22,11 +22,11 @@ text_p::text_p() : text_p::base_type(text_) {
text_ = stext_(_r1) | pstext_(_r1) | atom_ | ptext_(_r1);
- stext_ = lit("***") >> attr(VSEMPH) >> +text_(_r1) >> "***"
- | lit("**") >> attr(SEMPH) >> +text_(_r1) >> "**"
- | lit('*') >> attr(EMPH) >> +text_(_r1) >> '*'
- | lit("''") >> attr(SALT) >> +text_(_r1)>> "''"
- | lit('\'') >> attr(ALT) >> +text_(_r1) >> '\''
+ stext_ = lit("***") >> attr(VSEMPH) >> +text_(ph::val(L"*'`$@_[")) >> "***"
+ | lit("**") >> attr(SEMPH) >> +text_(ph::val(L"*'`$@_[")) >> "**"
+ | lit('*') >> attr(EMPH) >> +text_(ph::val(L"*'`$@_[")) >> '*'
+ | lit("''") >> attr(SALT) >> +text_(ph::val(L"*'`$@_["))>> "''"
+ | lit('\'') >> attr(ALT) >> +text_(ph::val(L"*'`$@_[")) >> '\''
| lit('`') >> attr(CODE) >> +ptext_(val(L"`")) >> '`'
| lit('$') >> attr(MATH) >> +ptext_(val(L"$")) >> '$'
| lit("^{") >> attr(SUPER) >> +text_(val(L"*'`$^}[")) >> '}'