Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

I dunno, I dream in Perl sometimes... -- Larry Wall in <8538@jpl-devvax.JPL.NASA.GOV>


devel / comp.lang.prolog / Re: About the Operator '|' and the DCG Draft

SubjectAuthor
* About the Operator '|' and the DCG DraftMostowski Collapse
+* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|`* Re: About the Operator '|' and the DCG DraftMostowski Collapse
| `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  +* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  |`* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  | `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  |  `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  |   `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  |    `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  |     `- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|  `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|   `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|    `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|     `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|      `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|       `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|        `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|         `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|          `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|           `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|            `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|             `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|              `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|               +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|               +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|               +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|               +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|               +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|               `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 +- Re: About the Operator '|' and the DCG DraftMostowski Collapse
|                 `- Re: About the Operator '|' and the DCG DraftMostowski Collapse
`* Re: About the Operator '|' and the DCG DraftMostowski Collapse
 `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
  `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
   `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
    `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
     `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
      `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
       `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
        `* Re: About the Operator '|' and the DCG DraftMostowski Collapse
         `- Re: About the Operator '|' and the DCG DraftMostowski Collapse

Pages:123
Re: About the Operator '|' and the DCG Draft

<870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1239&group=comp.lang.prolog#1239

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:43a5:b0:69b:ed4a:4061 with SMTP id a37-20020a05620a43a500b0069bed4a4061mr3447494qkp.229.1649501473072;
Sat, 09 Apr 2022 03:51:13 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:63d:a251:2c51 with SMTP id
q3-20020a5b0f83000000b0063da2512c51mr15868517ybh.594.1649501472880; Sat, 09
Apr 2022 03:51:12 -0700 (PDT)
Path: i2pn2.org!i2pn.org!aioe.org!news.mixmin.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sat, 9 Apr 2022 03:51:12 -0700 (PDT)
In-Reply-To: <d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<6ed26ce6-eaca-44f4-8c47-ff065227259bn@googlegroups.com> <2f729e39-7a7c-4079-9b34-08e080c6b242n@googlegroups.com>
<1a2d52b2-52ae-41c8-ad97-07dd4d07c264n@googlegroups.com> <296a2193-cea2-4aa1-a6de-eee173404568n@googlegroups.com>
<1f6e60c8-e8b2-42b8-9ca8-d1688ab1da26n@googlegroups.com> <b73e5ef2-93d6-4d30-ab36-d5fcb45531b8n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sat, 09 Apr 2022 10:51:13 +0000
Content-Type: text/plain; charset="UTF-8"
 by: Mostowski Collapse - Sat, 9 Apr 2022 10:51 UTC

Now I found a test case where SWI-Prolog and
Scryer Prolog differ in parsing:

/* SWI-Prolog */
?- op(9,fy,fy), op(9,yfx,yfx).
true.

?- X = (fy 1 yfx 2), write_canonical(X), nl.
yfx(fy(1),2)

But then:

/* Scryer Prolog */
?- op(9,fy,fy), op(9,yfx,yfx).
true.

?- X = (fy 1 yfx 2), write_canonical(X), nl.
fy(yfx(1,2))

Was worried what Dogelog Player does. But it seems Dogelog Player
sides with Scryer Prolog, also GNU Prolog, Tau Prolog and
formerly Jekejeke Prolog do.

Re: About the Operator '|' and the DCG Draft

<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1240&group=comp.lang.prolog#1240

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:4e88:0:b0:2e1:d573:325f with SMTP id 8-20020ac84e88000000b002e1d573325fmr19218269qtp.265.1649506635999;
Sat, 09 Apr 2022 05:17:15 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:63d:a251:2c51 with SMTP id
q3-20020a5b0f83000000b0063da2512c51mr16054018ybh.594.1649506635857; Sat, 09
Apr 2022 05:17:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sat, 9 Apr 2022 05:17:15 -0700 (PDT)
In-Reply-To: <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<6ed26ce6-eaca-44f4-8c47-ff065227259bn@googlegroups.com> <2f729e39-7a7c-4079-9b34-08e080c6b242n@googlegroups.com>
<1a2d52b2-52ae-41c8-ad97-07dd4d07c264n@googlegroups.com> <296a2193-cea2-4aa1-a6de-eee173404568n@googlegroups.com>
<1f6e60c8-e8b2-42b8-9ca8-d1688ab1da26n@googlegroups.com> <b73e5ef2-93d6-4d30-ab36-d5fcb45531b8n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sat, 09 Apr 2022 12:17:15 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 36
 by: Mostowski Collapse - Sat, 9 Apr 2022 12:17 UTC

Can he use his SWIPL example to figure out whats going wrong here:

/* SWI-Prolog */
?- op(9,fy,fy), op(9,yfx,yfx).
true.

?- X = (fy 1 yfx 2), write_canonical(X), nl.
yfx(fy(1),2)

Maybe its just a small bug, like (>=)/2 instead of (>)/2 or somesuch.

I am refering to:
https://github.com/ridgeworks/pPEGpl/tree/main/Examples/SWIP-grammar

Mostowski Collapse schrieb am Samstag, 9. April 2022 um 12:51:13 UTC+2:
> Now I found a test case where SWI-Prolog and
> Scryer Prolog differ in parsing:
>
> /* SWI-Prolog */
> ?- op(9,fy,fy), op(9,yfx,yfx).
> true.
>
> ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> yfx(fy(1),2)
>
> But then:
>
> /* Scryer Prolog */
> ?- op(9,fy,fy), op(9,yfx,yfx).
> true.
>
> ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> fy(yfx(1,2))
>
> Was worried what Dogelog Player does. But it seems Dogelog Player
> sides with Scryer Prolog, also GNU Prolog, Tau Prolog and
> formerly Jekejeke Prolog do.

Re: About the Operator '|' and the DCG Draft

<adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1243&group=comp.lang.prolog#1243

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:622a:89:b0:2e1:b8c7:9975 with SMTP id o9-20020a05622a008900b002e1b8c79975mr23984228qtw.342.1649623166917;
Sun, 10 Apr 2022 13:39:26 -0700 (PDT)
X-Received: by 2002:a81:92c8:0:b0:2eb:ef8e:b3b3 with SMTP id
j191-20020a8192c8000000b002ebef8eb3b3mr8639186ywg.433.1649623166763; Sun, 10
Apr 2022 13:39:26 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 10 Apr 2022 13:39:26 -0700 (PDT)
In-Reply-To: <8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<6ed26ce6-eaca-44f4-8c47-ff065227259bn@googlegroups.com> <2f729e39-7a7c-4079-9b34-08e080c6b242n@googlegroups.com>
<1a2d52b2-52ae-41c8-ad97-07dd4d07c264n@googlegroups.com> <296a2193-cea2-4aa1-a6de-eee173404568n@googlegroups.com>
<1f6e60c8-e8b2-42b8-9ca8-d1688ab1da26n@googlegroups.com> <b73e5ef2-93d6-4d30-ab36-d5fcb45531b8n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 10 Apr 2022 20:39:26 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: Mostowski Collapse - Sun, 10 Apr 2022 20:39 UTC

Yet another bug, which is even a test case from
the ISO core standard, its the 4-th example from
Table 6 - Equivalent Terms:

/* SWI-Prolog */
?- op(9,fy,fy), op(9,yf,yf).
true.
?- X = (fy 2 yf), write_canonical(X), nl.
yf(fy(2))
X = fy 2 yf.

On the other hand:

/* GNU Prolog */
?- op(9,fy,fy), op(9,yf,yf).
yes
?- X = (fy 2 yf), write_canonical(X), nl.
fy(yf(2))
X = fy 2 yf

My suspicion, in terms of
https://github.com/ridgeworks/pPEGpl/tree/main/Examples/SWIP-grammar

These here are probably wrong:

op_associativityEq(fy,yfx,left).
op_associativityEq(fy,yf,left).

Actually I don’t know exactly, I am new to this code. Whats
especially difficult for me, to specify a change, even if I
can locate the error, I don’t know what to do as a fix?

But I guess more extensive testing would be needed to find
all table errors. I have only spotted two, because of analogy
between yfx and yf. But maybe there are more nasty bugs?

Mostowski Collapse schrieb am Samstag, 9. April 2022 um 14:17:17 UTC+2:
> Can he use his SWIPL example to figure out whats going wrong here:
> /* SWI-Prolog */
> ?- op(9,fy,fy), op(9,yfx,yfx).
> true.
>
> ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> yfx(fy(1),2)
> Maybe its just a small bug, like (>=)/2 instead of (>)/2 or somesuch.
>
> I am refering to:
> https://github.com/ridgeworks/pPEGpl/tree/main/Examples/SWIP-grammar
> Mostowski Collapse schrieb am Samstag, 9. April 2022 um 12:51:13 UTC+2:
> > Now I found a test case where SWI-Prolog and
> > Scryer Prolog differ in parsing:
> >
> > /* SWI-Prolog */
> > ?- op(9,fy,fy), op(9,yfx,yfx).
> > true.
> >
> > ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> > yfx(fy(1),2)
> >
> > But then:
> >
> > /* Scryer Prolog */
> > ?- op(9,fy,fy), op(9,yfx,yfx).
> > true.
> >
> > ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> > fy(yfx(1,2))
> >
> > Was worried what Dogelog Player does. But it seems Dogelog Player
> > sides with Scryer Prolog, also GNU Prolog, Tau Prolog and
> > formerly Jekejeke Prolog do.

Re: About the Operator '|' and the DCG Draft

<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1244&group=comp.lang.prolog#1244

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:2413:b0:69c:1457:cc5d with SMTP id d19-20020a05620a241300b0069c1457cc5dmr2124882qkn.690.1649625766625;
Sun, 10 Apr 2022 14:22:46 -0700 (PDT)
X-Received: by 2002:a25:d087:0:b0:641:5ea0:b70c with SMTP id
h129-20020a25d087000000b006415ea0b70cmr1417885ybg.362.1649625766398; Sun, 10
Apr 2022 14:22:46 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sun, 10 Apr 2022 14:22:46 -0700 (PDT)
In-Reply-To: <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<6ed26ce6-eaca-44f4-8c47-ff065227259bn@googlegroups.com> <2f729e39-7a7c-4079-9b34-08e080c6b242n@googlegroups.com>
<1a2d52b2-52ae-41c8-ad97-07dd4d07c264n@googlegroups.com> <296a2193-cea2-4aa1-a6de-eee173404568n@googlegroups.com>
<1f6e60c8-e8b2-42b8-9ca8-d1688ab1da26n@googlegroups.com> <b73e5ef2-93d6-4d30-ab36-d5fcb45531b8n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 10 Apr 2022 21:22:46 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: Mostowski Collapse - Sun, 10 Apr 2022 21:22 UTC

But now things get funky, this example does also not work.
Is there a systemic error in the SWI-Prolog table or its handling?
In that something is systematically flipped by some error that

happend once? Here the result, doesn’t agree with Table 6:

/* SWI-Prolog */
?- op(9,xfy,xfy), op(9,yfx,yfx).
true.

?- X = (1 xfy 2 yfx 3), write_canonical(X), nl.
yfx(xfy(1,2),3)
X = 1 xfy 2 yfx 3.

On the other hand, this agrees:

/* GNU Prolog */
?- op(9,xfy,xfy), op(9,yfx,yfx).
yes
?- X = (1 xfy 2 yfx 3), write_canonical(X), nl.
xfy(1,yfx(2,3))
X = 1 xfy 2 yfx 3

Also changing the associativity rule tables of the parser, what will
happen to the unparser in SWI-Prolog? Does it use the same
associativity rule tables, from a single point?

Re: About the Operator '|' and the DCG Draft

<13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1246&group=comp.lang.prolog#1246

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:2993:b0:67d:7119:9f19 with SMTP id r19-20020a05620a299300b0067d71199f19mr20893549qkp.494.1649667031191;
Mon, 11 Apr 2022 01:50:31 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:63d:a251:2c51 with SMTP id
q3-20020a5b0f83000000b0063da2512c51mr20424165ybh.594.1649667030944; Mon, 11
Apr 2022 01:50:30 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Mon, 11 Apr 2022 01:50:30 -0700 (PDT)
In-Reply-To: <ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<6ed26ce6-eaca-44f4-8c47-ff065227259bn@googlegroups.com> <2f729e39-7a7c-4079-9b34-08e080c6b242n@googlegroups.com>
<1a2d52b2-52ae-41c8-ad97-07dd4d07c264n@googlegroups.com> <296a2193-cea2-4aa1-a6de-eee173404568n@googlegroups.com>
<1f6e60c8-e8b2-42b8-9ca8-d1688ab1da26n@googlegroups.com> <b73e5ef2-93d6-4d30-ab36-d5fcb45531b8n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Mon, 11 Apr 2022 08:50:31 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 59
 by: Mostowski Collapse - Mon, 11 Apr 2022 08:50 UTC

Is it a sign, that the SWI-Prolog parser/unparser wasn’t built
from a master class in test driven development? Well testing
input/output in Prolog system can be a headache.

I have a new take on a corresponding harness. This is quite
interesting. It is a harness tailored towards Dogelog Player,
which unlike formerly Jekejeke Prolog does NOT ASSUME:

- Memory Files: For Dogelog Player we do NOT ASSUME
to have access as we did in formerly Jekejeke Prolog. So
a memory file is simulated by memory.txt, ordinary file.

- setup_call_cleanup/3: For Dogelog Player we currently do
NOT ASSUME, although such a predicate might come later.
In formerly Jekejeke Prolog the harness uses this.

So how do we check with output to? Here is our new take:

/**
* with_text_to(A, G):
* The predicate succeeds whenever the goal G succeeds and
* unifies A with its text output.
*/
% with_text_to(-Atom, +Goal)
with_text_to(A, G) :-
current_output(S),
try_call_finally(
redirect_text_output,
G,
fetch_text_output(S, A)).

% redirect_text_output
redirect_text_output :-
open('memory.txt', write, S),
set_output(S).

% fetch_text_output(+Stream, -Atom)
fetch_text_output(S, A) :-
current_output(T),
close(T),
open('memory.txt', read, R),
get_atom(R, -1, A),
close(R),
set_output(S).

And then:

/**
* try_call_finally(T, G, F):
* The predicate succeeds whenever G succeeds. The goal T is
* called for the call and redo port. The goal F is called for
* the exit, fail and error port.
*/
% try_call_finally(+Goal, +Goal, +Goal)
try_call_finally(T, G, F) :-
(T; F, fail),
'$MARK'(X),
catch(G, E, (F, throw(E))),
'$MARK'(Y),
(X == Y -> !, F; (F; T, fail)).

Re: About the Operator '|' and the DCG Draft

<t30qfn$o195$1@solani.org>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1247&group=comp.lang.prolog#1247

  copy link   Newsgroups: comp.lang.prolog
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: janburse@fastmail.fm (Mostowski Collapse)
Newsgroups: comp.lang.prolog
Subject: Re: About the Operator '|' and the DCG Draft
Date: Mon, 11 Apr 2022 10:56:25 +0200
Message-ID: <t30qfn$o195$1@solani.org>
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com>
<c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com>
<9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com>
<52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com>
<c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com>
<7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com>
<870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com>
<adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com>
<13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 11 Apr 2022 08:56:23 -0000 (UTC)
Injection-Info: solani.org;
logging-data="787749"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.11.1
Cancel-Lock: sha1:59wt13c2yLq2hEBjXzAhx8KBl/c=
X-User-ID: eJwFwYEBwCAIA7CXZEqp5yDQ/09Y4huGigPHcbki1svhu9YK62+USe5KFXit6KVLDJq5euy8RdmwpzZp8wN7exaf
In-Reply-To: <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
 by: Mostowski Collapse - Mon, 11 Apr 2022 08:56 UTC

It should be noted that we added a new built-in
to Dogelog Player, get_atom/3. This is a kind of
read_line/2, but with a different semantic than the

read line we had so far. get_atom/3 can be used
to read line via get_atom(S, 0'\n, X), and it can
be also used to read full files get_atom(S, -1, X).

The difference to our old read line, when using
get_atom(S, 0'\n, X) it will include the 0'\n in
the result. A big surprise was now the harness

for with input from. It uses change_arg/3 !!!

/**
* with_text_from(A, G):
* The predicate succeeds whenever the goal G succeeds and
* provides A as its text input.
*/
% with_text_from(+Atom, +Goal)
with_text_from(A, G) :-
current_input(S),
H = v(A),
try_call_finally(
redirect_text_input(H),
G,
advance_text_input(S, H)).

% redirect_text_input(+Compound)
redirect_text_input(H) :-
arg(1, H, A),
open('memory.txt', write, S),
put_atom(S, A),
close(S),
open('memory.txt', read, T),
set_input(T).

% advance_text_input(+Stream, +Compound)
advance_text_input(S, H) :-
current_input(T),
get_atom(T, -1, A),
close(T),
change_arg(1, H, A),
set_input(S).

The source code of these Dogelog Player testing utilities
is open sourced in a new folder dogelog_comply:

Prolog Text "charsio" - Compliance Dogelog Spieler
http://pages.xlog.ch/littab/doclet/docs/10_samples/04_doge_comply/reference/harness/charsio.html

Mostowski Collapse schrieb:
> Is it a sign, that the SWI-Prolog parser/unparser wasn’t built
> from a master class in test driven development? Well testing
> input/output in Prolog system can be a headache.
>
> I have a new take on a corresponding harness. This is quite
> interesting. It is a harness tailored towards Dogelog Player,
> which unlike formerly Jekejeke Prolog does NOT ASSUME:
>
> - Memory Files: For Dogelog Player we do NOT ASSUME
> to have access as we did in formerly Jekejeke Prolog. So
> a memory file is simulated by memory.txt, ordinary file.
>
> - setup_call_cleanup/3: For Dogelog Player we currently do
> NOT ASSUME, although such a predicate might come later.
> In formerly Jekejeke Prolog the harness uses this.
>
> So how do we check with output to? Here is our new take:
>
> /**
> * with_text_to(A, G):
> * The predicate succeeds whenever the goal G succeeds and
> * unifies A with its text output.
> */
> % with_text_to(-Atom, +Goal)
> with_text_to(A, G) :-
> current_output(S),
> try_call_finally(
> redirect_text_output,
> G,
> fetch_text_output(S, A)).
>
> % redirect_text_output
> redirect_text_output :-
> open('memory.txt', write, S),
> set_output(S).
>
> % fetch_text_output(+Stream, -Atom)
> fetch_text_output(S, A) :-
> current_output(T),
> close(T),
> open('memory.txt', read, R),
> get_atom(R, -1, A),
> close(R),
> set_output(S).
>
> And then:
>
> /**
> * try_call_finally(T, G, F):
> * The predicate succeeds whenever G succeeds. The goal T is
> * called for the call and redo port. The goal F is called for
> * the exit, fail and error port.
> */
> % try_call_finally(+Goal, +Goal, +Goal)
> try_call_finally(T, G, F) :-
> (T; F, fail),
> '$MARK'(X),
> catch(G, E, (F, throw(E))),
> '$MARK'(Y),
> (X == Y -> !, F; (F; T, fail)).
>

Re: About the Operator '|' and the DCG Draft

<5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1248&group=comp.lang.prolog#1248

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:6cc:b0:69b:dd1b:3235 with SMTP id 12-20020a05620a06cc00b0069bdd1b3235mr9602886qky.374.1649671495760;
Mon, 11 Apr 2022 03:04:55 -0700 (PDT)
X-Received: by 2002:a81:5c86:0:b0:2ea:6d45:fea6 with SMTP id
q128-20020a815c86000000b002ea6d45fea6mr25442368ywb.421.1649671495552; Mon, 11
Apr 2022 03:04:55 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Mon, 11 Apr 2022 03:04:55 -0700 (PDT)
In-Reply-To: <t30qfn$o195$1@solani.org>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Mon, 11 Apr 2022 10:04:55 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 35
 by: Mostowski Collapse - Mon, 11 Apr 2022 10:04 UTC

This is probably not the canary in the coal mine for the
suspected bugs. One can check by himself/herself, not
a single use of fy or yfx operator:

ALE – Attribute Logic Engine
http://www.cs.toronto.edu/~gpenn/ale/files/ale.pl

Maybe I can dig out an TPTP example, currently working
with the normal test cases that circulate, that are more abstract.
The trouble maker is this here from Phil Zucker:

:- op( 500, fy, !). % universal quantifier: ![X]:
:- op( 500, fy, ?). % existential quantifier: ?[X]:
:- op( 500,xfy, :).

If you change the later into:

:- op( 500,yfx, :).

You get a difference in SWI-Prolog and SICStus Prolog:

/* SWI-Prolog (threaded, 64 bits, version 8.5.8) */
?- X = (![Y]:p(Y)), write_canonical(X), nl.
:(!([A]),p(A))
X = ![Y]:p(Y).

/* SICStus 4.7.1 (x86_64-win32-nt-4) */
?- X = (![Y]:p(Y)), write_canonical(X), nl.
!(:('.'(_953,[]),p(_953)))
X = ![Y]:p(Y) ?

Note the difference, SWI-Prolog gives :(!(...) whereas SICStus Prolog
gives !(:(...). So the same SICStus Prolog code that would use a !_
pattern somewhere in his Prolog clauses, doesn’t run in SWI-Prolog.

There are LeanTap variants that use such patterns

Re: About the Operator '|' and the DCG Draft

<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1249&group=comp.lang.prolog#1249

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:75d1:0:b0:2ed:161f:1f0a with SMTP id z17-20020ac875d1000000b002ed161f1f0amr5602998qtq.173.1649672245509;
Mon, 11 Apr 2022 03:17:25 -0700 (PDT)
X-Received: by 2002:a25:6652:0:b0:641:25c9:9c04 with SMTP id
z18-20020a256652000000b0064125c99c04mr6281497ybm.94.1649672245282; Mon, 11
Apr 2022 03:17:25 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Mon, 11 Apr 2022 03:17:25 -0700 (PDT)
In-Reply-To: <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Mon, 11 Apr 2022 10:17:25 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 44
 by: Mostowski Collapse - Mon, 11 Apr 2022 10:17 UTC

Basically you get a **silent error**. Everything parses
fine, the Prolog text can be prepared for execution,
your code just stops working correctly, when

migrating from SICStus Prolog to SWI-Prolog.

Mostowski Collapse schrieb am Montag, 11. April 2022 um 12:04:56 UTC+2:
> This is probably not the canary in the coal mine for the
> suspected bugs. One can check by himself/herself, not
> a single use of fy or yfx operator:
>
> ALE – Attribute Logic Engine
> http://www.cs.toronto.edu/~gpenn/ale/files/ale.pl
>
> Maybe I can dig out an TPTP example, currently working
> with the normal test cases that circulate, that are more abstract.
> The trouble maker is this here from Phil Zucker:
>
> :- op( 500, fy, !). % universal quantifier: ![X]:
> :- op( 500, fy, ?). % existential quantifier: ?[X]:
> :- op( 500,xfy, :).
>
> If you change the later into:
>
> :- op( 500,yfx, :).
>
> You get a difference in SWI-Prolog and SICStus Prolog:
>
> /* SWI-Prolog (threaded, 64 bits, version 8.5.8) */
> ?- X = (![Y]:p(Y)), write_canonical(X), nl.
> :(!([A]),p(A))
> X = ![Y]:p(Y).
>
> /* SICStus 4.7.1 (x86_64-win32-nt-4) */
> ?- X = (![Y]:p(Y)), write_canonical(X), nl.
> !(:('.'(_953,[]),p(_953)))
> X = ![Y]:p(Y) ?
>
> Note the difference, SWI-Prolog gives :(!(...) whereas SICStus Prolog
> gives !(:(...). So the same SICStus Prolog code that would use a !_
> pattern somewhere in his Prolog clauses, doesn’t run in SWI-Prolog.
>
> There are LeanTap variants that use such patterns

Re: About the Operator '|' and the DCG Draft

<8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1252&group=comp.lang.prolog#1252

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ad4:44b4:0:b0:444:45d6:ec25 with SMTP id n20-20020ad444b4000000b0044445d6ec25mr11468434qvt.24.1649816640313;
Tue, 12 Apr 2022 19:24:00 -0700 (PDT)
X-Received: by 2002:a25:8c01:0:b0:634:712d:3def with SMTP id
k1-20020a258c01000000b00634712d3defmr28908747ybl.343.1649816640159; Tue, 12
Apr 2022 19:24:00 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 12 Apr 2022 19:23:59 -0700 (PDT)
In-Reply-To: <87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 02:24:00 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 11
 by: Mostowski Collapse - Wed, 13 Apr 2022 02:23 UTC

Suddently, in a flash of light, thanks to Mr Peter Ludemann,
my guardian angle, the good shepherd, I saw that my whole
life was a lie. Why did I become so deeply absorbed with

the parsing problem? Ok, I will stop from now on. LoL

Mostowski Collapse schrieb am Montag, 11. April 2022 um 12:17:26 UTC+2:
> Basically you get a **silent error**. Everything parses
> fine, the Prolog text can be prepared for execution,
> your code just stops working correctly, when
>
> migrating from SICStus Prolog to SWI-Prolog.

Re: About the Operator '|' and the DCG Draft

<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1253&group=comp.lang.prolog#1253

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:7ca2:0:b0:2eb:db4c:1b53 with SMTP id z2-20020ac87ca2000000b002ebdb4c1b53mr5512364qtv.307.1649816841200;
Tue, 12 Apr 2022 19:27:21 -0700 (PDT)
X-Received: by 2002:a05:6902:727:b0:641:c583:df4b with SMTP id
l7-20020a056902072700b00641c583df4bmr2052781ybt.592.1649816841026; Tue, 12
Apr 2022 19:27:21 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 12 Apr 2022 19:27:20 -0700 (PDT)
In-Reply-To: <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 02:27:21 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 20
 by: Mostowski Collapse - Wed, 13 Apr 2022 02:27 UTC

Just joking, the business is basically finished, I have now:

Dogelog Player is now at 80% of Testing its Predicates
https://twitter.com/dogelogch/status/1514036461968015362

Dogelog Player is now at 80% of Testing its Predicates
https://www.facebook.com/groups/dogelog

Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 04:24:01 UTC+2:
> Suddently, in a flash of light, thanks to Mr Peter Ludemann,
> my guardian angle, the good shepherd, I saw that my whole
> life was a lie. Why did I become so deeply absorbed with
>
> the parsing problem? Ok, I will stop from now on. LoL
> Mostowski Collapse schrieb am Montag, 11. April 2022 um 12:17:26 UTC+2:
> > Basically you get a **silent error**. Everything parses
> > fine, the Prolog text can be prepared for execution,
> > your code just stops working correctly, when
> >
> > migrating from SICStus Prolog to SWI-Prolog.

Re: About the Operator '|' and the DCG Draft

<1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1254&group=comp.lang.prolog#1254

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:5c85:0:b0:2e2:3211:92e9 with SMTP id r5-20020ac85c85000000b002e2321192e9mr5906521qta.386.1649824217607;
Tue, 12 Apr 2022 21:30:17 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:63d:a251:2c51 with SMTP id
q3-20020a5b0f83000000b0063da2512c51mr27247010ybh.594.1649824217449; Tue, 12
Apr 2022 21:30:17 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 12 Apr 2022 21:30:17 -0700 (PDT)
In-Reply-To: <0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 04:30:17 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 12
 by: Mostowski Collapse - Wed, 13 Apr 2022 04:30 UTC

Thats quite some news:

I see the problem corner cases as ones than can be easily avoided
through judicious operator definitions. Any DSL’s that use such cases
are asking for trouble IMO.

Do I understand you correctly. You say avoid certain operator combinations?
How would a normal end-user or DSL designer notice them?

Do they have some special characteristics? Or do you have an explicit list of
those operator combinations that should be avoided?

Re: About the Operator '|' and the DCG Draft

<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1255&group=comp.lang.prolog#1255

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:622a:c3:b0:2e3:4bd0:16c2 with SMTP id p3-20020a05622a00c300b002e34bd016c2mr5784794qtw.575.1649824347639;
Tue, 12 Apr 2022 21:32:27 -0700 (PDT)
X-Received: by 2002:a05:6902:727:b0:641:c583:df4b with SMTP id
l7-20020a056902072700b00641c583df4bmr2287909ybt.592.1649824347502; Tue, 12
Apr 2022 21:32:27 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Tue, 12 Apr 2022 21:32:27 -0700 (PDT)
In-Reply-To: <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 04:32:27 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 59
 by: Mostowski Collapse - Wed, 13 Apr 2022 04:32 UTC

Here is a funny example in the wild, the authors seems not to have known
the ridgeworks rules, since he used:

% Christophe Meudec
% Eclipse 6.0 program
:- op(30, fy, [not]). % must be fy for 'not not a' expressions
:- op(30, yfx, [**, abs]). % must be left to right for 'a ** b ** c' expressions

https://github.com/echancrure/PTC-Solver/blob/f02c64925fbc06a9f2cbbef252684ebccd5bd217/source/util__post_precedence.pl#L12

Which is an attempt to model ADA programming language. The poor guy will have
quite a surprise when mirgating from ECLiPSe to SWI-Prolog:

/* ECLiPSe Prolog */
[eclipse 2]: X = (not not not 2 ** 3 ** 4), write_canonical(X), nl.
not(not(not(**(**(2, 3), 4))))

X = not not not 2 ** 3 ** 4
Yes (0.00s cpu)

And then:

/* SWI-Prolog */
?- op(30, fy, not), op(30, yfx, **).
true.

?- X = (not not not 2 ** 3 ** 4), write_canonical(X), nl.
**(**(not(not(not(2))),3),4)
X = not not not 2**3**4.

If you evaluate the two expressions with bitwise arithmetic you get different results:

[eclipse 6]: X is \(\(\((2^3)^4))).
X = -4097

[eclipse 7]: X is (\(\(\(2)))^3)^4.
X = 531441

For ADA operators:
https://www.adaic.org/resources/add_content/standards/05rm/html/RM-4-5.html

Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 06:30:18 UTC+2:
> Thats quite some news:
>
> I see the problem corner cases as ones than can be easily avoided
> through judicious operator definitions. Any DSL’s that use such cases
> are asking for trouble IMO.
>
> Do I understand you correctly. You say avoid certain operator combinations?
> How would a normal end-user or DSL designer notice them?
>
> Do they have some special characteristics? Or do you have an explicit list of
> those operator combinations that should be avoided?

Re: About the Operator '|' and the DCG Draft

<ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1256&group=comp.lang.prolog#1256

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a37:5e42:0:b0:69a:eac:d843 with SMTP id s63-20020a375e42000000b0069a0eacd843mr5979828qkb.526.1649842996022;
Wed, 13 Apr 2022 02:43:16 -0700 (PDT)
X-Received: by 2002:a81:9c06:0:b0:2eb:d9a7:7f80 with SMTP id
m6-20020a819c06000000b002ebd9a77f80mr22473879ywa.464.1649842995882; Wed, 13
Apr 2022 02:43:15 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 13 Apr 2022 02:43:15 -0700 (PDT)
In-Reply-To: <70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 09:43:16 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 17
 by: Mostowski Collapse - Wed, 13 Apr 2022 09:43 UTC

Woke up in the morning and my brain only produced new challenges.

I am still trying to find a case in the wild in favor of SWI-Prolog. For
example if ADA would effectively parse:

abs x ** y

As this here:

**(abs(x), y)

Then the ISO core standard is somehow not “right”, or lets say more “arbitrary” than
I tought. Which could be an interesting turn of events.

The problem with my suggested fix, using “fx” instead “fy”, it does not work when you
you want to support multiple braketless occurences of an operator.

Re: About the Operator '|' and the DCG Draft

<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1257&group=comp.lang.prolog#1257

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:7ca2:0:b0:2eb:db4c:1b53 with SMTP id z2-20020ac87ca2000000b002ebdb4c1b53mr6278130qtv.307.1649843060136;
Wed, 13 Apr 2022 02:44:20 -0700 (PDT)
X-Received: by 2002:a05:690c:113:b0:2ef:260b:3801 with SMTP id
bd19-20020a05690c011300b002ef260b3801mr7635483ywb.49.1649843059954; Wed, 13
Apr 2022 02:44:19 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 13 Apr 2022 02:44:19 -0700 (PDT)
In-Reply-To: <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 09:44:20 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 34
 by: Mostowski Collapse - Wed, 13 Apr 2022 09:44 UTC

Take the pPEG parsers rule:

op_associativityEq(fy,yfx,left).

Change it into this:

op_associativityEq(fy,yfx,left) :- current_prolog_flag(iso, false).
op_associativityEq(fy,yfx,right) :- current_prolog_flag(iso, true).

What will the pPEG parser do now? Is there also a pPEG unparser?

https://swi-prolog.discourse.group/t/parsing-text-using-a-formal-grammar/5086

Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:43:16 UTC+2:
> Woke up in the morning and my brain only produced new challenges.
>
> I am still trying to find a case in the wild in favor of SWI-Prolog. For
> example if ADA would effectively parse:
>
> abs x ** y
>
> As this here:
>
> **(abs(x), y)
>
> Then the ISO core standard is somehow not “right”, or lets say more “arbitrary” than
> I tought. Which could be an interesting turn of events.
>
> The problem with my suggested fix, using “fx” instead “fy”, it does not work when you
> you want to support multiple braketless occurences of an operator.

Re: About the Operator '|' and the DCG Draft

<87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1258&group=comp.lang.prolog#1258

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a37:b442:0:b0:69a:fc75:ca52 with SMTP id d63-20020a37b442000000b0069afc75ca52mr7825995qkf.730.1649874652634;
Wed, 13 Apr 2022 11:30:52 -0700 (PDT)
X-Received: by 2002:a81:234b:0:b0:2eb:718b:c824 with SMTP id
j72-20020a81234b000000b002eb718bc824mr187261ywj.520.1649874652465; Wed, 13
Apr 2022 11:30:52 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!news.freedyn.de!newsreader4.netcologne.de!news.netcologne.de!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 13 Apr 2022 11:30:52 -0700 (PDT)
In-Reply-To: <1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 18:30:52 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 4444
 by: Mostowski Collapse - Wed, 13 Apr 2022 18:30 UTC

Ok it wurks. I changed pl_parser.pl accordingly, and I now get:

?- string_termList("fy 1 yfx 2.", [T]), write_canonical(T), nl.
yfx(fy(1),2)
T = fy 1 yfx 2.

?- set_prolog_flag(iso, true).
true.

?- string_termList("fy 1 yfx 2.", [T]), write_canonical(T), nl.
fy(yfx(1,2))
T = fy 1 yfx 2.

Eh voila SWI-Prolog has become member of the ISO core standard club.
Maybe it can even apply for V.I.P. membership, because its so important?

Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:44:20 UTC+2:
> Take the pPEG parsers rule:
>
> op_associativityEq(fy,yfx,left).
>
> Change it into this:
>
> op_associativityEq(fy,yfx,left) :- current_prolog_flag(iso, false).
> op_associativityEq(fy,yfx,right) :- current_prolog_flag(iso, true).
>
> What will the pPEG parser do now? Is there also a pPEG unparser?
>
> https://swi-prolog.discourse.group/t/parsing-text-using-a-formal-grammar/5086
> Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:43:16 UTC+2:
> > Woke up in the morning and my brain only produced new challenges.
> >
> > I am still trying to find a case in the wild in favor of SWI-Prolog. For
> > example if ADA would effectively parse:
> >
> > abs x ** y
> >
> > As this here:
> >
> > **(abs(x), y)
> >
> > Then the ISO core standard is somehow not “right”, or lets say more “arbitrary” than
> > I tought. Which could be an interesting turn of events.
> >
> > The problem with my suggested fix, using “fx” instead “fy”, it does not work when you
> > you want to support multiple braketless occurences of an operator.

Re: About the Operator '|' and the DCG Draft

<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1259&group=comp.lang.prolog#1259

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:5199:b0:446:1be8:abf with SMTP id kl25-20020a056214519900b004461be80abfmr1963000qvb.24.1649874770651;
Wed, 13 Apr 2022 11:32:50 -0700 (PDT)
X-Received: by 2002:a81:5607:0:b0:2db:c245:5ff4 with SMTP id
k7-20020a815607000000b002dbc2455ff4mr226678ywb.244.1649874770462; Wed, 13 Apr
2022 11:32:50 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.goja.nl.eu.org!3.eu.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 13 Apr 2022 11:32:50 -0700 (PDT)
In-Reply-To: <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 18:32:50 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 61
 by: Mostowski Collapse - Wed, 13 Apr 2022 18:32 UTC

Interestingly the standard unparser of SWI-Prolog doesn’t give a damn.
But this is another defect which I have posted about already in some thread..

aLSO who_ever wrote this code of pPEG deserves to burn in hell,
for mixing underscore and camelcase. Took me quite a while to run the query..

Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 20:30:53 UTC+2:
> Ok it wurks. I changed pl_parser.pl accordingly, and I now get:
>
> ?- string_termList("fy 1 yfx 2.", [T]), write_canonical(T), nl.
> yfx(fy(1),2)
> T = fy 1 yfx 2.
>
> ?- set_prolog_flag(iso, true).
> true.
>
> ?- string_termList("fy 1 yfx 2.", [T]), write_canonical(T), nl.
> fy(yfx(1,2))
> T = fy 1 yfx 2.
>
> Eh voila SWI-Prolog has become member of the ISO core standard club.
> Maybe it can even apply for V.I.P. membership, because its so important?
> Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:44:20 UTC+2:
> > Take the pPEG parsers rule:
> >
> > op_associativityEq(fy,yfx,left).
> >
> > Change it into this:
> >
> > op_associativityEq(fy,yfx,left) :- current_prolog_flag(iso, false).
> > op_associativityEq(fy,yfx,right) :- current_prolog_flag(iso, true).
> >
> > What will the pPEG parser do now? Is there also a pPEG unparser?
> >
> > https://swi-prolog.discourse.group/t/parsing-text-using-a-formal-grammar/5086
> > Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:43:16 UTC+2:
> > > Woke up in the morning and my brain only produced new challenges.
> > >
> > > I am still trying to find a case in the wild in favor of SWI-Prolog. For
> > > example if ADA would effectively parse:
> > >
> > > abs x ** y
> > >
> > > As this here:
> > >
> > > **(abs(x), y)
> > >
> > > Then the ISO core standard is somehow not “right”, or lets say more “arbitrary” than
> > > I tought. Which could be an interesting turn of events.
> > >
> > > The problem with my suggested fix, using “fx” instead “fy”, it does not work when you
> > > you want to support multiple braketless occurences of an operator.

Re: About the Operator '|' and the DCG Draft

<a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1260&group=comp.lang.prolog#1260

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:4455:b0:69c:6124:21fe with SMTP id w21-20020a05620a445500b0069c612421femr2186074qkp.680.1649876743616;
Wed, 13 Apr 2022 12:05:43 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:63d:a251:2c51 with SMTP id
q3-20020a5b0f83000000b0063da2512c51mr285429ybh.594.1649876743392; Wed, 13 Apr
2022 12:05:43 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!1.us.feeder.erje.net!3.us.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Wed, 13 Apr 2022 12:05:43 -0700 (PDT)
In-Reply-To: <01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Wed, 13 Apr 2022 19:05:43 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 75
 by: Mostowski Collapse - Wed, 13 Apr 2022 19:05 UTC

Maybe they should organize the ISO core standard club like here:

Platin Sponsor
Gold Sponsor
Silver Sponsor
https://www.jug.ch/sponsors.php

Then you can buy different grades of VIPness with Mamon.
Sad Story: Any poor John Doe Prolog system will be non-VIP.

Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 20:32:51 UTC+2:
> Interestingly the standard unparser of SWI-Prolog doesn’t give a damn.
> But this is another defect which I have posted about already in some thread.
>
> aLSO who_ever wrote this code of pPEG deserves to burn in hell,
> for mixing underscore and camelcase. Took me quite a while to run the query.
> Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 20:30:53 UTC+2:
> > Ok it wurks. I changed pl_parser.pl accordingly, and I now get:
> >
> > ?- string_termList("fy 1 yfx 2.", [T]), write_canonical(T), nl.
> > yfx(fy(1),2)
> > T = fy 1 yfx 2.
> >
> > ?- set_prolog_flag(iso, true).
> > true.
> >
> > ?- string_termList("fy 1 yfx 2.", [T]), write_canonical(T), nl.
> > fy(yfx(1,2))
> > T = fy 1 yfx 2.
> >
> > Eh voila SWI-Prolog has become member of the ISO core standard club.
> > Maybe it can even apply for V.I.P. membership, because its so important?
> > Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:44:20 UTC+2:
> > > Take the pPEG parsers rule:
> > >
> > > op_associativityEq(fy,yfx,left).
> > >
> > > Change it into this:
> > >
> > > op_associativityEq(fy,yfx,left) :- current_prolog_flag(iso, false).
> > > op_associativityEq(fy,yfx,right) :- current_prolog_flag(iso, true).
> > >
> > > What will the pPEG parser do now? Is there also a pPEG unparser?
> > >
> > > https://swi-prolog.discourse.group/t/parsing-text-using-a-formal-grammar/5086
> > > Mostowski Collapse schrieb am Mittwoch, 13. April 2022 um 11:43:16 UTC+2:
> > > > Woke up in the morning and my brain only produced new challenges.
> > > >
> > > > I am still trying to find a case in the wild in favor of SWI-Prolog.. For
> > > > example if ADA would effectively parse:
> > > >
> > > > abs x ** y
> > > >
> > > > As this here:
> > > >
> > > > **(abs(x), y)
> > > >
> > > > Then the ISO core standard is somehow not “right”, or lets say more “arbitrary” than
> > > > I tought. Which could be an interesting turn of events.
> > > >
> > > > The problem with my suggested fix, using “fx” instead “fy”, it does not work when you
> > > > you want to support multiple braketless occurences of an operator.

Re: About the Operator '|' and the DCG Draft

<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1263&group=comp.lang.prolog#1263

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:75d1:0:b0:2ed:161f:1f0a with SMTP id z17-20020ac875d1000000b002ed161f1f0amr2057185qtq.173.1649948329121;
Thu, 14 Apr 2022 07:58:49 -0700 (PDT)
X-Received: by 2002:a05:690c:113:b0:2ef:260b:3801 with SMTP id
bd19-20020a05690c011300b002ef260b3801mr2557177ywb.49.1649948328943; Thu, 14
Apr 2022 07:58:48 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!1.us.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 14 Apr 2022 07:58:48 -0700 (PDT)
In-Reply-To: <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 14 Apr 2022 14:58:49 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 16
 by: Mostowski Collapse - Thu, 14 Apr 2022 14:58 UTC

Transfering pPEG results back to C code is not self
evident. The pPEG parser could be a blessing, but it
could be also a further curse.

We don’t know what the pPEG parser does. For example
I don’t find the op_associativityEq/3 table in pl-read.c.
Where it you get it from? Also very simple examples

don’t work in the pPEG parser:

?- string_termList("(- -1).", [T]), write_canonical(T), nl.
-(-,1)
T = (-)-1.

?- X = (- -1), write_canonical(X), nl.
-(-1)
X = - -1.

Re: About the Operator '|' and the DCG Draft

<daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1264&group=comp.lang.prolog#1264

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:3e3:b0:444:3f84:d230 with SMTP id cf3-20020a05621403e300b004443f84d230mr14382782qvb.4.1649960333291;
Thu, 14 Apr 2022 11:18:53 -0700 (PDT)
X-Received: by 2002:a25:c884:0:b0:633:7961:8a06 with SMTP id
y126-20020a25c884000000b0063379618a06mr2871948ybf.38.1649960332976; Thu, 14
Apr 2022 11:18:52 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 14 Apr 2022 11:18:52 -0700 (PDT)
In-Reply-To: <9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 14 Apr 2022 18:18:53 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 33
 by: Mostowski Collapse - Thu, 14 Apr 2022 18:18 UTC

I will not touch pPEG anymore, even not with tweezers,
until it comes with a test suite, in the same folder like where the
source code is housed. At least this is what Ulrich Neumerkel did

for ISO core standard prolog, and which serves as a point of orientation.
Now we have for SWI-Prolog dialect nor the pPEG dialect any point of
orientation. Its just arbitary code uploaded to the internet. Although I think

SWI-Prolog might be in a better situation. Not sure, it has plunit and maybe
it has somewhere read test cases? But it has only with_output_to/2, and
no with_input_from/2. How is parsing tested? I never did dig up some

SWI-Prolog read test cases, maybe there are some? Thats of course my fault.

Mostowski Collapse schrieb am Donnerstag, 14. April 2022 um 16:58:50 UTC+2:
> Transfering pPEG results back to C code is not self
> evident. The pPEG parser could be a blessing, but it
> could be also a further curse.
>
> We don’t know what the pPEG parser does. For example
> I don’t find the op_associativityEq/3 table in pl-read.c.
> Where it you get it from? Also very simple examples
>
> don’t work in the pPEG parser:
>
> ?- string_termList("(- -1).", [T]), write_canonical(T), nl.
> -(-,1)
> T = (-)-1.
>
> ?- X = (- -1), write_canonical(X), nl.
> -(-1)
> X = - -1.

Re: About the Operator '|' and the DCG Draft

<0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1265&group=comp.lang.prolog#1265

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:620a:24c7:b0:69c:2751:3932 with SMTP id m7-20020a05620a24c700b0069c27513932mr3533387qkn.689.1649975725662;
Thu, 14 Apr 2022 15:35:25 -0700 (PDT)
X-Received: by 2002:a81:2f17:0:b0:2ca:9e14:d664 with SMTP id
v23-20020a812f17000000b002ca9e14d664mr3920327ywv.29.1649975725472; Thu, 14
Apr 2022 15:35:25 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 14 Apr 2022 15:35:25 -0700 (PDT)
In-Reply-To: <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com> <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 14 Apr 2022 22:35:25 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 24
 by: Mostowski Collapse - Thu, 14 Apr 2022 22:35 UTC

What I could exclude as a source of error, is ordering of
the operator table itself. At least for SWI-Prolog C code it does not
have an impact, which sequence of operator definitions I use:

This sequence of op/3 calls:

?- op(9, fy, fy), op(9, yfx, yfx).
true.

?- X = (fy 1 yfx 2), write_canonical(X), nl.
yfx(fy(1),2)
X = fy 1 yfx 2.

And this sequence of op/3 calls, give the same:

?- op(9, yfx, yfx), op(9, fy, fy).
true.

?- X = (fy 1 yfx 2), write_canonical(X), nl.
yfx(fy(1),2)
X = fy 1 yfx 2.

This does not exclude the possibility, that reordering the
operator table, inside SWI-Prolog C code, wouldn’t give
another result. It only shows that op/3 cannot confuse the parser.

Re: About the Operator '|' and the DCG Draft

<21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1266&group=comp.lang.prolog#1266

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:240f:b0:445:d728:dd49 with SMTP id fv15-20020a056214240f00b00445d728dd49mr12520387qvb.118.1649975937824;
Thu, 14 Apr 2022 15:38:57 -0700 (PDT)
X-Received: by 2002:a81:78c9:0:b0:2eb:469b:e788 with SMTP id
t192-20020a8178c9000000b002eb469be788mr3725785ywc.34.1649975937652; Thu, 14
Apr 2022 15:38:57 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Thu, 14 Apr 2022 15:38:57 -0700 (PDT)
In-Reply-To: <0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com> <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
<0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Thu, 14 Apr 2022 22:38:57 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 58
 by: Mostowski Collapse - Thu, 14 Apr 2022 22:38 UTC

Here is an example where operator table ordering, respective
reduction rules ordering, influence the reduction result.
Reduction rules ordered like this:

[fy,X] ~> [fy(X)].
[X,yfx,Y] ~> [yfx(X,Y)].

?- reduce([fy,1,yfx,2],X), write_canonical(X), nl.
[yfx(fy(1),2)]
X = [fy 1 yfx 2].

Or the same reduction rules ordered like this, gives a different result:

[X,yfx,Y] ~> [yfx(X,Y)].
[fy,X] ~> [fy(X)].

?- reduce([fy,1,yfx,2],X), write_canonical(X), nl.
[fy(yfx(1,2))]
X = [fy 1 yfx 2].

The reducer code itself is here below, it has a cut (!), so its
sensitive to the reduction rule ordering:

:- op(1200,xfx,~>).

reduce(X, Y) :-
(A ~> B),
append(U, V, X),
append(A, H, V),
append(B, H, W),
append(U, W, Z), !, reduce(Z, Y).
reduce(X, X).

Mostowski Collapse schrieb am Freitag, 15. April 2022 um 00:35:26 UTC+2:
> What I could exclude as a source of error, is ordering of
> the operator table itself. At least for SWI-Prolog C code it does not
> have an impact, which sequence of operator definitions I use:
>
> This sequence of op/3 calls:
>
> ?- op(9, fy, fy), op(9, yfx, yfx).
> true.
>
> ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> yfx(fy(1),2)
> X = fy 1 yfx 2.
>
> And this sequence of op/3 calls, give the same:
>
> ?- op(9, yfx, yfx), op(9, fy, fy).
> true.
>
> ?- X = (fy 1 yfx 2), write_canonical(X), nl.
> yfx(fy(1),2)
> X = fy 1 yfx 2.
>
> This does not exclude the possibility, that reordering the
> operator table, inside SWI-Prolog C code, wouldn’t give
> another result. It only shows that op/3 cannot confuse the parser.

Re: About the Operator '|' and the DCG Draft

<f4d33919-35bb-44c3-bd1c-5786541c3671n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1267&group=comp.lang.prolog#1267

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a0c:c788:0:b0:444:2c7f:4126 with SMTP id k8-20020a0cc788000000b004442c7f4126mr6853656qvj.50.1650019108788;
Fri, 15 Apr 2022 03:38:28 -0700 (PDT)
X-Received: by 2002:a05:690c:39d:b0:2ef:5629:4ec7 with SMTP id
bh29-20020a05690c039d00b002ef56294ec7mr5627593ywb.125.1650019108618; Fri, 15
Apr 2022 03:38:28 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Fri, 15 Apr 2022 03:38:28 -0700 (PDT)
In-Reply-To: <21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com> <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
<0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com> <21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f4d33919-35bb-44c3-bd1c-5786541c3671n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Fri, 15 Apr 2022 10:38:28 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 30
 by: Mostowski Collapse - Fri, 15 Apr 2022 10:38 UTC

Using a fuzzer, I find differences what SWI-Prolog native C code
considers an operator clash and what the pPEG SWIPL examples
considers an operator clash. It seems pPEG is more tolerant.

There are also some fundamental differences in what
Prolog terms the SWI-Prolog native C code builds, and what
the pPEG SWIPL example builds.

This is how I used the fuzzer:

?- between(1,100,_), random_expr(0, _, A), swi_parse(A, X),
ppeg_parse(A, Y), X \== Y, write('expr: '), write(A), write('\nswi: '),
write_canonical(X), write('\nppeg: '), write_canonical(Y), nl, nl, fail.

expr: 0 xfx fy 1 yfx 2 yfx 3
swi: syntax_error(operator_clash)
ppeg: xfx(0,yfx(yfx(fy(1),2),3))

expr: fy fx fx 0
swi: syntax_error(operator_clash)
ppeg: fy(fx(fx(0)))

expr: fy fx 0 yf yf yf
swi: yf(yf(yf(fy(fx(0)))))
ppeg: fy(yf(yf(yf(fx(0)))))

expr: fy 0 xf yfx 1 yfx 2 yf
swi: yf(yfx(yfx(fy(xf(0)),1),2))
ppeg: fy(yf(yfx(yfx(xf(0),1),2)))

false.

Re: About the Operator '|' and the DCG Draft

<bf591281-ea4d-4d63-ab24-18fe60160eean@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1268&group=comp.lang.prolog#1268

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:7614:0:b0:2ed:c70:604c with SMTP id t20-20020ac87614000000b002ed0c70604cmr4847082qtq.391.1650019158662;
Fri, 15 Apr 2022 03:39:18 -0700 (PDT)
X-Received: by 2002:a25:ba0c:0:b0:61a:79a6:fd0 with SMTP id
t12-20020a25ba0c000000b0061a79a60fd0mr4975350ybg.45.1650019158479; Fri, 15
Apr 2022 03:39:18 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Fri, 15 Apr 2022 03:39:18 -0700 (PDT)
In-Reply-To: <f4d33919-35bb-44c3-bd1c-5786541c3671n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com> <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
<0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com> <21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>
<f4d33919-35bb-44c3-bd1c-5786541c3671n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <bf591281-ea4d-4d63-ab24-18fe60160eean@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Fri, 15 Apr 2022 10:39:18 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 80
 by: Mostowski Collapse - Fri, 15 Apr 2022 10:39 UTC

The fuzzer code is here:

:- op(9, xfx, xfx).
:- op(9, yfx, yfx).
:- op(9, xfy, xfy).
:- op(9, fx, fx).
:- op(9, fy, fy).
:- op(9, xf, xf).
:- op(9, yf, yf).

% random_expr(+Integer, -Integer, -Atom)
random_expr(N, M, A) :-
K is 10+N*5,
random(0, K, I),
random_action(I, N, M, A).

% random_expr(+Integer, +Integer, -Integer, -Atom)
random_action(0, N, M, A) :- !,
random_expr(N, H, B),
random_expr(H, M, C),
atom_concat(B, ' xfx ', D),
atom_concat(D, C, A).
random_action(1, N, M, A) :- !,
random_expr(N, H, B),
random_expr(H, M, C),
atom_concat(B, ' yfx ', D),
atom_concat(D, C, A).
random_action(2, N, M, A) :- !,
random_expr(N, H, B),
random_expr(H, M, C),
atom_concat(B, ' xfy ', D),
atom_concat(D, C, A).
random_action(3, N, M, A) :- !,
random_expr(N, M, B),
atom_concat('fx ', B, A).
random_action(4, N, M, A) :- !,
random_expr(N, M, B),
atom_concat('fy ', B, A).
random_action(5, N, M, A) :- !,
random_expr(N, M, B),
atom_concat(B, ' xf', A).
random_action(6, N, M, A) :- !,
random_expr(N, M, B),
atom_concat(B, ' yf', A).
random_action(_, N, M, A) :-
number_codes(N, L),
atom_codes(A, L),
M is N+1.

Mostowski Collapse schrieb am Freitag, 15. April 2022 um 12:38:29 UTC+2:
> Using a fuzzer, I find differences what SWI-Prolog native C code
> considers an operator clash and what the pPEG SWIPL examples
> considers an operator clash. It seems pPEG is more tolerant.
>
> There are also some fundamental differences in what
> Prolog terms the SWI-Prolog native C code builds, and what
> the pPEG SWIPL example builds.
>
> This is how I used the fuzzer:
>
> ?- between(1,100,_), random_expr(0, _, A), swi_parse(A, X),
> ppeg_parse(A, Y), X \== Y, write('expr: '), write(A), write('\nswi: '),
> write_canonical(X), write('\nppeg: '), write_canonical(Y), nl, nl, fail.
>
> expr: 0 xfx fy 1 yfx 2 yfx 3
> swi: syntax_error(operator_clash)
> ppeg: xfx(0,yfx(yfx(fy(1),2),3))
>
> expr: fy fx fx 0
> swi: syntax_error(operator_clash)
> ppeg: fy(fx(fx(0)))
>
> expr: fy fx 0 yf yf yf
> swi: yf(yf(yf(fy(fx(0)))))
> ppeg: fy(yf(yf(yf(fx(0)))))
>
> expr: fy 0 xf yfx 1 yfx 2 yf
> swi: yf(yfx(yfx(fy(xf(0)),1),2))
> ppeg: fy(yf(yfx(yfx(xf(0),1),2)))
>
> false.

Re: About the Operator '|' and the DCG Draft

<ff4cc00d-8ac4-4c20-ba57-288cdd7eb831n@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1272&group=comp.lang.prolog#1272

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:a05:6214:29c2:b0:444:9d4f:4ed0 with SMTP id gh2-20020a05621429c200b004449d4f4ed0mr3680154qvb.90.1650156200255;
Sat, 16 Apr 2022 17:43:20 -0700 (PDT)
X-Received: by 2002:a05:690c:113:b0:2ef:260b:3801 with SMTP id
bd19-20020a05690c011300b002ef260b3801mr5286840ywb.49.1650156200069; Sat, 16
Apr 2022 17:43:20 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sat, 16 Apr 2022 17:43:19 -0700 (PDT)
In-Reply-To: <bf591281-ea4d-4d63-ab24-18fe60160eean@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com> <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
<0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com> <21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>
<f4d33919-35bb-44c3-bd1c-5786541c3671n@googlegroups.com> <bf591281-ea4d-4d63-ab24-18fe60160eean@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ff4cc00d-8ac4-4c20-ba57-288cdd7eb831n@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 17 Apr 2022 00:43:20 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 18
 by: Mostowski Collapse - Sun, 17 Apr 2022 00:43 UTC

Everybody knows that Prolog doesn't parse
(a = b = c), this is what operator icon xfx is made
for. But what is the operator icon fx made for?

Oh my god, SICStus Prolog tolerates this?

/* SICStus Prolog 4.7.1 */
?- X = (:- :- x0).
X = ((:-):-x0) ?

SWI-Prolog and Scryer Prolog are more thight:

/* Scryer Prolog */
?- X = (:- :- x0).
caught: error(syntax_error(incomplete_reduction),read_term/3:1)

/* SWI-Prolog */
?- X = (:- :- x0).
ERROR: Syntax error: Operator priority clash

Re: About the Operator '|' and the DCG Draft

<ece8ebd1-4068-4f7d-8b86-48b4bd6ce56dn@googlegroups.com>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=1273&group=comp.lang.prolog#1273

  copy link   Newsgroups: comp.lang.prolog
X-Received: by 2002:ac8:110a:0:b0:2f1:ea84:b84 with SMTP id c10-20020ac8110a000000b002f1ea840b84mr3426472qtj.463.1650156639212;
Sat, 16 Apr 2022 17:50:39 -0700 (PDT)
X-Received: by 2002:a5b:f83:0:b0:63d:a251:2c51 with SMTP id
q3-20020a5b0f83000000b0063da2512c51mr4544099ybh.594.1650156639050; Sat, 16
Apr 2022 17:50:39 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.lang.prolog
Date: Sat, 16 Apr 2022 17:50:38 -0700 (PDT)
In-Reply-To: <ff4cc00d-8ac4-4c20-ba57-288cdd7eb831n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=77.57.53.70; posting-account=UjEXBwoAAAAOk5fiB8WdHvZddFg9nJ9r
NNTP-Posting-Host: 77.57.53.70
References: <27a911c0-3a2f-4054-81e5-bad9d8320750n@googlegroups.com>
<163a9271-9d06-4fbc-8d3c-1903bd8733bdn@googlegroups.com> <c07fe58b-ca4d-44d1-a716-1790a2033be0n@googlegroups.com>
<82d76042-37a3-44ab-addc-3784060038ccn@googlegroups.com> <9f1d1d60-7c54-4c2d-a655-04b651565d0bn@googlegroups.com>
<0d15e64d-f537-4313-b637-cdd0f66a1761n@googlegroups.com> <52b84705-714c-4248-b85b-a643413b7ff3n@googlegroups.com>
<0152c446-3e8e-4e4f-807c-51e913f95708n@googlegroups.com> <c7ee2838-d75c-4807-982a-fd3567d82374n@googlegroups.com>
<a0dd0b5f-b459-48d3-842b-675f9712c902n@googlegroups.com> <7950d178-a688-4122-ab3a-c5105359632cn@googlegroups.com>
<d8530517-401e-46ec-84f3-7f09c8dd70f5n@googlegroups.com> <870d9bb1-4c0f-41a2-8430-99abd733eed1n@googlegroups.com>
<8f5f92be-4fbe-4093-8ee9-a4796618e0can@googlegroups.com> <adcb7512-f998-4843-bab4-f1b2c7342b40n@googlegroups.com>
<ed1a10f3-0abf-4ca9-8dce-fe2fe99a58c4n@googlegroups.com> <13feb23a-5af2-403a-ae04-de846eef0135n@googlegroups.com>
<t30qfn$o195$1@solani.org> <5bb791dd-1870-4d3e-ab5f-144960a0f16en@googlegroups.com>
<87694357-6814-462c-985e-b4dac5464de0n@googlegroups.com> <8b9def0e-c75b-49e2-9604-578e96616518n@googlegroups.com>
<0c65ee8a-05e5-48c1-a15f-7357f8f4a3can@googlegroups.com> <1d23bf74-8e21-40dd-964b-394714380030n@googlegroups.com>
<70ec78de-68d5-4f2f-b02f-27e217354547n@googlegroups.com> <ecf60f58-e711-41a1-8d69-cff4cbe8abacn@googlegroups.com>
<1ce7789e-d26d-4fb0-bbac-b4eb036838c9n@googlegroups.com> <87653350-350a-4527-9848-ac609c1a64abn@googlegroups.com>
<01c67652-6887-42e5-a533-f72722d92870n@googlegroups.com> <a2bcd077-a0e6-49e6-ad96-81494fed07cbn@googlegroups.com>
<9e3e77c4-04a3-4552-9f51-6600eb648720n@googlegroups.com> <daa565e1-5cf8-4c2d-bb5c-6eeb7290b92an@googlegroups.com>
<0844414b-5c96-4d23-bc26-48b579b41714n@googlegroups.com> <21a52b1d-464a-48c3-b1f8-21bb1d4de772n@googlegroups.com>
<f4d33919-35bb-44c3-bd1c-5786541c3671n@googlegroups.com> <bf591281-ea4d-4d63-ab24-18fe60160eean@googlegroups.com>
<ff4cc00d-8ac4-4c20-ba57-288cdd7eb831n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ece8ebd1-4068-4f7d-8b86-48b4bd6ce56dn@googlegroups.com>
Subject: Re: About the Operator '|' and the DCG Draft
From: bursejan@gmail.com (Mostowski Collapse)
Injection-Date: Sun, 17 Apr 2022 00:50:39 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 67
 by: Mostowski Collapse - Sun, 17 Apr 2022 00:50 UTC

Now I posted already a tight Prolog reader on SWI-Prolog
discourse. Here is it in all its glory. It doesn't handle negative
numbers, but its cute to play around with operator parsing,

like for example:

/* SICStus 4.7.1 */
?- consult('reader.p').

?- reader(T,1200,[:-,x0],[]).
T = (:-x0) ?

?- reader(T,1200,[:-,:-,x0],[]).
error(syntax_error(operator_clash),_415)

The code is only one page:

reader(X, L) -->
reader_primary(Z, L, K), reader_secondary(Z, X, L, K).

reader_primary(H, L, R) --> [A], {current_op(R, M, A), is_prefix(M, E)}, !,
{L < R -> throw(error(syntax_error(operator_clash),_)); true},
{T is R-E}, reader(Z, T), {H =.. [A,Z]}.
reader_primary(X, _, 0) --> [X].

reader_secondary(H, X, L, C) --> [A],
{current_op(R, M, A), is_infix(M, D, E), L >= R}, !,
{R-D < C -> throw(error(syntax_error(operator_clash),_)); true},
{T is R-E}, reader(Z, T),
{J =.. [A,H,Z]},
reader_secondary(J, X, L, R).
reader_secondary(H, X, L, C) --> [A],
{current_op(R, M, A), is_postfix(M, D), L >= R}, !,
{R-D < C -> throw(error(syntax_error(operator_clash),_)); true},
{J =.. [A,H]},
reader_secondary(J, X, L, R).
reader_secondary(H, H, _, _) --> [].

is_infix(xfx, 1, 1).
is_infix(yfx, 0, 1).
is_infix(xfy, 1, 0).

is_prefix(fx, 1).
is_prefix(fy, 0).

is_postfix(xf, 1).
is_postfix(yf, 0).

Mostowski Collapse schrieb am Sonntag, 17. April 2022 um 02:43:21 UTC+2:
> Everybody knows that Prolog doesn't parse
> (a = b = c), this is what operator icon xfx is made
> for. But what is the operator icon fx made for?
>
> Oh my god, SICStus Prolog tolerates this?
>
> /* SICStus Prolog 4.7.1 */
> ?- X = (:- :- x0).
> X = ((:-):-x0) ?
>
> SWI-Prolog and Scryer Prolog are more thight:
>
> /* Scryer Prolog */
> ?- X = (:- :- x0).
> caught: error(syntax_error(incomplete_reduction),read_term/3:1)
>
> /* SWI-Prolog */
> ?- X = (:- :- x0).
> ERROR: Syntax error: Operator priority clash


devel / comp.lang.prolog / Re: About the Operator '|' and the DCG Draft

Pages:123
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor