diff options
Diffstat (limited to 'html')
-rw-r--r-- | html/017parse_tree.cc.html | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/html/017parse_tree.cc.html b/html/017parse_tree.cc.html index 98f55374..f700033e 100644 --- a/html/017parse_tree.cc.html +++ b/html/017parse_tree.cc.html @@ -115,10 +115,11 @@ string_tree* parse_string_tree<span class="Delimiter">(</span>istream& in<sp <span class="Delimiter">}</span> in<span class="Delimiter">.</span>get<span class="Delimiter">();</span> <span class="Comment">// skip ')'</span> assert<span class="Delimiter">(</span>*curr == <span class="Constant">NULL</span><span class="Delimiter">);</span> + <span class="Normal">if</span> <span class="Delimiter">(</span>result<span class="Delimiter">-></span>right == <span class="Constant">NULL</span><span class="Delimiter">)</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span> <span class="Comment">// standardize the final element to always be on the right if it's an atom</span> <span class="Comment">// (a b c) => (a b . c) in s-expression parlance</span> string_tree* tmp = result<span class="Delimiter">;</span> - <span class="Normal">while</span> <span class="Delimiter">(</span>tmp<span class="Delimiter">-></span>right && tmp<span class="Delimiter">-></span>right<span class="Delimiter">-></span>right<span class="Delimiter">)</span> tmp = tmp<span class="Delimiter">-></span>right<span class="Delimiter">;</span> + <span class="Normal">while</span> <span class="Delimiter">(</span>tmp<span class="Delimiter">-></span>right<span class="Delimiter">-></span>right<span class="Delimiter">)</span> tmp = tmp<span class="Delimiter">-></span>right<span class="Delimiter">;</span> assert<span class="Delimiter">(</span>!tmp<span class="Delimiter">-></span>right<span class="Delimiter">-></span>atom<span class="Delimiter">);</span> <span class="Normal">if</span> <span class="Delimiter">(</span>!tmp<span class="Delimiter">-></span>right<span class="Delimiter">-></span>left<span class="Delimiter">-></span>atom<span class="Delimiter">)</span> <span class="Identifier">return</span> result<span class="Delimiter">;</span> string_tree* tmp2 = tmp<span class="Delimiter">-></span>right<span class="Delimiter">;</span> @@ -140,6 +141,12 @@ string_tree* parse_string_tree<span class="Delimiter">(</span>istream& in<sp <span class="muData">container</span> bar [ ] <span class="traceContains">+parse: product: {1: ("foo" ("address" "array" "character") ("bar" "number"))}</span> + +<span class="Delimiter">:(scenario dilated_singleton_tree)</span> +<span class="muRecipe">def</span> main [ + <span class="Delimiter">{</span><span class="Constant">1</span>: number<span class="Delimiter">,</span> foo: <span class="Delimiter">(</span>bar<span class="Delimiter">)}</span><span class="Special"> <- </span>copy <span class="Constant">34</span> +] +<span class="traceContains">+parse: product: {1: "number", "foo": ("bar")}</span> </pre> </body> </html> |