]> Repositorios git - scryer-prolog.git/commitdiff
specially handle commas
authorMark Thom <[email protected]>
Sun, 31 Mar 2019 03:31:57 +0000 (21:31 -0600)
committerMark Thom <[email protected]>
Sun, 31 Mar 2019 03:31:57 +0000 (21:31 -0600)
Cargo.toml
src/prolog/heap_print.rs
src/prolog/lib/builtins.pl
src/prolog/machine/system_calls.rs

index 98ba7e63393caa87f081f10e9ee1897ad77d0eeb..cfe52228709132dabf995604acc36e6c870751ef 100644 (file)
@@ -1,6 +1,6 @@
 [package]
 name = "scryer-prolog"
-version = "0.8.27"
+version = "0.8.28"
 authors = ["Mark Thom <[email protected]>"]
 repository = "https://github.com/mthom/scryer-prolog"
 description = "A modern Prolog implementation written mostly in Rust."
index e283fe33379e08a6b492d30e613e613c3db7223c..a02a9d8edd9a20923bbfddb627c3ce790291cf1d 100644 (file)
@@ -541,8 +541,9 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter>
         push_space_if_amb!(self, atom.as_str(), {
             match atom.as_str() {
                 "" => self.append_str("''"),
+                "," if spec.is_some() => self.append_str(atom.as_str()),
                 ";" | "!" => self.append_str(atom.as_str()),
-                s => if spec.is_some() || !self.quoted || non_quoted_token(s.chars()) {
+                s => if !self.quoted || non_quoted_token(s.chars()) {
                     self.append_str(atom.as_str());
                 } else {
                     if self.quoted {
index 99307e52b0839cdaad9c973fba4427a3dfdda9a3..59997a6f4b3203985cacb489663b314db232fdb1 100644 (file)
@@ -718,8 +718,8 @@ op_specifier(OpSpec) :- atom(OpSpec),
 op_specifier(OpSpec) :- throw(error(type_error(atom, OpSpec), op/3)).
 
 valid_op(Op) :- atom(Op),
-    (  Op \== ',' -> true
-    ;  throw(error(permission_error(modify, operator, ','), op/3)) % 8.14.3.3 j), k).
+    (  Op \== (,) -> true
+    ;  throw(error(permission_error(modify, operator, (,)), op/3)) % 8.14.3.3 j), k).
     ).
 
 op_(Priority, OpSpec, Op) :- '$op'(Priority, OpSpec, Op).
index 33247086448f7a1f9efe657e3e95eab350ca04f7..e05d20b00b82517f9f0ccaf4925544a408620db1 100644 (file)
@@ -1,5 +1,6 @@
 use prolog_parser::ast::*;
 use prolog_parser::parser::{get_desc, get_clause_spec};
+use prolog_parser::tabled_rc::*;
 
 use prolog::clause_types::*;
 use prolog::heap_iter::*;
@@ -586,6 +587,8 @@ impl MachineState {
 
                 let op = match self.store(self.deref(op)) {
                     Addr::Con(Constant::Atom(name, _)) => name,
+                    Addr::Con(Constant::Char(c)) =>
+                        clause_name!(c.to_string(), indices.atom_tbl),
                     _ => unreachable!()
                 };