From 200483d3fbb96c57426a1bde416d46711bca6afc Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 7 Dec 2011 09:18:43 +0000 Subject: [PATCH] Quickbook: Tighter code block parser. Not entirely sure about this. Maybe it should use a version switch. [SVN r75839] --- src/main_grammar.cpp | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main_grammar.cpp b/src/main_grammar.cpp index 5f5deb9..e1f69f0 100644 --- a/src/main_grammar.cpp +++ b/src/main_grammar.cpp @@ -565,23 +565,31 @@ namespace quickbook ; local.code_block = - ( - "```" >> *(*cl::blank_p >> cl::eol_p) >> - ( - *(cl::anychar_p - (*cl::space_p >> "```")) - >> !(*cl::blank_p >> cl::eol_p) - >> cl::eps_p(*cl::space_p >> "```") - ) [actions.code_block] - >> *cl::space_p >> "```" + "```" + >> ~cl::eps_p("`") + >> *(*cl::blank_p >> cl::eol_p) + >> ( *( "````" >> *cl::ch_p('`') + | ( cl::anychar_p + - (*cl::space_p >> "```" >> ~cl::eps_p("`")) + ) + ) + >> !(*cl::blank_p >> cl::eol_p) + ) [actions.code_block] + >> ( *cl::space_p >> "```" + | cl::eps_p [actions.error("Unfinished code block")] ) - | ( - "``" >> *(*cl::blank_p >> cl::eol_p) >> - ( - *(cl::anychar_p - (*cl::space_p >> "``")) - >> !(*cl::blank_p >> cl::eol_p) - >> cl::eps_p(*cl::space_p >> "``") - ) [actions.code_block] - >> *cl::space_p >> "``" + | "``" + >> ~cl::eps_p("`") + >> *(*cl::blank_p >> cl::eol_p) + >> ( *( "```" >> *cl::ch_p('`') + | ( cl::anychar_p + - (*cl::space_p >> "``" >> ~cl::eps_p("`")) + ) + ) + >> !(*cl::blank_p >> cl::eol_p) + ) [actions.code_block] + >> ( *cl::space_p >> "``" + | cl::eps_p [actions.error("Unfinished code block")] ) ;