]> Repositorios git - scryer-prolog.git/commitdiff
skip_max_list preliminaries
authorMark Thom <[email protected]>
Thu, 26 Apr 2018 00:59:52 +0000 (18:59 -0600)
committerMark Thom <[email protected]>
Thu, 26 Apr 2018 00:59:52 +0000 (18:59 -0600)
src/prolog/ast.rs
src/prolog/codegen.rs
src/prolog/io.rs

index 3bbe7178839a0217336e533b209474b652cbea7b..4dd6a7b98102e7f111ec09067174d222c3a37019 100644 (file)
@@ -705,6 +705,7 @@ pub enum ClauseType {
     Op(ClauseName, Fixity, CodeIndex),
     Named(ClauseName, CodeIndex),
     SetupCallCleanup,
+    SkipMaxList,
     Sort,
     Throw,
 }
@@ -807,6 +808,7 @@ impl ClauseType {
             &ClauseType::Op(ref name, ..) => name.clone(),
             &ClauseType::Named(ref name, ..) => name.clone(),
             &ClauseType::SetupCallCleanup => clause_name!("setup_call_cleanup"),
+            &ClauseType::SkipMaxList => clause_name!("'$skip_max_list'"),
             &ClauseType::Sort => clause_name!("sort"),
             &ClauseType::Throw => clause_name!("throw")
         }
@@ -836,6 +838,7 @@ impl ClauseType {
             ("keysort", 2) => ClauseType::KeySort,
             ("\\==", 2) => ClauseType::NotEq,
             ("setup_call_cleanup", 3) => ClauseType::SetupCallCleanup,
+            ("'$skip_max_list'", 4) => ClauseType::SkipMaxList,
             ("sort", 2) => ClauseType::Sort,
             ("throw", 1) => ClauseType::Throw,
             _ => if let Some(fixity) = fixity {
@@ -1232,7 +1235,7 @@ pub enum BuiltInInstruction {
     ResetBlock,
     RestoreCutPolicy,
     SetBall,
-    SetCutPoint(RegType),
+    SetCutPoint(RegType),    
     Succeed,
     Unify,
     UnwindStack
index 1b31f0fff55bc095c1ff3fc1333d0fd2e268fdc8..521fbf06d25a5f61305d32b6683add856322adac 100644 (file)
@@ -195,7 +195,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<TermMarker>
                         GenContext::Last(chunk_num)
                     }
                 };
-
+                
                 self.update_var_count(chunked_term.post_order_iter());
                 vs.mark_vars_in_chunk(chunked_term.post_order_iter(), lt_arity, term_loc);
             }
index 9d12260e940b51155033f390a0efef10a3abb55b..c8b4de2d7c5c9943902d66d50a3f4fc21045a4ed 100644 (file)
@@ -119,8 +119,7 @@ impl fmt::Display for ClauseType {
                 let idx = idx.0.borrow();
                 write!(f, "{}:{}/{}", idx.1, name, idx.0)
             },
-            ref ct =>
-                write!(f, "{}", ct.name())
+            ref ct => write!(f, "{}", ct.name())
         }
     }
 }
@@ -212,6 +211,10 @@ impl fmt::Display for BuiltInInstruction {
                 write!(f, "install_new_block"),
             &BuiltInInstruction::InternalCallN =>
                 write!(f, "internal_call_N"),
+            &BuiltInInstruction::RemoveCallPolicyCheck =>
+                write!(f, "remove_call_policy_check"),
+            &BuiltInInstruction::RemoveInferenceCounter(r1, r2) =>
+                write!(f, "remove_inference_counter {}, {}", r1, r2),            
             &BuiltInInstruction::ResetBlock =>
                 write!(f, "reset_block"),
             &BuiltInInstruction::RestoreCutPolicy =>
@@ -226,10 +229,6 @@ impl fmt::Display for BuiltInInstruction {
                 write!(f, "unwind_stack"),
             &BuiltInInstruction::Unify =>
                 write!(f, "unify"),
-            &BuiltInInstruction::RemoveCallPolicyCheck =>
-                write!(f, "remove_call_policy_check"),
-            &BuiltInInstruction::RemoveInferenceCounter(r1, r2) =>
-                write!(f, "remove_inference_counter {}, {}", r1, r2)
         }
     }
 }