specially handle commas
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "scryer-prolog"
|
name = "scryer-prolog"
|
||||||
version = "0.8.27"
|
version = "0.8.28"
|
||||||
authors = ["Mark Thom <markjordanthom@gmail.com>"]
|
authors = ["Mark Thom <markjordanthom@gmail.com>"]
|
||||||
repository = "https://github.com/mthom/scryer-prolog"
|
repository = "https://github.com/mthom/scryer-prolog"
|
||||||
description = "A modern Prolog implementation written mostly in Rust."
|
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(), {
|
push_space_if_amb!(self, atom.as_str(), {
|
||||||
match atom.as_str() {
|
match atom.as_str() {
|
||||||
"" => self.append_str("''"),
|
"" => self.append_str("''"),
|
||||||
|
"," if spec.is_some() => self.append_str(atom.as_str()),
|
||||||
";" | "!" => 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());
|
self.append_str(atom.as_str());
|
||||||
} else {
|
} else {
|
||||||
if self.quoted {
|
if self.quoted {
|
||||||
|
|||||||
@@ -718,8 +718,8 @@ op_specifier(OpSpec) :- atom(OpSpec),
|
|||||||
op_specifier(OpSpec) :- throw(error(type_error(atom, OpSpec), op/3)).
|
op_specifier(OpSpec) :- throw(error(type_error(atom, OpSpec), op/3)).
|
||||||
|
|
||||||
valid_op(Op) :- atom(Op),
|
valid_op(Op) :- atom(Op),
|
||||||
( Op \== ',' -> true
|
( Op \== (,) -> true
|
||||||
; throw(error(permission_error(modify, operator, ','), op/3)) % 8.14.3.3 j), k).
|
; throw(error(permission_error(modify, operator, (,)), op/3)) % 8.14.3.3 j), k).
|
||||||
).
|
).
|
||||||
|
|
||||||
op_(Priority, OpSpec, Op) :- '$op'(Priority, OpSpec, Op).
|
op_(Priority, OpSpec, Op) :- '$op'(Priority, OpSpec, Op).
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
use prolog_parser::ast::*;
|
use prolog_parser::ast::*;
|
||||||
use prolog_parser::parser::{get_desc, get_clause_spec};
|
use prolog_parser::parser::{get_desc, get_clause_spec};
|
||||||
|
use prolog_parser::tabled_rc::*;
|
||||||
|
|
||||||
use prolog::clause_types::*;
|
use prolog::clause_types::*;
|
||||||
use prolog::heap_iter::*;
|
use prolog::heap_iter::*;
|
||||||
@@ -586,6 +587,8 @@ impl MachineState {
|
|||||||
|
|
||||||
let op = match self.store(self.deref(op)) {
|
let op = match self.store(self.deref(op)) {
|
||||||
Addr::Con(Constant::Atom(name, _)) => name,
|
Addr::Con(Constant::Atom(name, _)) => name,
|
||||||
|
Addr::Con(Constant::Char(c)) =>
|
||||||
|
clause_name!(c.to_string(), indices.atom_tbl),
|
||||||
_ => unreachable!()
|
_ => unreachable!()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user