fix printing of atoms like '.x' (#585)

This commit is contained in:
Mark Thom
2020-06-11 11:11:04 -06:00
parent 791e22dc24
commit 904cf97f7d
3 changed files with 9 additions and 18 deletions

View File

@@ -51,7 +51,8 @@
parse_ruleml(AssertItem, QueryItem, XML) :- parse_ruleml(AssertItem, QueryItem, XML) :-
( ( var(AssertItem) ; var(QueryItem) ), var(XML) -> ( ( var(AssertItem) ; var(QueryItem) ), var(XML) ->
throw(error(instantiation_error, parse_ruleml/2)) throw(error(instantiation_error, parse_ruleml/2))
; phrase(ruleml_top_level_items(AssertItem, QueryItem), XML) ; phrase(ruleml_top_level_items(AssertItem, QueryItem), XML),
!
). ).
@@ -97,8 +98,7 @@ parse_header -->
ruleml_top_level_items(AssertItem, QueryItems) --> ruleml_top_level_items(AssertItem, QueryItems) -->
( ruleml_assert(AssertItem), ( ruleml_assert(AssertItem),
ruleml_query_items(QueryItems), ruleml_query_items(QueryItems)
!
; { AssertItem = [] }, ; { AssertItem = [] },
ruleml_query_items(QueryItems) ruleml_query_items(QueryItems)
). ).
@@ -179,12 +179,10 @@ ruleml_assert(Items) -->
( { var(Items) } -> ( { var(Items) } ->
list_ws("<Assert mapClosure=\"universal\">"), list_ws("<Assert mapClosure=\"universal\">"),
ruleml_assert_items(Items), ruleml_assert_items(Items),
!,
list_ws("</Assert>") list_ws("</Assert>")
; "<Assert mapClosure=\"universal\">", ; "<Assert mapClosure=\"universal\">",
{ Items \== [] }, { Items \== [] },
ruleml_assert_items(Items), ruleml_assert_items(Items),
!,
"</Assert>" "</Assert>"
). ).
@@ -206,7 +204,6 @@ ruleml_assert(Items) -->
ruleml_assert_items([Item | Items]) --> ruleml_assert_items([Item | Items]) -->
ruleml_assert_item(Item), ruleml_assert_item(Item),
!,
ruleml_assert_items(Items). ruleml_assert_items(Items).
ruleml_assert_items([]) --> []. ruleml_assert_items([]) --> [].
@@ -214,7 +211,6 @@ ruleml_assert_items([]) --> [].
ruleml_query_items(Items) --> ruleml_query_items(Items) -->
( { var(Items) } -> ( { var(Items) } ->
ruleml_query_item(Item), ruleml_query_item(Item),
!,
( { var(Item) } -> ( { var(Item) } ->
ruleml_query_items(Items) ruleml_query_items(Items)
; { Items = [Item | Items0] }, ; { Items = [Item | Items0] },
@@ -222,7 +218,6 @@ ruleml_query_items(Items) -->
) )
; { Items = [Item | Items0] }, ; { Items = [Item | Items0] },
ruleml_query_item(Item), ruleml_query_item(Item),
!,
ruleml_query_items(Items0) ruleml_query_items(Items0)
). ).
ruleml_query_items([]) --> []. ruleml_query_items([]) --> [].
@@ -279,7 +274,7 @@ space(' ') --> " ".
decimal_point('.') --> ".". decimal_point('.') --> ".".
sign('-') --> "-", !. sign('-') --> "-".
sign('+') --> "+". sign('+') --> "+".
double_quote('"') --> "\"". double_quote('"') --> "\"".
@@ -332,7 +327,6 @@ ruleml_condition(Item) -->
ruleml_item_conjunction([Item | Items]) --> ruleml_item_conjunction([Item | Items]) -->
ruleml_condition(Item), ruleml_condition(Item),
!,
ruleml_item_conjunction(Items). ruleml_item_conjunction(Items).
ruleml_item_conjunction([]) --> []. ruleml_item_conjunction([]) --> [].
@@ -404,7 +398,6 @@ ruleml_conjunction_of_items(Items) -->
ruleml_item_disjunction([Item | Items]) --> ruleml_item_disjunction([Item | Items]) -->
ruleml_condition(Item), ruleml_condition(Item),
!,
ruleml_item_disjunction(Items). ruleml_item_disjunction(Items).
ruleml_item_disjunction([]) --> []. ruleml_item_disjunction([]) --> [].
@@ -549,7 +542,6 @@ ruleml_naf(Item) -->
ruleml_atoms([Item|Items]) --> ruleml_atoms([Item|Items]) -->
ruleml_atom(Item), ruleml_atom(Item),
!,
ruleml_atoms(Items). ruleml_atoms(Items).
ruleml_atoms([]) --> []. ruleml_atoms([]) --> [].
@@ -829,9 +821,9 @@ ruleml_data(Name) -->
*/ */
ruleml_data_contents(number, Cs) --> ruleml_data_contents(number, Cs) -->
ruleml_number(Cs), !. ruleml_number(Cs).
ruleml_data_contents(symbol, Cs) --> ruleml_data_contents(symbol, Cs) -->
ruleml_symbol(Cs), !. ruleml_symbol(Cs).
ruleml_data_contents(string, Cs) --> ruleml_data_contents(string, Cs) -->
ruleml_string(Cs). ruleml_string(Cs).
@@ -1195,8 +1187,7 @@ fold_semicolons(List, Output) :-
* complicated by Scryer's current lack of multi-argument indexing. * complicated by Scryer's current lack of multi-argument indexing.
*/ */
fold_list([Item], _, Item) :- fold_list([Item], _, Item).
!.
fold_list([Item|Items], F, Form) :- fold_list([Item|Items], F, Form) :-
Form =.. [F, Item, Fs], Form =.. [F, Item, Fs],
fold_list(Items, F, Fs). fold_list(Items, F, Fs).

View File

@@ -4172,3 +4172,5 @@ test_bimetatrans_ruleml :-
(writeq(E), (writeq(E),
nl, nl,
false)). false)).
:- initialization(test_bimetatrans_ruleml).

View File

@@ -449,8 +449,6 @@ fn non_quoted_token<Iter: Iterator<Item = char>>(mut iter: Iter) -> bool {
if let Some(c) = iter.next() { if let Some(c) = iter.next() {
if small_letter_char!(c) { if small_letter_char!(c) {
iter.all(|c| alpha_numeric_char!(c)) iter.all(|c| alpha_numeric_char!(c))
} else if c == '.' {
iter.next().is_some()
} else if graphic_token_char!(c) { } else if graphic_token_char!(c) {
non_quoted_graphic_token(iter, c) non_quoted_graphic_token(iter, c)
} else if semicolon_char!(c) { } else if semicolon_char!(c) {