>> One caveat though: regular expressions are very powerful, but (since a
>> lot of Perlish style (PCRE) in the form of cryptic letters at certain
>> positions meaning something specific, shines through) hard to learn and
>> hard to keep the acquired knowledge, if one does not use them for a
>> longer time. Being confronted with people who are beginners in learning
>> a programming language, regular "regular expressions" are something
>> almost unbearable for them. So one idea would be to try to come up with
>> some "Rexxish" notation for the regex in addition to the "pure" one,
>> which will be a boon for the regex-experts. E.g. coming up with an
>> encoding for the regex patterns that make it instantenous clear that a
>> pattern is greedy, lazy/reluctant or possessive, or all the
>> non-capturing lookaround  "(?" patterns and the like. The Rexxish
>> version should be as self-describable as possible (such that one does
>> not need to look-up the regex documentation to learn what the meaning of
>> an expression would be in effect).
>>
>> The goal would be that Rexx programmers who have never dealt with regex
>> the power of your implementation may become easily tangible. And of
>> course, all ideas would be helpful that would allow to define a Rexxish
>> interface to this powerful regex package.
>>     
> The package was designed with this possibility in mind.  Unlike the
> Java versions, I've maintained a clean separation between the Pattern
> class and the .RegexCompiler class.  Any number of compilers can be
> written to provide integration, and even the Pattern engine can be
> extended by writing addtional MatchNode subclasses.  All it takes is
> for somebody to define such an expression language and write a
> compiler for that.  I'm not prepared to do such a think.  When I first
> came up with the idea of doing this, I challenged Chip to come up with
> a language, but I've seen no action on that front.  One problem with
> trying to do something like that is the language tends to become very
> "wordy".  For example, that URL example above in a less terse syntax
> would be several times the size.  On the other hand, with reusable
> pieces, that example becomes easier to understand because you pattern
> starts to read more like a BNF description.  Indeed, you could
> probably write a compiler that could build pattern matches from a BNF
> grammer description.
>   
How about challenging the entire Rexx community, asking Chip and Gil to
come up with initial sketches, ideas and others joining (I for one would
love to try to help develop such an expression language; in any case I
would be able to conduct informal experiments with any expression
language ideas with some of my students to see which parts are easy
comprehensible and which are not) ?
:)

Maybe it becomes possible to then define the url example by first
defining the constituent parts giving them names and then using those
names to build the entire url. Even though this might be much wordier it
may also be much more ledgible/comprehensible (and then even allowing to
parse an url into all of its constituent parts with one parse statement).


>> P.S.: One feature that would be also nice is being able to redefine
>> predefined character classes (and maybe named patterns), like being able
>> to redefine "\w" and the like (this would allow to use "\w" to e.g.
>> match a Rexx word or a German word and the like). That's would is partly
>> possible in the vim syntax highlighting definition file (which is based
>> on regex, but one is able to redefine the fundamental regex).
>>     
> Ok, I just checked in a change to allow that.  This is done by
> defining /w, /d, and /s to use the appropriate registered class family
> in the compiler (Word, Digit, and Space, respectively).  You can
> define this to be anything you want by registering a new class family
> in your compiler instance.
>   
That's just *great*!

---rony


------------------------------------------------------------------------------

_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to