From 4690ce81e079fc58cae8d6d583e5e3eb3ed81a83 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Wed, 9 Mar 2016 02:56:27 -0800 Subject: 2743 Looks like "TOhtml | " doesn't work on Mac OS X for some reason.. --- html/052tangle.cc.html | 130 +++++++++++++++++++++++-------------------------- 1 file changed, 61 insertions(+), 69 deletions(-) (limited to 'html/052tangle.cc.html') diff --git a/html/052tangle.cc.html b/html/052tangle.cc.html index dc26e9ea..fd51f57f 100644 --- a/html/052tangle.cc.html +++ b/html/052tangle.cc.html @@ -3,35 +3,28 @@ Mu - 052tangle.cc - - + + - - + - - -
+
 //: Allow code for recipes to be pulled in from multiple places and inserted
 //: at special labels called 'waypoints'. Unlike jump targets, a recipe can
 //: have multiple ambiguous waypoints with the same name. Any 'before' and
@@ -41,7 +34,7 @@ body { font-family: monospace; color: #eeeeee; background-color: #080808; }
 //: todo: switch recipe.steps to a more efficient data structure.
 
 :(scenario tangle_before)
-recipe main [
+def main [
   1:number <- copy 0
   <label1>
   3:number <- copy 0
@@ -67,23 +60,23 @@ After_fragments.clear();<
 Fragments_used.clear();
 
 :(before "End Command Handlers")
-else if (command == "before") {
+else if (command == "before") {
   string label = next_word(in);
   recipe tmp;
   slurp_body(in, tmp);
-  if (is_waypoint(label))
+  if (is_waypoint(label))
     Before_fragments[label].steps.insert(Before_fragments[label].steps.end(), tmp.steps.begin(), tmp.steps.end());
-  else
-    raise_error << "can't tangle before label " << label << '\n' << end();
+  else
+    raise << "can't tangle before label " << label << '\n' << end();
 }
-else if (command == "after") {
+else if (command == "after") {
   string label = next_word(in);
   recipe tmp;
   slurp_body(in, tmp);
-  if (is_waypoint(label))
+  if (is_waypoint(label))
     After_fragments[label].steps.insert(After_fragments[label].steps.begin(), tmp.steps.begin(), tmp.steps.end());
-  else
-    raise_error << "can't tangle after label " << label << '\n' << end();
+  else
+    raise << "can't tangle after label " << label << '\n' << end();
 }
 
 //: after all recipes are loaded, insert fragments at appropriate labels.
@@ -95,21 +88,21 @@ Transform.push_back(//: include more labels that need further insertions. Track which labels we've
 //: already processed using an extra field.
 :(before "End instruction Fields")
-mutable bool tangle_done;
+mutable bool tangle_done;
 :(before "End instruction Constructor")
 tangle_done = false;
 
 :(code)
-void insert_fragments(const recipe_ordinal r) {
-  bool made_progress = true;
-  long long int pass = 0;
-  while (made_progress) {
+void insert_fragments(const recipe_ordinal r) {
+  bool made_progress = true;
+  long long int pass = 0;
+  while (made_progress) {
     made_progress = false;
     // create a new vector because insertions invalidate iterators
     vector<instruction> result;
-    for (long long int i = 0; i < SIZE(get(Recipe, r).steps); ++i) {
-      const instruction& inst = get(Recipe, r).steps.at(i);
-      if (!inst.is_label || !is_waypoint(inst.label) || inst.tangle_done) {
+    for (long long int i = 0; i < SIZE(get(Recipe, r).steps); ++i) {
+      const instruction& inst = get(Recipe, r).steps.at(i);
+      if (!inst.is_label || !is_waypoint(inst.label) || inst.tangle_done) {
         result.push_back(inst);
         continue;
       }
@@ -120,10 +113,10 @@ void insert_fragments(const recipe_ordinal r'+' << get(Recipe, r).name << '_' << pass << '_' << i;
       // ok to use contains_key even though Before_fragments uses [],
       // because appending an empty recipe is a noop
-      if (contains_key(Before_fragments, inst.label))
+      if (contains_key(Before_fragments, inst.label))
         append_fragment(result, Before_fragments[inst.label].steps, prefix.str());
       result.push_back(inst);
-      if (contains_key(After_fragments, inst.label))
+      if (contains_key(After_fragments, inst.label))
         append_fragment(result, After_fragments[inst.label].steps, prefix.str());
     }
     get(Recipe, r).steps.swap(result);
@@ -131,7 +124,7 @@ void insert_fragments(const recipe_ordinal r}
 }
 
-void append_fragment(vector<instruction>& base, const vector<instruction>& patch, const string prefix) {
+void append_fragment(vector<instruction>& base, const vector<instruction>& patch, const string prefix) {
   // append 'patch' to 'base' while keeping 'base' oblivious to any new jump
   // targets in 'patch' oblivious to 'base' by prepending 'prefix' to them.
   // we might tangle the same fragment at multiple points in a single recipe,
@@ -139,54 +132,54 @@ void append_fragment(vector<instruction>&am
   // so we'll keep jump targets local to the specific before/after fragment
   // that introduces them.
   set<string> jump_targets;
-  for (long long int i = 0; i < SIZE(patch); ++i) {
-    const instruction& inst = patch.at(i);
-    if (inst.is_label && is_jump_target(inst.label))
+  for (long long int i = 0; i < SIZE(patch); ++i) {
+    const instruction& inst = patch.at(i);
+    if (inst.is_label && is_jump_target(inst.label))
       jump_targets.insert(inst.label);
   }
-  for (long long int i = 0; i < SIZE(patch); ++i) {
+  for (long long int i = 0; i < SIZE(patch); ++i) {
     instruction inst = patch.at(i);
-    if (inst.is_label) {
-      if (contains_key(jump_targets, inst.label))
+    if (inst.is_label) {
+      if (contains_key(jump_targets, inst.label))
         inst.label = prefix+inst.label;
       base.push_back(inst);
       continue;
     }
-    for (long long int j = 0; j < SIZE(inst.ingredients); ++j) {
+    for (long long int j = 0; j < SIZE(inst.ingredients); ++j) {
       reagent& x = inst.ingredients.at(j);
-      if (!is_literal(x)) continue;
-      if (x.type->name == "label" && contains_key(jump_targets, x.name))
+      if (!is_literal(x)) continue;
+      if (x.type->name == "label" && contains_key(jump_targets, x.name))
         x.name = prefix+x.name;
     }
     base.push_back(inst);
   }
 }
 
-bool is_waypoint(string label) {
+bool is_waypoint(string label) {
   return *label.begin() == '<' && *label.rbegin() == '>';
 }
 
 //: complain about unapplied fragments
 :(before "End Globals")
-bool Transform_check_insert_fragments_Ran = false;
+bool Transform_check_insert_fragments_Ran = false;
 :(after "Transform.push_back(insert_fragments)")
 Transform.push_back(check_insert_fragments);  // idempotent
 :(code)
-void check_insert_fragments(unused recipe_ordinal) {
-  if (Transform_check_insert_fragments_Ran) return;
+void check_insert_fragments(unused recipe_ordinal) {
+  if (Transform_check_insert_fragments_Ran) return;
   Transform_check_insert_fragments_Ran = true;
-  for (map<string, recipe>::iterator p = Before_fragments.begin(); p != Before_fragments.end(); ++p) {
-    if (!contains_key(Fragments_used, p->first))
-      raise_error << "could not locate insert before " << p->first << '\n' << end();
+  for (map<string, recipe>::iterator p = Before_fragments.begin(); p != Before_fragments.end(); ++p) {
+    if (!contains_key(Fragments_used, p->first))
+      raise << "could not locate insert before " << p->first << '\n' << end();
   }
-  for (map<string, recipe>::iterator p = After_fragments.begin(); p != After_fragments.end(); ++p) {
-    if (!contains_key(Fragments_used, p->first))
-      raise_error << "could not locate insert after " << p->first << '\n' << end();
+  for (map<string, recipe>::iterator p = After_fragments.begin(); p != After_fragments.end(); ++p) {
+    if (!contains_key(Fragments_used, p->first))
+      raise << "could not locate insert after " << p->first << '\n' << end();
   }
 }
 
 :(scenario tangle_before_and_after)
-recipe main [
+def main [
   1:number <- copy 0
   <label1>
   4:number <- copy 0
@@ -207,7 +200,7 @@ $mem: 4
 
 :(scenario tangle_ignores_jump_target)
 % Hide_errors = true;
-recipe main [
+def main [
   1:number <- copy 0
   +label1
   4:number <- copy 0
@@ -218,7 +211,7 @@ before +label1 [
 +error: can't tangle before label +label1
 
 :(scenario tangle_keeps_labels_separate)
-recipe main [
+def main [
   1:number <- copy 0
   <label1>
   <label2>
@@ -249,7 +242,7 @@ after <label2> [
 $mem: 6
 
 :(scenario tangle_stacks_multiple_fragments)
-recipe main [
+def main [
   1:number <- copy 0
   <label1>
   6:number <- copy 0
@@ -279,7 +272,7 @@ after <label1> [
 $mem: 6
 
 :(scenario tangle_supports_fragments_with_multiple_instructions)
-recipe main [
+def main [
   1:number <- copy 0
   <label1>
   6:number <- copy 0
@@ -303,13 +296,13 @@ after <label1> [
 $mem: 6
 
 :(scenario tangle_tangles_into_all_labels_with_same_name)
-recipe main [
+def main [
   1:number <- copy 10
   <label1>
   4:number <- copy 10
   recipe2
 ]
-recipe recipe2 [
+def recipe2 [
   1:number <- copy 11
   <label1>
   4:number <- copy 11
@@ -335,7 +328,7 @@ after <label1> [
 $mem: 8
 
 :(scenario tangle_tangles_into_all_labels_with_same_name_2)
-recipe main [
+def main [
   1:number <- copy 10
   <label1>
   <label1>
@@ -359,7 +352,7 @@ after <label1> [
 $mem: 6
 
 :(scenario tangle_tangles_into_all_labels_with_same_name_3)
-recipe main [
+def main [
   1:number <- copy 10
   <label1>
   <foo>
@@ -386,7 +379,7 @@ after <foo> [
 $mem: 6
 
 :(scenario tangle_handles_jump_target_inside_fragment)
-recipe main [
+def main [
   1:number <- copy 10
   <label1>
   4:number <- copy 10
@@ -407,7 +400,7 @@ before <label1> [
 $mem: 3
 
 :(scenario tangle_renames_jump_target)
-recipe main [
+def main [
   1:number <- copy 10
   <label1>
   +label2
@@ -429,7 +422,7 @@ before <label1> [
 $mem: 3
 
 :(scenario tangle_jump_to_base_recipe)
-recipe main [
+def main [
   1:number <- copy 10
   <label1>
   +label2
@@ -451,4 +444,3 @@ $mem: 2
 
- -- cgit 1.4.1-2-gfad0