]> Repositorios git - scryer-prolog.git/commitdiff
do a better job recognizing and bracketing operators
authorMark Thom <[email protected]>
Sun, 31 Mar 2019 17:35:19 +0000 (11:35 -0600)
committerMark Thom <[email protected]>
Sun, 31 Mar 2019 17:35:19 +0000 (11:35 -0600)
Cargo.toml
src/prolog/heap_print.rs
src/prolog/machine/machine_state_impl.rs

index 2868ac9e1e278743eb6e91dd8a0e82d348bb1e95..a913faff952cd7a53aaa17b8fb19aa3201605b23 100644 (file)
@@ -14,7 +14,7 @@ cfg-if = "0.1.7"
 downcast = "0.10.0"
 num = "0.2"
 ordered-float = "0.5.0"
-prolog_parser = "0.8.8"
+prolog_parser = { version = "0.8.9", path = "../prolog_parser" }
 readline_rs_compat = { version = "0.1.7", optional = true }
 ref_thread_local = "0.0.0"
 
index dfa1b2bc7fd619dce010823f2a9545bbeeb65969..c74509b82c9ff23831cf5e346108df22a605c3ec 100644 (file)
@@ -536,7 +536,7 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
     fn print_atom(&mut self, atom: &ClauseName) {
         push_space_if_amb!(self, atom.as_str(), {
             match atom.as_str() {
-                "" => self.append_str("''"),
+                "''" => self.append_str("''"),
                 s => self.print_op_addendum(s)
             }
         });
index 481482cca76d7e8d71c2ce570f34aa3b8d5241a6..dd3935e373f7437040a24532d185cf729c955cda 100644 (file)
@@ -1880,8 +1880,10 @@ impl MachineState {
         }
     }
 
-    fn try_functor_compound_case(&mut self, name: ClauseName, arity: usize) {
-        let name  = Addr::Con(Constant::Atom(name, None));
+    fn try_functor_compound_case(&mut self, name: ClauseName, arity: usize,
+                                 spec: Option<(usize, Specifier)>)
+    {
+        let name  = Addr::Con(Constant::Atom(name, spec));
         let arity = Addr::Con(integer!(arity));
 
         self.try_functor_unify_components(name, arity);
@@ -1898,12 +1900,12 @@ impl MachineState {
                 self.try_functor_unify_components(a1, Addr::Con(integer!(0))),
             Addr::Str(o) =>
                 match self.heap[o].clone() {
-                    HeapCellValue::NamedStr(arity, name, _) =>
-                        self.try_functor_compound_case(name, arity),
+                    HeapCellValue::NamedStr(arity, name, spec) =>
+                        self.try_functor_compound_case(name, arity, spec),
                     _ => self.fail = true
                 },
             Addr::Lis(_) =>
-                self.try_functor_compound_case(clause_name!("."), 2),
+                self.try_functor_compound_case(clause_name!("."), 2, None),
             Addr::AttrVar(..) | Addr::HeapCell(_) | Addr::StackCell(..) => {
                 let name  = self.store(self.deref(self[temp_v!(2)].clone()));
                 let arity = self.store(self.deref(self[temp_v!(3)].clone()));