From: Oleg Goodyckov <og@videoproject.kiev.ua>
Subject: Re: FAQ and string functions
Date: Mon, 5 Aug 2002 10:18:34 +0300
Date: 2002-08-05T10:18:34+03:00 [thread overview]
Message-ID: <20020805101834.B1660@videoproject.kiev.ua> (raw)
In-Reply-To: 4519e058.0208020605.5ab7e092@posting.google.com
On Fri, Aug 02, 2002 at 07:05:33AM -0700, Ted Dennison wrote:
> Oleg Goodyckov <og@videoproject.kiev.ua> wrote in message news:<20020801194720.Q1080@videoproject.kiev.ua>...
> > Saing onestly, I'm very surprized, that so basic and simple operation as
> > splitting/joining of string is not present in Ada natively. And most
>
> Well, stated that way, it *is* present. Splitting strings (or any
> other array) is done with slices, and joining them (any array) is done
> with the "&" operator. Those are indeed the basic operations available
> to arrays (along with indexing, and bounds attributes like 'first). As
> I understand it, your problem isn't with splitting and joining, its
> with figuring out where to do the splitting and joining. Correct?
Of cause not in splitting/joining itself.
Look at drop of water, where problem is mirrored. Below is slice of
Gnat.Spitbol.Patterns package (g-spipat.ads):
-- For an example of a recursive pattern, let's define a pattern
-- that is like the built in Bal, but the string matched is balanced
-- with respect to square brackets or curly brackets.
-- The language for such strings might be defined in extended BNF as
-- ELEMENT ::= <any character other than [] or {}>
-- | '[' BALANCED_STRING ']'
-- | '{' BALANCED_STRING '}'
-- BALANCED_STRING ::= ELEMENT {ELEMENT}
-- Here we use {} to indicate zero or more occurrences of a term, as
-- is common practice in extended BNF. Now we can translate the above
-- BNF into recursive patterns as follows:
-- Element, Balanced_String : aliased Pattern;
-- .
-- .
-- .
-- Element := NotAny ("[]{}")
-- or
-- ('[' & (+Balanced_String) & ']')
-- or
-- ('{' & (+Balanced_String) & '}');
-- Balanced_String := Element & Arbno (Element);
-- Note the important use of + here to refer to a pattern not yet
-- defined. Note also that we use assignments precisely because we
-- cannot refer to as yet undeclared variables in initializations.
-- Now that this pattern is constructed, we can use it as though it
-- were a new primitive pattern element, and for example, the match:
-- Match ("xy[ab{cd}]", Balanced_String * Current_Output & Fail);
-- will generate the output:
-- x
-- xy
-- xy[ab{cd}]
-- y
-- y[ab{cd}]
-- [ab{cd}]
-- a
-- ab
-- ab{cd}
-- b
-- b{cd}
-- {cd}
-- c
-- cd
-- d
Good! But where can I find this last output? Somhere in "Current_Output".
Where is it? In current output file? Why there?
Suggest: because Ada has a lack of dynamically infrastructure.
And external file is such a most apropriate implementation of it. It likes
as pushing a problem out of mind: data pushed out of program, problem
pushed out of mind. No data - no problem.
But I'll be glad to find this convinient dynaic infrastructure. Having it
- it will be very simple to build any variation of split/join of string.
Suggest: big amount of code in support of realization of function "split"
is hidden realization of dynamic infrastructure needed for this purpose.
next prev parent reply other threads:[~2002-08-05 7:18 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-30 6:32 FAQ and string functions Oleg Goodyckov
2002-07-30 8:52 ` Colin Paul Gloster
2002-07-30 13:48 ` Ted Dennison
2002-07-31 4:52 ` Brian May
2002-08-01 16:09 ` Ted Dennison
2002-08-02 0:21 ` Brian May
2002-08-02 1:56 ` tmoran
2002-08-02 13:59 ` Ted Dennison
2002-07-31 7:46 ` Oleg Goodyckov
2002-07-31 9:04 ` Lutz Donnerhacke
2002-07-31 9:39 ` Pascal Obry
2002-07-31 15:06 ` Oleg Goodyckov
2002-07-31 16:50 ` Oleg Goodyckov
2002-07-31 20:16 ` Simon Wright
2002-07-31 20:56 ` Robert A Duff
2002-08-01 0:11 ` Darren New
2002-08-01 1:08 ` tmoran
2002-08-01 9:25 ` Brian May
2002-08-01 11:20 ` Oleg Goodyckov
2002-08-01 15:43 ` Darren New
2002-08-01 21:37 ` Robert A Duff
2002-08-03 0:42 ` Ted Dennison
2002-08-03 13:51 ` Robert A Duff
2002-08-03 16:43 ` Darren New
2002-08-05 13:37 ` Stephen Leake
2002-08-02 8:01 ` Oleg Goodyckov
2002-08-02 16:09 ` Darren New
2002-08-01 11:09 ` Oleg Goodyckov
2002-08-01 14:08 ` Frank J. Lhota
2002-08-01 15:06 ` Robert A Duff
2002-08-01 16:05 ` Oleg Goodyckov
2002-08-01 14:57 ` Georg Bauhaus
2002-07-31 22:04 ` Dmitry A.Kazakov
2002-07-31 15:23 ` Oleg Goodyckov
2002-08-01 21:57 ` Dmitry A.Kazakov
2002-08-01 13:10 ` Oleg Goodyckov
2002-08-02 23:29 ` Dmitry A.Kazakov
2002-08-02 16:35 ` Oleg Goodyckov
2002-08-05 11:50 ` Dmitry A. Kazakov
2002-08-05 14:29 ` Larry Kilgallen
2002-08-05 14:57 ` Dmitry A. Kazakov
2002-08-05 15:12 ` Oleg Goodyckov
2002-08-05 16:20 ` Darren New
2002-08-05 17:01 ` Georg Bauhaus
2002-08-05 17:48 ` Darren New
2002-08-05 19:06 ` tmoran
2002-08-05 20:08 ` Darren New
[not found] ` <slrnakv3q9.p2.lutz@taranis.iks-jena.de>
[not found] ` <3D4FEFCB.3B74F5E5@san.rr.com>
2002-08-14 0:07 ` Randy Brukardt
2002-08-01 14:29 ` Ted Dennison
2002-08-01 16:47 ` Oleg Goodyckov
2002-08-02 14:05 ` Ted Dennison
2002-08-02 16:11 ` Darren New
2002-08-03 0:30 ` Ted Dennison
2002-08-03 0:58 ` Darren New
2002-08-03 2:04 ` Dale Stanbrough
2002-08-03 2:32 ` Ted Dennison
2002-08-03 2:47 ` Darren New
2002-08-03 12:41 ` Ted Dennison
2002-08-03 16:53 ` Darren New
2002-08-04 1:08 ` Ted Dennison
2002-08-04 16:23 ` Darren New
2002-08-05 2:16 ` Robert Dewar
2002-08-05 3:45 ` Darren New
2002-08-05 9:56 ` Lutz Donnerhacke
2002-08-05 16:02 ` Darren New
2002-08-14 0:42 ` Randy Brukardt
2002-08-14 1:45 ` Darren New
2002-08-14 19:37 ` Randy Brukardt
2002-08-14 20:25 ` Stephen Leake
2002-08-14 20:22 ` Stephen Leake
2002-08-15 19:24 ` Randy Brukardt
[not found] ` <jb1vkustkugeutalhvrhv1n0k9hqn2fpip@4ax.com>
[not found] ` <3D4FF351.8F4A6C0A@san.rr.com>
2002-08-14 1:03 ` Randy Brukardt
2002-08-14 1:05 ` Robert A Duff
[not found] ` <3D4EA1AC.80D17170@s <wccofc6b66u.fsf@shell01.TheWorld.com>
2002-08-14 20:29 ` Stephen Leake
2002-08-26 17:53 ` Robert A Duff
2002-08-26 18:40 ` Chad R. Meiners
2002-08-26 18:52 ` Robert A Duff
2002-08-26 21:46 ` Chad R. Meiners
2002-08-05 13:29 ` Stephen Leake
2002-08-03 5:07 ` achrist
2002-08-03 12:52 ` Ted Dennison
2002-08-05 15:34 ` Ted Dennison
2002-08-05 13:24 ` Stephen Leake
2002-08-05 16:02 ` Darren New
2002-08-05 7:18 ` Oleg Goodyckov [this message]
2002-08-02 1:04 ` tmoran
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox