comp.lang.ada
 help / color / mirror / Atom feed
From: Shark8 <onewingedshark@gmail.com>
Subject: Re: Writing a scanner and parser in Ada
Date: Tue, 26 Dec 2017 10:06:00 -0800 (PST)
Date: 2017-12-26T10:06:00-08:00	[thread overview]
Message-ID: <aa4de6f2-1bda-4e72-be0d-c4aac324fd3b@googlegroups.com> (raw)
In-Reply-To: <p1rivu$1d03$1@gioia.aioe.org>

On Monday, December 25, 2017 at 12:19:29 PM UTC-7, Dmitry A. Kazakov wrote:
> 
> The rationale is this. More powerful the formal language of patterns is, 
> more difficult it becomes for the user to foresee and understand what 
> the pattern will match and what not. Regular expressions are already too 
> complex. SNOBOL patterns are even more powerful, so that anything beyond 
> trivial quickly becomes not understandable.


I'm not sure that's true. Chapter 7 of "A Snobol4 Tutorial" from snobol4.org -- http://www.snobol4.org/docs/burks/tutorial/ch7.htm -- has as its first example matching a list.

------------------------------------------------
Let's consider a simple example. We want to write a pattern to test for a list. We'll define a list as being one or more numbers separated by comma, and enclosed by parentheses. Use CODE.SNO to try this definition:
    ?       ITEM = SPAN('0123456789')
    ?       LIST = POS(0) '(' ITEM  ARBNO(',' ITEM) ')' RPOS(0)
    ?       '(12,345,6)' LIST
    Success
    ?       '(12,,34)' LIST
    Failure

ARBNO is retried and extended until its subsequent, ')', finally matches. POS(0) and RPOS(0) force the pattern to be applied to the entire subject string. 
Alternation may be used within ARBNO's argument.
------------------------------------------------

The above seems quite straightforward, and IMO, easier to comprehend than an equivalent regular expression. Especially because breaking out of the realm of regular languages simply by making the definition recursive [LISTs that can contain LISTs] can be achieved simply by appending " | *LIST" to the definition of ITEM.

So, IMO, SNOBOL itself proves as a counterexample to your claim.


  reply	other threads:[~2017-12-26 18:06 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-24  1:15 Writing a scanner and parser in Ada Yves Cloutier
2017-12-24  4:07 ` Robert Eachus
2017-12-25 16:32   ` Yves Cloutier
2017-12-24  9:08 ` Dmitry A. Kazakov
2017-12-24 15:09   ` Niklas Holsti
2017-12-25 16:37     ` Yves Cloutier
2017-12-25 16:35   ` Yves Cloutier
2017-12-25 17:08     ` Dmitry A. Kazakov
2017-12-25 18:57       ` Yves Cloutier
2017-12-25 19:19         ` Dmitry A. Kazakov
2017-12-26 18:06           ` Shark8 [this message]
2017-12-26 21:45             ` Dmitry A. Kazakov
2017-12-26 22:20             ` Dmitry A. Kazakov
2017-12-24 14:40 ` Tero Koskinen
2017-12-25 16:36   ` Yves Cloutier
2017-12-24 15:33 ` Lucretia
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox