diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-05-30 19:30:33 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-05-30 19:37:02 -0700 |
commit | 4bbd3ded0b767ae0919551776e4c17189140e735 (patch) | |
tree | 29300d13dc2b869378fbde7f5456b1cfb519482d /html/013literal_string.cc.html | |
parent | 06f3cebe3eb627e18910b6394bfde88c806c8f91 (diff) | |
download | mu-4bbd3ded0b767ae0919551776e4c17189140e735.tar.gz |
1517
Diffstat (limited to 'html/013literal_string.cc.html')
-rw-r--r-- | html/013literal_string.cc.html | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/html/013literal_string.cc.html b/html/013literal_string.cc.html index 51b60ee4..19683498 100644 --- a/html/013literal_string.cc.html +++ b/html/013literal_string.cc.html @@ -10,16 +10,17 @@ <meta name="colorscheme" content="minimal"> <style type="text/css"> <!-- -pre { white-space: pre-wrap; font-family: monospace; color: #d0d0d0; background-color: #000000; } -body { font-family: monospace; color: #d0d0d0; background-color: #000000; } +pre { white-space: pre-wrap; font-family: monospace; color: #d0d0d0; background-color: #080808; } +body { font-family: monospace; color: #d0d0d0; background-color: #080808; } * { font-size: 1em; } -.CommentedCode { color: #6c6c6c; } +.traceContains { color: #008000; } +.cSpecial { color: #008000; } .Constant { color: #008080; } .Comment { color: #8080ff; } .Delimiter { color: #c000c0; } .Special { color: #ff6060; } .Identifier { color: #008080; } -.traceContains { color: #008000; } +.CommentedCode { color: #6c6c6c; } --> </style> @@ -67,15 +68,23 @@ string slurp_quoted<span class="Delimiter">(</span>istream& in<span class="D assert<span class="Delimiter">(</span>!in<span class="Delimiter">.</span>eof<span class="Delimiter">());</span> assert<span class="Delimiter">(</span>in<span class="Delimiter">.</span>peek<span class="Delimiter">()</span> == <span class="Constant">'['</span><span class="Delimiter">);</span> ostringstream out<span class="Delimiter">;</span> - int size = <span class="Constant">0</span><span class="Delimiter">;</span> + int brace_depth = <span class="Constant">0</span><span class="Delimiter">;</span> while <span class="Delimiter">(</span>!in<span class="Delimiter">.</span>eof<span class="Delimiter">())</span> <span class="Delimiter">{</span> char c = in<span class="Delimiter">.</span>get<span class="Delimiter">();</span> -<span class="CommentedCode">//? cout << c << '\n'; //? 1</span> +<span class="CommentedCode">//? cout << (int)c << ": " << brace_depth << '\n'; //? 2</span> + if <span class="Delimiter">(</span>c == <span class="cSpecial">'\\'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span> + out << <span class="Delimiter">(</span>char<span class="Delimiter">)</span>in<span class="Delimiter">.</span>get<span class="Delimiter">();</span> + <span class="Identifier">continue</span><span class="Delimiter">;</span> + <span class="Delimiter">}</span> out << c<span class="Delimiter">;</span> <span class="CommentedCode">//? cout << out.str() << "$\n"; //? 1</span> - if <span class="Delimiter">(</span>c == <span class="Constant">'['</span><span class="Delimiter">)</span> ++size<span class="Delimiter">;</span> - if <span class="Delimiter">(</span>c == <span class="Constant">']'</span><span class="Delimiter">)</span> --size<span class="Delimiter">;</span> - if <span class="Delimiter">(</span>size == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span> + if <span class="Delimiter">(</span>c == <span class="Constant">'['</span><span class="Delimiter">)</span> ++brace_depth<span class="Delimiter">;</span> + if <span class="Delimiter">(</span>c == <span class="Constant">']'</span><span class="Delimiter">)</span> --brace_depth<span class="Delimiter">;</span> + if <span class="Delimiter">(</span>brace_depth == <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Identifier">break</span><span class="Delimiter">;</span> + <span class="Delimiter">}</span> + if <span class="Delimiter">(</span>in<span class="Delimiter">.</span>eof<span class="Delimiter">()</span> && brace_depth > <span class="Constant">0</span><span class="Delimiter">)</span> <span class="Delimiter">{</span> + raise << <span class="Constant">"unbalanced '['</span><span class="cSpecial">\n</span><span class="Constant">"</span><span class="Delimiter">;</span> + <span class="Identifier">return</span> <span class="Constant">""</span><span class="Delimiter">;</span> <span class="Delimiter">}</span> <span class="Identifier">return</span> out<span class="Delimiter">.</span>str<span class="Delimiter">();</span> <span class="Delimiter">}</span> @@ -100,6 +109,12 @@ recipe main [ ] <span class="traceContains">+parse: ingredient: {name: "abc [def]", properties: ["abc [def]": "literal-string"]}</span> +<span class="Delimiter">:(scenario string_literal_escaped)</span> +recipe main [ + <span class="Constant">1</span>:address:array:character<span class="Special"> <- </span>copy [abc \[def] +] +<span class="traceContains">+parse: ingredient: {name: "abc [def", properties: ["abc [def": "literal-string"]}</span> + <span class="Delimiter">:(scenario string_literal_and_comment)</span> recipe main [ <span class="Constant">1</span>:address:array:character<span class="Special"> <- </span>copy [abc] <span class="Comment"># comment</span> |