specially handle commas
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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!()
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user