[cl-ppcre-devel] Re: New version 1.2.15 (Was: Patches to mix parse trees and regex string)

Frédéric Jolliton cl-ppcre-devel at frederic.jolliton.com
Mon Jul 3 14:26:51 UTC 2006


>> The first patch add a (?.<name>) syntax, where <name> designate a
>> keyword, and is case sensitive. The ?. was chosen to match the idea
>> of the #. reader macro. It includes the synonym parse tree from the
>> corresponding keyword while the regex is parsed.
>
> Thanks for this patch, but as you wrote in your email, I think this
> one is a little bit too hackish.  It also breaks compatibility with
> Perl syntax.

Ok, then I've another suggestion. Let (:REGEX <string>) take
optionally more symbols, and use place holders in <string> to insert
corresponding syntax trees. For example:

  (dpts tree1 (:regex "a{2,5}"))
  (dpts tree2 (:regex "b{1,3}"))
  (dpts tree3 (:regex "foo((?~)-bar-(?~)+)baz" tree1 tree2))

Where (?~) is the place holder. Or something else which doesn't break
compatibility with Perl syntax.

Without such a feature, the last tree would have been:

  (dpts tree3 (:sequence "foo"
                         (:register
                           (:sequence tree1
                                      "-bar-"
                                      (:greedy-repetition 1 nil tree2)))
                         "baz"))

(Where dpts = ppcre:define-parse-tree-synonym)

Is that a better alternative ?

-- 
Frédéric Jolliton



More information about the Cl-ppcre-devel mailing list