specially handle commas

This commit is contained in:
Mark Thom
2019-03-30 21:31:57 -06:00
parent 0aefcf7eae
commit 3e67400bd3
4 changed files with 8 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "scryer-prolog"
version = "0.8.27"
version = "0.8.28"
authors = ["Mark Thom <markjordanthom@gmail.com>"]
repository = "https://github.com/mthom/scryer-prolog"
description = "A modern Prolog implementation written mostly in Rust."

View 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 {

View 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).

View 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!()
};