diff --git a/src/prolog/examples/bimetatrans_ruleml.pl b/src/prolog/examples/bimetatrans_ruleml.pl index 142d9d1e..ea56c2e2 100644 --- a/src/prolog/examples/bimetatrans_ruleml.pl +++ b/src/prolog/examples/bimetatrans_ruleml.pl @@ -65,8 +65,8 @@ parse_ruleml(AssertItem, QueryItem, XML) :- */ parse_header --> - partial_string_ws(""), - partial_string_ws(""), + list_ws(""). @@ -176,15 +176,15 @@ ruleml_top_level_items(AssertItem, QueryItems) --> ruleml_assert(Items) --> ( { var(Items) } -> - partial_string_ws(""), + list_ws(""), ruleml_assert_items(Items), !, - partial_string_ws("") - ; partial_string(""), + list_ws("") + ; "", { Items \== [] }, ruleml_assert_items(Items), !, - partial_string("") + "" ). @@ -244,17 +244,17 @@ ruleml_query_items([]) --> []. ruleml_query_item(Item) --> ( { var(Item) } -> - partial_string_ws(""), + list_ws(""), ( ruleml_condition(Item0), { Item = (?- Item0) } -> { true } ; { true } ), - partial_string_ws("") - ; partial_string(""), + list_ws("") + ; "", { Item = (?- Item0) }, ruleml_condition(Item0), - partial_string("") + "" ). @@ -264,7 +264,7 @@ ruleml_query_item(Item) --> * items. Whitespace, for example, is discarded immediately after * being read. * - * partial_string_ws reads a string into its argument as a partial + * list_ws reads a string into its argument as a partial * string before consuming any following whitespace. */ @@ -283,10 +283,13 @@ sign('+') --> "+". double_quote('"') --> "\"". -partial_string_ws(String) --> - partial_string(String), +list_ws(Ls) --> + list(Ls), ws. +list([]) --> []. +list([L|Ls]) --> [L], list(Ls). + /* * ruleml_assert_item//1 specifies the elements of RuleML that may * appear as items in a RuleML Assert performative, an implicitly @@ -370,7 +373,7 @@ ruleml_item_conjunction([]) --> []. ruleml_conjunction_of_items(Items) --> ( { var(Items) } -> - partial_string_ws(""), + list_ws(""), ruleml_item_conjunction(ItemsList), ( { ItemsList = [_,_|_] } -> { fold_commas(ItemsList, Items) } @@ -379,8 +382,8 @@ ruleml_conjunction_of_items(Items) --> ; { ItemsList = [] } -> { Items = (true, true) } ), - partial_string_ws("") - ; partial_string(""), + list_ws("") + ; "", ( { Items = (true, true) } -> { true } ; { Items = (true, Item0) } -> @@ -389,7 +392,7 @@ ruleml_conjunction_of_items(Items) --> { unfold_commas(Items, ItemsList) }, ruleml_item_conjunction(ItemsList) ), - partial_string("") + "" ). /* @@ -417,7 +420,7 @@ ruleml_item_disjunction([]) --> []. ruleml_disjunction_of_items(Items) --> ( { var(Items) } -> - partial_string_ws(""), + list_ws(""), ruleml_item_disjunction(ItemsList), ( { ItemsList = [_,_|_] } -> { fold_semicolons(ItemsList, Items) } @@ -426,8 +429,8 @@ ruleml_disjunction_of_items(Items) --> ; { ItemsList = [] } -> { Items = (false ; false) } ), - partial_string_ws("") - ; partial_string(""), + list_ws("") + ; "", ( { Items = (false ; false) } -> { true } ; { Items = (false ; Item0) } -> @@ -436,7 +439,7 @@ ruleml_disjunction_of_items(Items) --> { unfold_semicolons(Items, ItemsList) }, ruleml_item_disjunction(ItemsList) ), - partial_string("") + "" ). @@ -485,32 +488,32 @@ split_plex(Xs, PlexItems, RepoItem) :- ruleml_plex(Plex) --> ( { var(Plex) } -> - ( partial_string_ws("") -> + ( list_ws("") -> ruleml_items(PlexItems), - ( partial_string_ws("") -> + ( list_ws("") -> ruleml_var(RepoVar), - partial_string_ws(""), + list_ws(""), { append(PlexItems, RepoVar, Plex) } ; { Plex = PlexItems } ), - partial_string_ws("") - ; partial_string_ws("") + list_ws("") + ; list_ws("") ) ; { \+ string(Plex), acyclic_term(Plex) }, ( { functor(Plex, ('.'), 2) } -> { split_plex(Plex, PlexItems, RepoVar) }, - partial_string(""), + "", ruleml_items(PlexItems), ( { RepoVar \== [] } -> - partial_string(""), + "", ruleml_var(RepoVar), - partial_string("") + "" ; { true } ), - partial_string("") + "" ; { Plex == [] } -> - partial_string("") + "" ) ). @@ -526,14 +529,14 @@ ruleml_plex(Plex) --> ruleml_naf(Item) --> ( { var(Item) } -> - partial_string_ws(""), + list_ws(""), ruleml_condition(NafItem), { Item = (\+ NafItem) }, - partial_string_ws("") - ; partial_string(""), + list_ws("") + ; "", { Item = (\+ NafItem) }, ruleml_condition(NafItem), - partial_string("") + "" ). @@ -577,22 +580,22 @@ ruleml_atoms([]) --> []. ruleml_atom(Item) --> ( { var(Item) } -> - partial_string_ws(""), - partial_string_ws(""), + list_ws(""), + list_ws(""), prolog_symbol(Name), { Name \== (','), Name \== (';') }, - partial_string_ws(""), + list_ws(""), ruleml_items(Args), - partial_string_ws(""), + list_ws(""), { Item =.. [Name | Args] } ; { Item =.. [Name | Args] }, { Name \== (','), Name \== (';') }, - partial_string(""), - partial_string(""), + "", + "", prolog_symbol(Name), - partial_string(""), + "", ruleml_items(Args), - partial_string("") + "" ). /* @@ -642,35 +645,35 @@ ruleml_item(Item) --> ruleml_expr(Item) --> ( { var(Item) } -> - partial_string_ws(""), - partial_string_ws(""), + list_ws(""), + list_ws(""), prolog_symbol(Name), - partial_string_ws(""), + list_ws(""), ruleml_items(Args), - ( partial_string_ws(""), + ( list_ws(""), ruleml_item(RepoItem), - partial_string_ws(""), + list_ws(""), !, { fold_commas(Args, ArgsCommas) }, { Item =.. [Name, (ArgsCommas | RepoItem)] } ; { Item =.. [Name | Args] } ), - partial_string_ws("") + list_ws("") ; { Item =.. [Name | Args] }, - partial_string(""), - partial_string(""), + "", + "", prolog_symbol(Name), - partial_string(""), + "", ( { Args = [(InnerArgs | RepoItem)] } -> { InnerArgs = (_,_) -> unfold_commas(InnerArgs, InnerArgsList) ; InnerArgsList = [InnerArgs] }, ruleml_items(InnerArgsList), - partial_string(""), + "", ruleml_item(RepoItem), - partial_string("") + "" ; ruleml_items(Args) ), - partial_string("") + "" ). @@ -686,15 +689,15 @@ ruleml_expr(Item) --> ruleml_ind(Name) --> ( { var(Name) } -> - partial_string_ws(""), + list_ws(""), ruleml_ind_helper(Cs), - partial_string_ws(""), + list_ws(""), { atom_chars(Name, Cs) } ; { atom(Name) }, - partial_string(""), + "", { atom_chars(Name, Cs) }, ruleml_ind_helper(Cs), - partial_string("") + "" ). @@ -728,16 +731,16 @@ ruleml_ind_helper(Cs) --> ruleml_var(Var) --> ( { var(Var) } -> - partial_string_ws(""), + list_ws(""), ruleml_var_contents(VarChars), { atom_chars(VarName, VarChars) }, { Var = '$V'(VarName) }, - partial_string_ws("") + list_ws("") ; { Var = '$V'(VarName) }, - partial_string(""), + "", { atom_chars(VarName, VarChars) }, ruleml_var_contents(VarChars), - partial_string("") + "" ). @@ -801,18 +804,18 @@ constant_chars(symbol, Constant, Chars) :- ruleml_data(Name) --> ( { var(Name) } -> - partial_string_ws(""), + list_ws("\">"), ruleml_data_contents(Type, Cs), { constant_chars(Type, Name, Cs) }, - partial_string_ws("") - ; partial_string("") + ; ""), + "\">", ruleml_data_contents(Type, Cs), - partial_string("") + "" ). /* @@ -1042,24 +1045,24 @@ ruleml_implies_head(Item) --> ruleml_implies(Rule) --> ( { var(Rule) } -> - partial_string_ws(""), - partial_string_ws(""), + list_ws(""), + list_ws(""), ruleml_implies_head(Head), - partial_string_ws(""), - partial_string_ws(""), + list_ws(""), + list_ws(""), ruleml_condition(Body), - partial_string_ws(""), - partial_string_ws(""), + list_ws(""), + list_ws(""), { Rule = ( Head :- Body ) } ; { Rule = ( Head :- Body ) }, - partial_string(""), - partial_string(""), + "", + "", ruleml_implies_head(Head), - partial_string(""), - partial_string(""), + "", + "", ruleml_condition(Body), - partial_string(""), - partial_string("") + "", + "" ). @@ -1082,16 +1085,16 @@ ruleml_equal_item(EqualItem) --> ruleml_equal(Equal) --> ( { var(Equal) } -> - partial_string_ws(""), + list_ws(""), ruleml_equal_item(Left), ruleml_equal_item(Right), - partial_string_ws(""), + list_ws(""), { Equal = (Left = Right) } ; { Equal = (Left = Right) }, - partial_string(""), + "", ruleml_equal_item(Left), ruleml_equal_item(Right), - partial_string("") + "" ).