On Tue, 2022-03-22 at 11:34 +0000, Seymour J Metz wrote:
> We'll have to agree to disagree on whether restricted backtracking is 
> desirable. IMHO it greatly restricts the expressive power and utility of the 
> language.

I suggest reading the original paper submitted to the ACM by Professor Bryan 
Ford from MIT https://bford.info/pub/lang/peg.pdf. It finishes with "Finally, 
despite their ability to express language
constructs requiring unlimited looka-head and backtracking, all PEGs are 
parseable in linear time with a suitable tabular or memoizing algorithm". This 
is important. PEG parsers use memoizing and
other sleights of hand. Regular expression implementations using recursive 
backtracking can exhibit exponential running time in some cases. This is known 
as "catastrophic backtracking. Also, PEGs
don't have grammar ambiguities. Every PEG is deterministic.

It's also worth reading Professor Roberto Ierusalimschy's paper on LPeg where 
he explains the inherent weaknesses of regular expressions 
http://www.inf.puc-rio.br/~roberto/docs/peg.pdf and how PEG
parsers solve those issues. 

I use regular expressions all the time in both Java and Python. For simple 
string tokenizing and pattern matching they're great. But for heavy text 
processing they just don't cut it. 

> 
> BTW, while I find the *ix syntax for refexen to be unduly terse, PEG suffers 
> from the same fault; in fact, PEG and regex syntax are very similar. I'd much 
> prefer something along the lines of Icon.
> 
> 
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
> 
> ________________________________________
> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
> David Crayford [dcrayf...@gmail.com]
> Sent: Tuesday, March 22, 2022 7:09 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: looking for 'how to' developing Rexx host command
> 
> It’s restricted backtracking which is desirable and a much better 
> implementation than regex 
> https://secure-web.cisco.com/1swO48l1_JB99CkRa7AMmDq2Z0sGAFRLPab3VIIcfgUnux20kM6PQg8QhPaddTUOao6BuHgnugd-htzOobi6JBCFXLG4Aw2UYQYWL-MuMiD-ZPGACexqeNy3dDMhXL5viUfxY3jOpw2zCkFeRv1ZB2Fyext2w9HrC4q8aeAuWOUkKbcpRDF-wUkyqNNzmUl-Qv-jAxpPXm-W_yZD0Y7D-FOkMubanuZaHFMGziJYNL85TyJx_RqB4a3qG4UZPIzvf_A6AdBZhuQnUcKAZq440h6Cmf6Kk1FBKzpAYptArppxx-zOnzF9XGe_AYzYDl3giARQptMDgIGVYTPMfPOS6bd68-cd55XpGsrd6QD97WYP1KyJT4bsPItZwCRZgNNJaQpSOopSNLLaT2rZBX9lUKliAN1A3I5BnjxEC-wjkNGAK1y85Z8jzy7R4sOnZmCuLyyR_5dYDYxRjyDsL5tF_Ww/https%3A%2F%2Fwww.sobyte.net%2Fpost%2F2022-01%2Flpeg%2F
> . Regular expressions are fine for simple use cases but suck when they become 
> complex. They are also slow and blared which is why everybody uses PEGs these 
> days.
> 
> > On 22 Mar 2022, at 18:55, Seymour J Metz <sme...@gmu.edu> wrote:
> > 
> > Hm, the article explicitly mentions contexts in which PEGs don't backtrack 
> > but instead do greedy matching. In Perl, greedy matching is available if 
> > you need it but is not the norm.
> > 
> > 
> > --
> > Shmuel (Seymour J.) Metz
> > https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=04%7C01%7Csmetz3%40gmu.edu%7C4c197eb4e4a04d26a9f808da0bf486d6%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637835442120805500%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=w78MjUxtKqWrD6eW97hd39agqHvBGvU9U1ylC2H9arI%3D&amp;reserved=0
> > 
> > ________________________________________
> > From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
> > David Crayford [dcrayf...@gmail.com]
> > Sent: Monday, March 21, 2022 10:12 PM
> > To: IBM-MAIN@LISTSERV.UA.EDU
> > Subject: Re: looking for 'how to' developing Rexx host command
> > 
> > > On Mon, 2022-03-21 at 13:33 +0000, Seymour J Metz wrote:
> > > I just read the wiki artlice [[Parsing expression grammar]] and don't see 
> > > either the sophistication or the ease of use compared to regexen. I've 
> > > come to rely on named captures and backtracking,
> > > both
> > > of which seem to be missing.
> > 
> > Absolutely not. Depending on the library it's trivial to support named 
> > captures within named captures 
> > http://secure-web.cisco.com/1pDw906RvgdZxwW-QAEwZVgBdvkJGRrcGKbuoM_TdwgoBeW3Z55X8fS2im3k0c5R5U6qsEXk9asWW1HUfxN9dtI2zv_Ngos--f2Am86zaajaxDZrOInyLvR8tCMHaFDZRHk7tTsH10uKMqWRO1P0fQZncGO5DnJwzxkh6fcdOUxUycX64-3s_Z5MLmWkQ4YJ8QI2PAD0RNl86JJbdYHKlIaU8tOLuY2qjk3ZevVEI0l9bP3dNEmon3N8iIHS7k3Tq5-X4cUf_1yWZQAPjmgm4dsqQDCvdanw6s44hzVLRQjv4dwuSf_gmqak_hqEzkFjo31RK8HTfprGsToGW102HQhDXeGfWDlnXK1791cGZyCf3KvwdJtQsOKemboglVwH8RsXUyHbiv7i9cDdx89-bwYUFUirBHHKOVMand591UMM2weqvabSC5WH-C3-7GQq4/http%3A%2F%2Flua-users.org%2Flists%2Flua-l%2F2010-02%2Fmsg00493.html
> > . Backtracking is equally trivial. PEGs
> > support recursive decent grammars. The problem with regular expressions is 
> > that they don't scale. For example, using PEGs it's simple to functionally 
> > decompose a tricky grammar such as validating
> > a IP
> > address, which may be either a hostname, IPv4 or IPv6 [1]. Using a regex 
> > just to validate IPv6 is an intractable mess [2]. PEGs are super powerful 
> > which is why they are used to write the parsers
> > for
> > programming language, including perl 6 (does anybody use perl 6?).
> > 
> > [1] 
> > https://secure-web.cisco.com/1Xbxffegrzqy1wsHqwA5cU-KOU9n7zP24xIi7xg7LsSSjHKvo17YCZzDlJ_lefeFbH7zoYceR29G1JFEgWJct-WIhShL5LEr7j4y5OfaUVIZAjQZWt_QApgb6k8mBMWbXKrpWH-OVcwb5-HVfd8c89DY0xUtTuvS0PWA1gu--8neKwUbyB8AZgO3EwED3mBQ1eb1zlSlrSz5EZy32kmgFwP_tr3e7OJW5WLFPVTBdsHBUs8tChQszuRBCFpazD3QtkM69ORRakWdsHQtGGlk463rujfN5BkLTn4Do5RQvkJ4Vevfq3MBG28XgSyQu2q6zIUEjsg3bS1GOafKyiBDdKcKMopKrTE-mxsm9HKGsmY3liyg88yoruz0woY-wKDXYmmSYGqCNzilTSrMCgb5HxZ0Xx5OiEpjVAEXXTCdHFbYNXUvjsU3BfVb-iB3OIJRB/https%3A%2F%2Fgithub.com%2Fmozilla-services%2Flua_sandbox_extensions%2Fblob%2Fmain%2Flpeg%2Fmodules%2Flpeg%2Fip_address.lua
> > [2] 
> > https://secure-web.cisco.com/1Y9ylsi7oDYzVEtak_RKC4Bpe3nJInxwZQvniOUCH9eaKfXdJZzvlIG1gCWvCTYjsPEgXg3hpQM8naAUGVQhdD1dUJKjNSy0_XxZ1pi0VyQ3ba0q49XHGe-41TtV_933pPvGSWwuBQPat7BwUL8eZE7O8FnlizFEuU130qedgRoUpsxMMHIB2nqYDHiSfe1whkO4Y3kAYe9RLkh7EtAgyAOhkPobJuV_BhX09AB07E719jujDVzWAu5qkS75Rm3k2xpO2GA5wHS2Xt7IF9jSbFkTb16sFQWtgjhLX4cytRXnThc_hc9u4jopavvl1490VeWbUZ-amKRRrogEzmSGBThtCmAC2_oVeBo_Eq3Dgw8x7_uUvP5kGAVdR2KTLyHBwEYEBaGRvFvGuzqU4Jn1d-zrdy8L0zGokDAsu4csGjhXGtHizAF0K6owa1qk5mYdaMDfnKvoVYPIIBlLzyIoREg/https%3A%2F%2Fihateregex.io%2Fexpr%2Fipv6%2F
> > [3] 
> > https://secure-web.cisco.com/1OB5wS1NRw1jlHo8N5C-Q3DstEBbVYWL0ZPFUN6zkkt8Av80k0Tt9ItAVDoNPr_w3nzA3odk3hShvfKIQQUi3N7fMHceP8N_L6i-LghsboQm0U2L-A-53MjmoonmryvVMBnPsEyH2MbIsNa10DtWtjNO7HlGEOC4gWheFSjLiG8aD6rs5sVaT-URzDftolhVUoO7Iy_pIox6ftolAAfXivovbA2L_y9ykfh6h5738mBlrAAfBLdude69vgTf4LuI4VFqBxg-wR8rimBVm2AfjkEEd8uAQcC-bnK65nsd_nVnoEucFLtuu9tOUGYkrO7Wfwd351z2ApuC_jSY3UBlS2vnL22MKinJpIHd3f4L7j3o3u8KlbW3Etmtg8cFBEL3lIZViOGC_NOs2wM5D217jUdstRA4ZczphiERKqR1MGlZ0uLnHRtd-mnj6-qK15AHoked64v1ZBNZhRIpA_29HRQ/https%3A%2F%2Fmetacpan.org%2Fdist%2FPegex%2Fview%2Flib%2FPegex.pod
> > 
> > 
> > > 
> > > --
> > > Shmuel (Seymour J.) Metz
> > > https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=04%7C01%7Csmetz3%40gmu.edu%7C4c197eb4e4a04d26a9f808da0bf486d6%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637835442120805500%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=w78MjUxtKqWrD6eW97hd39agqHvBGvU9U1ylC2H9arI%3D&amp;reserved=0
> > > 
> > > ________________________________________
> > > From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf 
> > > of David Crayford [dcrayf...@gmail.com]
> > > Sent: Monday, March 21, 2022 9:08 AM
> > > To: IBM-MAIN@LISTSERV.UA.EDU
> > > Subject: Re: looking for 'how to' developing Rexx host command
> > > 
> > > > On Mon, 2022-03-21 at 12:42 +0000, Seymour J Metz wrote:
> > > > Sorry, I should have been less terse. I meant that PCRE provides a more 
> > > > sophisticated RE engine.
> > > 
> > > PCRE is slightly more sophisticated but it's puny when compared to PEG 
> > > engines. Not only are PEG libraries more sophisticated they are orders of 
> > > magnitude easier to learn and use.
> > > 
> > > 
> > > > Off topic, but why does the documented URI pattern not recognize 
> > > > fragments prefixed by "#"?
> > > > 
> > > > 
> > > > --
> > > > Shmuel (Seymour J.) Metz
> > > > https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=04%7C01%7Csmetz3%40gmu.edu%7C4c197eb4e4a04d26a9f808da0bf486d6%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637835442120805500%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=w78MjUxtKqWrD6eW97hd39agqHvBGvU9U1ylC2H9arI%3D&amp;reserved=0
> > > > 
> > > > ________________________________________
> > > > From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on 
> > > > behalf of David Crayford [dcrayf...@gmail.com]
> > > > Sent: Monday, March 21, 2022 8:28 AM
> > > > To: IBM-MAIN@LISTSERV.UA.EDU
> > > > Subject: Re: looking for 'how to' developing Rexx host command
> > > > 
> > > > On Mon, 2022-03-21 at 12:01 +0000, Seymour J Metz wrote:
> > > > > PCRE?
> > > > 
> > > > No. It uses the C++ RTL ECMAScript Grammar which is 99% compatible with 
> > > > PCRE. AFAIK, the only thing it doesn't support is recursive subgroup 
> > > > matching which I could care less about. I lost
> > > > interest
> > > > in
> > > > REXX long ago and regular expressions when I discovered PEGs
> > > > http://secure-web.cisco.com/1GzTyMMSxCF_dwz2M6Q46PXDtjQQPO9p6ZnEEaWyOCoB_OCkMHE0mJFg8_ivpVjXcHrXax7OQ0H_1OuTTj4qhcLRfQs7zDJNyLyG4NVFThKZbFfuIyALvQBo0O9xtivp3mfCFxg0XUteBTVqbC7DJJRGiYh8W-yiJjJP3EUpGBcbUS1xJiEstgA_yk97ZlzNUyFasjrTZYqnLYM9-8MQDL-SHo6VnBTY-3DTeVHncLZwmV-qKLCQjvAPRPR8i6ckJ16bUTA7bgxKOsFthBcfdtGpX8OHo8dH-psux7cnLT2547giX2VYLIv-rGiH2qSNOc3AGtygDbBvd8AcrLzf7GiGSTUiPtjI83vwkcCmHPo96dcT4YRSxRO5xEHTJxvKRBg-NAEEbzj1XMm0_hG6iNmaTQm7KhcyvsiKnJk7RoAeWzXdI3ccjohTu7R0o64c-/http%3A%2F%2Flua-users.org%2Fwiki%2FLpegRecipes
> > > > .
> > > > 
> > > > 
> > > > > --
> > > > > Shmuel (Seymour J.) Metz
> > > > > https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmason.gmu.edu%2F~smetz3&amp;data=04%7C01%7Csmetz3%40gmu.edu%7C4c197eb4e4a04d26a9f808da0bf486d6%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637835442120805500%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&amp;sdata=w78MjUxtKqWrD6eW97hd39agqHvBGvU9U1ylC2H9arI%3D&amp;reserved=0
> > > > > 
> > > > > ________________________________________
> > > > > From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on 
> > > > > behalf of David Crayford [dcrayf...@gmail.com]
> > > > > Sent: Sunday, March 20, 2022 11:35 PM
> > > > > To: IBM-MAIN@LISTSERV.UA.EDU
> > > > > Subject: Re: looking for 'how to' developing Rexx host command
> > > > > 
> > > > > On Sun, 2022-03-20 at 10:08 -0500, Paul Gilmartin wrote:
> > > > > > On Sun, 20 Mar 2022 07:56:39 -0700, Charles Mills wrote:
> > > > > > 
> > > > > > > TSO/E Rexx Reference Chapter 14. Language Processor Environments?
> > > > > > > 
> > > > > > Wouldn't a SAMPLIB member be nice?  In a HLL?
> > > > > 
> > > > > Writing a REXX command processor in a HLL is non-trivial to do 
> > > > > correctly. I've done it a few times and it requires creating a 
> > > > > persistent LE environment and hanging the pointer on the user
> > > > > area
> > > > > inthe
> > > > > environment block. Like most things on z/OS, REXX programming 
> > > > > services were designed for HLASM. Unfortunately, for the kind of APIs 
> > > > > I'm interested in HLASM is practically useless. For
> > > > > example,
> > > > > regular
> > > > > expressions
> > > > > https://secure-web.cisco.com/1zcwmhQDfP3w43bgtLLTfqgfquwmvKtHyKxkeXoo2pwlKZnmHKubm9IgbehcXUMaSRUvaEdPtbH79-0CZ30CeuslyETSCoPogZKiHdS9lnPt0OXlOV2A1sZGJH1j2ZlRptWqebMlsvE26C_jDXTFaXgQwwpSR4PfcyY2a3fHtEEFPy8N1_EUhKhgNJ4qKrOEzp6jQE_jSCNpvkXsh0td0Atyfzpzn85YvAjgTe-uL_bIgjp-HQoFpsdnKO_USxUiVxvRukM8wHuQLKtjVhDMgqvI3acfBOPJV1xYg3rATQBgwkriE0Ey8C3BtYm8aXHNI2qhJdDLtiR3QZHo90qFKkTga0SshiTOaC9Cn20kfOeXkBwCF8mmt0enaJQnalSmeZbQOZClq3sRCF9rgGZTkAaC-NMWPVp8tZ9C3LobJmxH2MvzLHyNlELnLUQl2PsN_/https%3A%2F%2Fgithub.com%2Fdaveyc%2FRTK
> > > > > .
> > > > > 
> > > > > It's far easier to just use a more contemporary programming language 
> > > > > which has a modern API for writing packages. Although, then you need 
> > > > > to know C/C++ for Python, Lua, Ruby, Node etc.
> > > > > 
> > > > > 
> > > > > 
> > > > > > > -----Original Message-----
> > > > > > > From: ITschak Mugzach
> > > > > > > Sent: Sunday, March 20, 2022 7:36 AM
> > > > > > > 
> > > > > > > I scanned the tso rexx manuals and haven't found any instructions 
> > > > > > > on how to
> > > > > > > develop the host load module. I mean, the one who supplies the 
> > > > > > > address xxx
> > > > > > > services. Any idea where to find a sample or instruction manual?
> > > > > 
> > > > > ----------------------------------------------------------------------
> > > > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > > > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > > > > 
> > > > > ----------------------------------------------------------------------
> > > > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > > > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > > > 
> > > > ----------------------------------------------------------------------
> > > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > > > 
> > > > ----------------------------------------------------------------------
> > > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > > 
> > > ----------------------------------------------------------------------
> > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > > 
> > > ----------------------------------------------------------------------
> > > For IBM-MAIN subscribe / signoff / archive access instructions,
> > > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > 
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> > 
> > ----------------------------------------------------------------------
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to