Prev: Anybody mind to translate this Felleisen quote from German to English
Next: Macros and anonymous functions
From: Tim Bradshaw on 1 Mar 2010 10:32 On 2010-03-01 14:53:54 +0000, ccc31807 said: > I'd like to offer some perspective to this, without insulting or > casting aspersions. You'll probably find that many CLL people understand regular expressions fairly well... > However, density in and of > itself is no reason to object to a language, any more than verbosity. I think it probably is, actually. I'm guessing (though I don't have any evidence to hand) that there are quite strong arguments that languages which are both too dense and too sparse are hard to deal with by huans.
From: ccc31807 on 1 Mar 2010 11:37 On Mar 1, 10:32 am, Tim Bradshaw <t...(a)tfeb.org> wrote: > I think it probably is, actually. I'm guessing (though I don't have > any evidence to hand) that there are quite strong arguments that > languages which are both too dense and too sparse are hard to deal with > by huans. And maybe by humans as well. ;-)
From: Ron Garret on 1 Mar 2010 12:14 In article <3bb8c3f7-ba67-4944-b236-e998684adb56(a)g19g2000yqe.googlegroups.com>, ccc31807 <cartercc(a)gmail.com> wrote: > On Feb 27, 3:08 pm, Ron Garret <rNOSPA...(a)flownet.com> wrote: > > It boggles my mind that the same people who > > complain about the aesthetics (or lack thereof) of parens in > > S-expressions will accept something like this: > > > > (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\ > > x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e > > -\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]* > > [a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]| > > 2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e > > -\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) .... > I read through the RE example above, and it would take a bit of time > to figure out exactly what it did It detects valid email addresses. I got it from this page: http://regexlib.com/DisplayPatterns.aspx But I could have used this: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html Here's the equivalent CL-PPCRE parse-tree representation of the shorter version: (:SEQUENCE (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9) #\! #\# #\$ #\% #\& #\' #\* #\+ #\/ #\= #\? #\^ #\_ #\` #\{ #\| #\} #\~ #\-)) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 1 NIL (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9) #\! #\# #\$ #\% #\& #\' #\* #\+ #\/ #\= #\? #\^ #\_ #\` #\{ #\| #\} #\~ #\-)))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:CHAR-CLASS (:RANGE #\^A #\Backspace) #\PageUp #\Page (:RANGE #\^N #\Us) #\! (:RANGE #\# #\[) (:RANGE #\] #\Rubout)) (:SEQUENCE #\\ (:CHAR-CLASS (:RANGE #\^A #\Tab) #\PageUp #\Page (:RANGE #\^N #\Rubout)))))) #\"))) #\@ (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9)) (:GREEDY-REPETITION 0 1 (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9) #\-)) (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9))))) #\.))) (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9)) (:GREEDY-REPETITION 0 1 (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9) #\-)) (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9)))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 3 3 (:GROUP (:SEQUENCE (:GROUP (:ALTERNATION (:SEQUENCE "25" (:CHAR-CLASS (:RANGE #\0 #\5))) (:SEQUENCE #\2 (:CHAR-CLASS (:RANGE #\0 #\4)) (:CHAR-CLASS (:RANGE #\0 #\9))) (:SEQUENCE (:GREEDY-REPETITION 0 1 (:CHAR-CLASS #\0 #\1)) (:CHAR-CLASS (:RANGE #\0 #\9)) (:GREEDY-REPETITION 0 1 (:CHAR-CLASS (:RANGE #\0 #\9)))))) #\.))) (:GROUP (:ALTERNATION (:SEQUENCE "25" (:CHAR-CLASS (:RANGE #\0 #\5))) (:SEQUENCE #\2 (:CHAR-CLASS (:RANGE #\0 #\4)) (:CHAR-CLASS (:RANGE #\0 #\9))) (:SEQUENCE (:GREEDY-REPETITION 0 1 (:CHAR-CLASS #\0 #\1)) (:CHAR-CLASS (:RANGE #\0 #\9)) (:GREEDY-REPETITION 0 1 (:CHAR-CLASS (:RANGE #\0 #\9)))) (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9) #\-)) (:CHAR-CLASS (:RANGE #\a #\z) (:RANGE #\0 #\9)) #\: (:GREEDY-REPETITION 1 NIL (:GROUP (:ALTERNATION (:CHAR-CLASS (:RANGE #\^A #\Backspace) #\PageUp #\Page (:RANGE #\^N #\Us) (:RANGE #\! #\Z) (:RANGE #\S #\Rubout)) (:SEQUENCE #\\ (:CHAR-CLASS (:RANGE #\^A #\Tab) #\PageUp #\Page (:RANGE #\^N #\Rubout))))))))) #\])))) Which one would you rather try to debug? rg --- Just for the record, here's the parse tree for the long monster regexp: (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:GROUP (:ALTERNATION (:SEQUENCE (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\@ (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))))))) (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))) #\< (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GREEDY-REPETITION 0 1 (:GROUP (:SEQUENCE #\@ (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE ",@" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))))))))) #\: (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\@ (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\> (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))) #\: (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GREEDY-REPETITION 0 1 (:GROUP (:SEQUENCE (:GROUP (:ALTERNATION (:SEQUENCE (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\@ (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))))))) (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))) #\< (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GREEDY-REPETITION 0 1 (:GROUP (:SEQUENCE #\@ (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE ",@" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))))))))) #\: (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\@ (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\> (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\, (:GREEDY-REPETITION 0 NIL :WHITESPACE-CHAR-CLASS) (:GROUP (:ALTERNATION (:SEQUENCE (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\@ (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))))))) (:SEQUENCE (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))) #\< (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GREEDY-REPETITION 0 1 (:GROUP (:SEQUENCE #\@ (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE ",@" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))))))))) #\: (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE #\. (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:ALTERNATION (:INVERTED-CHAR-CLASS #\" #\Return #\\) (:SEQUENCE #\\ :EVERYTHING) (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))) #\" (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))))))))) #\@ (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) (:GROUP (:ALTERNATION (:SEQUENCE (:GREEDY-REPETITION 1 NIL (:INVERTED-CHAR-CLASS #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\] #\ (:RANGE #\Null #\^Y))) (:GROUP (:ALTERNATION (:GREEDY-REPETITION 1 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab)))) :MODELESS-END-ANCHOR (:POSITIVE-LOOKAHEAD (:CHAR-CLASS #\[ #\" #\( #\) #\< #\> #\@ #\, #\; #\: #\\ #\" #\. #\[ #\]))))) (:SEQUENCE #\[ (:GREEDY-REPETITION 0 NIL (:REGISTER (:ALTERNATION (:INVERTED-CHAR-CLASS #\[ #\] #\Return #\\) (:SEQUENCE #\\ :EVERYTHING)))) #\] (:GREEDY-REPETITION 0 NIL (:GROUP (:SEQUENCE (:GREEDY-REPETITION 0 1 (:GROUP " ")) (:CHAR-CLASS #\ #\Tab))))))) (
From: Slobodan Blazeski on 1 Mar 2010 12:44 On Feb 25, 7:47 pm, piscesboy <oraclmas...(a)gmail.com> wrote: > On Feb 25, 11:45 am, ccc31807 <carte...(a)gmail.com> wrote: > > > > > On Feb 25, 11:34 am, Zach Beane <x...(a)xach.com> wrote: > > > > > I make my living as a Perl programmer, munging data. Perl doesn't have > > > > an interactive environment like the Lisp REPL. However, the cycle of > > > > writing, testing, and running code is almost identical. > > > > Not in my experience. > > > Maybe that's a function of working habits rather than languages or > > programming environments. I have developed a habit of write-switch- > > run, and this is true with Perl, C, Java, and Lisp (although Java is > > different in that I customarily write test cases for classes before I > > write the class so I am not strictly running the code directly.) > > > > I sometimes see Perl environments corrupted by unexpected PATH or > > > PERLLIB environment variables, leading to running an unexpected version > > > of Perl or an unexpected version of a module. > > > I have been fortunate to control every machine that I have developed > > on, so I've never had this particular problem, but with Java, yes, you > > have to fiddle with the environment, e.g., CLASSPATH. > > > CC. > > Tangentially on the OP, > > Since I am learning Lisp and CLOS in particular, what would be the > best, most direct route to doing so? The least painful method? Also > the cheapest method? One that doesn't involve enrolling in school or > taking classes? > > There's lots of resources out there in the form of online tutorials, > code examples, etc for learning CLOS syntax, etc, but is there some > simple resource available that conveniently catalogs functions and > classes, their parameters, their uses, which packages they belong to > etc...? > > I've been programming in Lisp for several months now, in depth, and I > still have a hard time tracking down function names, class names, > etc...through apropos, describe, and the various other documentation > functions built into the REPL (I currently have clisp and ccl > installed along with SLIME), and it is a real pain to track down > functions that often have incomplete or sparse documentation if it > exists. > > Often, it is through simple trial and error that I find functions for > which I spent the last few hair pulling days that already exist in the > existing Lisp packages, negating a lot of my work moot. It would be > nice if the documenation and usage of all functions and classes in the > standard user package and CLOS were documented mainly so I don't waste > time writing something that already exists in a package. > > Forgive me if this is already the case, and if it is then point me in > that direction. Nick Levine Fundamentals of CLOS is a good tutorial http://www.ravenbrook.com/doc/2003/07/15/clos-fundamentals/ but you won't need much CLOS anyway. Unless your name is Pascal Constanza of course. Bobi
From: Giovanni Gigante on 1 Mar 2010 13:03
> Which one would you rather try to debug? None!!! Anyway, I don't understand what you're trying to prove. It is certainly possible to write a regexp compiler that transform some kind of wordy array-and-hashrefs perl structure into a regexp, but the fact that no one uses such a tool (and not just in Perl) seem to indicate that the traditional form of the unix regexp, which perl extends, is probably a good compromise for most of the cases [1]. The RFC-822 case certainly is not a typical example. But if the real point is that regexp are "Not Lispy Enough", then of course I wholeheartedly agree. :-) [1] A fact that probably supports Erik's point, btw. |