Re: Command Languages Versus Programming Languages

Liste des GroupesRevenir à cu shell 
Sujet : Re: Command Languages Versus Programming Languages
De : cross (at) *nospam* spitfire.i.gajendra.net (Dan Cross)
Groupes : comp.unix.shell comp.unix.programmer comp.lang.misc
Date : 22. Nov 2024, 14:30:34
Autres entêtes
Organisation : PANIX Public Access Internet and UNIX, NYC
Message-ID : <vhq11q$nq7$1@reader2.panix.com>
References : 1 2 3 4
User-Agent : trn 4.0-test77 (Sep 1, 2010)
In article <874j40sk01.fsf@doppelsaurus.mobileactivedefense.com>,
Rainer Weikusat  <rweikusat@talktalk.net> wrote:
cross@spitfire.i.gajendra.net (Dan Cross) writes:
Rainer Weikusat  <rweikusat@talktalk.net> wrote:
Janis Papanagnou <janis_papanagnou+ng@hotmail.com> writes:
>
[...]
>
Personally I think that writing bulky procedural stuff for something
like [0-9]+ can only be much worse, and that further abbreviations
like \d+ are the better direction to go if targeting a good interface.
YMMV.
>
Assuming that p is a pointer to the current position in a string, e is a
pointer to the end of it (ie, point just past the last byte) and -
that's important - both are pointers to unsigned quantities, the 'bulky'
C equivalent of [0-9]+ is
>
while (p < e && *p - '0' < 10) ++p;
>
That's not too bad. And it's really a hell lot faster than a
general-purpose automaton programmed to recognize the same pattern
(which might not matter most of the time, but sometimes, it does).
>
It's also not exactly right.  `[0-9]+` would match one or more
characters; this possibly matches 0 (ie, if `p` pointed to
something that wasn't a digit).
>
The regex won't match any digits if there aren't any. In this case, the
match will fail. I didn't include the code for handling that because it
seemed pretty pointless for the example.

That's rather the point though, isn't it?  The program snippet
(modulo the promotion to signed int via the "usual arithmetic
conversions" before the subtraction and comparison giving you
unexpected values; nothing to do with whether `char` is signed
or not) is a snippet that advances a pointer while it points to
a digit, starting at the current pointer position; that is, it
just increments a pointer over a run of digits.

But that's not the same as a regex matcher, which has a semantic
notion of success or failure.  I could run your snippet against
a string such as, say, "ZZZZZZ" and it would "succeed" just as
it would against an empty string or a string of one or more
digits.  And then there are other matters of context; does the
user intend for the regexp to match the _whole_ string?  Or any
portion of the string (a la `grep`)?  So, for example, does the
string "aaa1234aaa" match `[0-9]+`?  As written, the above
snippet is actually closer to advancing `p` over `^[0-9]*`.  One
might differentiate between `*` and `+` after the fact, by
examining `p` against some (presumably saved) source value, but
that's more code.

These are just not equivalent.  That's not to say that your
snippet is not _useful_ in context, but to pretend that it's the
same as the regular expression is pointlessly reductive.

By the way, something that _would_ match `^[0-9]+$` might be:

term% cat mdp.c
#include <assert.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

static bool
mdigit(unsigned int c)
{
return c - '0' < 10;
}

bool
mdp(const char *str, const char *estr)
{
if (str == NULL || estr == NULL || str == estr)
return false;
if (!mdigit(*str))
return false;
while (str < estr && mdigit(*str))
str++;
return str == estr;
}

bool
probe(const char *s, bool expected)
{
if (mdp(s, s + strlen(s)) != expected) {
fprintf(stderr, "test failure: `%s` (expected %s)\n",
    s, expected ? "true" : "false");
return false;
}
return true;
}

int
main(void)
{
bool success = true;

success = probe("1234", true) && success;
success = probe("", false) && success;
success = probe("ab", false) && success;
success = probe("0", true) && success;
success = probe("0123456789", true) && success;
success = probe("a0123456", false) && success;
success = probe("0123456b", false) && success;
success = probe("0123c456", false) && success;
success = probe("0123#456", false) && success;

return success ? EXIT_SUCCESS : EXIT_FAILURE;
}
term% cc -Wall -Wextra -Werror -pedantic -std=c11 mdp.c -o mdp
term% ./mdp
term% echo $?
0
term%

Granted the test scaffolding and `#include` boilerplate makes
this appear rather longer than it would be in context, but it's
still not nearly as succinct.

- Dan C.


Date Sujet#  Auteur
30 Sep 24 * Re: Command Languages Versus Programming Languages146Bozo User
30 Sep 24 +* Re: Command Languages Versus Programming Languages5Lawrence D'Oliveiro
1 Oct 24 i`* Re: Command Languages Versus Programming Languages4usuario
2 Oct 24 i `* Re: Command Languages Versus Programming Languages3Muttley
2 Oct 24 i  `* Re: Command Languages Versus Programming Languages2usuario
2 Oct 24 i   `- Re: Command Languages Versus Programming Languages1Muttley
9 Oct 24 `* Re: Command Languages Versus Programming Languages140Rainer Weikusat
10 Oct 24  `* Re: Command Languages Versus Programming Languages139Muttley
10 Oct 24   +* Re: Command Languages Versus Programming Languages63Rainer Weikusat
10 Oct 24   i+* Re: Command Languages Versus Programming Languages52Muttley
10 Oct 24   ii+* Re: Command Languages Versus Programming Languages50Rainer Weikusat
10 Oct 24   iii+* Re: Command Languages Versus Programming Languages45Kaz Kylheku
10 Oct 24   iiii`* Re: Command Languages Versus Programming Languages44Rainer Weikusat
11 Oct 24   iiii `* Re: Command Languages Versus Programming Languages43Bart
11 Oct 24   iiii  `* Re: Command Languages Versus Programming Languages42Rainer Weikusat
11 Oct 24   iiii   `* Re: Command Languages Versus Programming Languages41Muttley
11 Oct 24   iiii    +* Re: Command Languages Versus Programming Languages28Dan Cross
11 Oct 24   iiii    i`* Re: Command Languages Versus Programming Languages27Muttley
11 Oct 24   iiii    i +* Re: Command Languages Versus Programming Languages23Dan Cross
12 Oct 24   iiii    i i`* Re: Command Languages Versus Programming Languages22Muttley
12 Oct 24   iiii    i i `* Re: Command Languages Versus Programming Languages21Dan Cross
12 Oct 24   iiii    i i  `* Re: Command Languages Versus Programming Languages20Muttley
12 Oct 24   iiii    i i   +- Re: Command Languages Versus Programming Languages1Muttley
12 Oct 24   iiii    i i   `* Re: Command Languages Versus Programming Languages18Dan Cross
13 Oct 24   iiii    i i    `* Re: Command Languages Versus Programming Languages17Muttley
13 Oct 24   iiii    i i     `* Re: Command Languages Versus Programming Languages16Dan Cross
13 Oct 24   iiii    i i      +* Re: Command Languages Versus Programming Languages10Muttley
13 Oct 24   iiii    i i      i+* Re: Command Languages Versus Programming Languages8Dan Cross
13 Oct 24   iiii    i i      ii`* Re: Command Languages Versus Programming Languages7Muttley
13 Oct 24   iiii    i i      ii +* Re: Command Languages Versus Programming Languages5Dan Cross
14 Oct 24   iiii    i i      ii i`* Re: Command Languages Versus Programming Languages4Muttley
14 Oct 24   iiii    i i      ii i `* Re: Command Languages Versus Programming Languages3Dan Cross
14 Oct 24   iiii    i i      ii i  `* Re: Command Languages Versus Programming Languages2Muttley
14 Oct 24   iiii    i i      ii i   `- Re: Command Languages Versus Programming Languages1David Brown
13 Oct 24   iiii    i i      ii `- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
13 Oct 24   iiii    i i      i`- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
13 Oct 24   iiii    i i      `* Re: Command Languages Versus Programming Languages5Dan Cross
13 Oct 24   iiii    i i       `* Re: Command Languages Versus Programming Languages4Bart
13 Oct 24   iiii    i i        `* Re: Command Languages Versus Programming Languages3Dan Cross
14 Oct 24   iiii    i i         `* Re: Command Languages Versus Programming Languages2Bart
14 Oct 24   iiii    i i          `- Re: On overly rigid definitions (was Re: Command Languages Versus Programming Languages)1Dan Cross
13 Oct 24   iiii    i `* Re: Command Languages Versus Programming Languages3Kaz Kylheku
13 Oct 24   iiii    i  +- Re: Command Languages Versus Programming Languages1Bart
13 Oct 24   iiii    i  `- Re: Command Languages Versus Programming Languages1Dan Cross
11 Oct 24   iiii    +* Re: Command Languages Versus Programming Languages2Rainer Weikusat
12 Oct 24   iiii    i`- Re: Command Languages Versus Programming Languages1Muttley
11 Oct 24   iiii    `* Re: Command Languages Versus Programming Languages10Lawrence D'Oliveiro
12 Oct 24   iiii     `* Re: Command Languages Versus Programming Languages9Muttley
12 Oct 24   iiii      +* Re: Command Languages Versus Programming Languages5Rainer Weikusat
12 Oct 24   iiii      i+* Re: Command Languages Versus Programming Languages3Christian Weisgerber
13 Oct 24   iiii      ii+- Re: Command Languages Versus Programming Languages1Muttley
13 Oct 24   iiii      ii`- Re: Command Languages Versus Programming Languages1Rainer Weikusat
12 Oct 24   iiii      i`- Re: Command Languages Versus Programming Languages1Bart
12 Oct 24   iiii      `* Re: Command Languages Versus Programming Languages3Lawrence D'Oliveiro
13 Oct 24   iiii       `* Re: Command Languages Versus Programming Languages2Muttley
13 Oct 24   iiii        `- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
11 Oct 24   iii+* Re: Command Languages Versus Programming Languages2Bart
11 Oct 24   iiii`- Re: Command Languages Versus Programming Languages1Rainer Weikusat
11 Oct 24   iii`* Re: Command Languages Versus Programming Languages2Muttley
11 Oct 24   iii `- Re: Command Languages Versus Programming Languages1Rainer Weikusat
11 Oct 24   ii`- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
12 Oct 24   i`* Re: Command Languages Versus Programming Languages10Eric Pozharski
13 Oct 24   i `* Re: Command Languages Versus Programming Languages9Muttley
13 Oct 24   i  +- Re: Command Languages Versus Programming Languages1Janis Papanagnou
13 Oct 24   i  +* Re: Command Languages Versus Programming Languages6Rainer Weikusat
14 Oct 24   i  i`* Re: Command Languages Versus Programming Languages5Muttley
14 Oct 24   i  i `* Re: Command Languages Versus Programming Languages4Rainer Weikusat
14 Oct 24   i  i  `* Re: Command Languages Versus Programming Languages3Muttley
14 Oct 24   i  i   `* Re: Command Languages Versus Programming Languages2Rainer Weikusat
14 Oct 24   i  i    `- Re: Command Languages Versus Programming Languages1Muttley
13 Oct 24   i  `- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
11 Nov 24   `* Re: Command Languages Versus Programming Languages75Sebastian
11 Nov 24    +* Re: Command Languages Versus Programming Languages11Muttley
11 Nov 24    i+* Re: Command Languages Versus Programming Languages2Wolfgang Agnes
11 Nov 24    ii`- Re: Command Languages Versus Programming Languages1Muttley
11 Nov 24    i+- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
12 Nov 24    i`* Re: Command Languages Versus Programming Languages7Janis Papanagnou
12 Nov 24    i `* Re: Command Languages Versus Programming Languages6Muttley
12 Nov 24    i  +* Re: Command Languages Versus Programming Languages4Janis Papanagnou
12 Nov 24    i  i`* Re: Command Languages Versus Programming Languages3Muttley
12 Nov 24    i  i `* Re: Command Languages Versus Programming Languages2Janis Papanagnou
12 Nov 24    i  i  `- Re: Command Languages Versus Programming Languages1Muttley
12 Nov 24    i  `- Re: Command Languages Versus Programming Languages1Wolfgang Agnes
11 Nov 24    `* Re: Command Languages Versus Programming Languages63Lawrence D'Oliveiro
12 Nov 24     +* Re: Command Languages Versus Programming Languages3Janis Papanagnou
12 Nov 24     i+- Re: Command Languages Versus Programming Languages1Wolfgang Agnes
12 Nov 24     i`- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
20 Nov 24     `* Re: Command Languages Versus Programming Languages59Randal L. Schwartz
20 Nov 24      +- Re: Command Languages Versus Programming Languages1Lawrence D'Oliveiro
20 Nov 24      `* Re: Command Languages Versus Programming Languages57Muttley
20 Nov 24       +* Re: Command Languages Versus Programming Languages44Janis Papanagnou
20 Nov 24       i+* Re: Command Languages Versus Programming Languages36Muttley
20 Nov 24       ii`* Re: Command Languages Versus Programming Languages35Janis Papanagnou
20 Nov 24       ii +* Re: Command Languages Versus Programming Languages9Muttley
20 Nov 24       ii i`* Re: Command Languages Versus Programming Languages8Rainer Weikusat
20 Nov 24       ii i +* Re: Command Languages Versus Programming Languages5John Ames
21 Nov 24       ii i i+* Re: Command Languages Versus Programming Languages2Muttley
21 Nov 24       ii i ii`- Re: Command Languages Versus Programming Languages1John Ames
21 Nov 24       ii i i`* Re: Command Languages Versus Programming Languages2Dan Cross
21 Nov 24       ii i i `- Re: Command Languages Versus Programming Languages1Muttley
21 Nov 24       ii i `* Re: Command Languages Versus Programming Languages2Muttley
20 Nov 24       ii `* Re: Command Languages Versus Programming Languages25Rainer Weikusat
21 Nov 24       i`* Re: Command Languages Versus Programming Languages7Kaz Kylheku
20 Nov 24       +* Re: Command Languages Versus Programming Languages9Ed Morton
20 Nov 24       `* Re: Command Languages Versus Programming Languages3Rainer Weikusat

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal