2014-09-23 13:35 GMT+02:00 kilon alios <kilon.al...@gmail.com>: > yeap noway I compare Regex with PettitParser. I will probably give a > PettitParser a try, because I try to parse Pharo syntax to Python, I want > now to parse Pharo classes to python class and that will be a nightmare > with regex, so time to give PettitParser a serious try. >
Kilon, just remember that you have a full Smalltalk parser already in your image, called RBParser. For Python parsing, there is probably a PetitParser based parser somewhere and two implementations of a SmaCC-based Python parser (For Python 2.7.X). Thierry > > On Tue, Sep 23, 2014 at 1:10 PM, Udo Schneider < > udo.schnei...@homeaddress.de> wrote: > >> > I have not used PettitParser yet, looks powerful but I find it a bit >> > weird in design. On the other hand regex is quite ugly and understanding >> > complex regex a pain. >> I normally encounter two issues with RegExps: >> >> 1) The syntax between different apps/libs/frameworks differs sligtly. >> Esp. for character classes or greediness. This drove me crazy more than one >> time. >> 2) Often enough I realize (while developing the RegExp) that I need >> something more capable than a Chomsky Type 3 parser (which RegExps are in a >> way). So I have to use "a bigger gun" - e.g. PetitParser. >> >> CU, >> >> Udo >> >> >> On 23.09.14 10:15, kilon alios wrote: >> >>> it reminds a lot of Kent's Beck Smalltalk Practice Patterns where it >>> removes all ifs and replaces them with regular unary messages . It is >>> definitely an elegant way of coding making the code just flow. >>> >>> I have not used PettitParser yet, looks powerful but I find it a bit >>> weird in design. On the other hand regex is quite ugly and understanding >>> complex regex a pain. >>> >>> On Tue, Sep 23, 2014 at 11:07 AM, Udo Schneider >>> <udo.schnei...@homeaddress.de >>> <mailto:udo.schnei...@homeaddress.de>> wrote: >>> >>> > just as it is black magic for me now :D >>> The nice thing about this approach is the fact that it "just" >>> piggybacks the normal Smalltalk message sending. So you can step >>> through it using the Debugger - it's Smalltalk all the way down. >>> >>> I still remember my first shock when (having no formal background on >>> parsing theory at that time) I saw the parsing tables generated by >>> T-Gen. Of course it was Smalltalk ... but understanding those tables >>> was a nightmare. >>> >>> PetitParser is the gold standard here IMHO. It is able to parse >>> arbitrary input (compared to my block expressions only). And you can >>> still use the Debugger to step through the parsing process *and >>> still understand what's going on!* >>> >>> CU, >>> >>> Udo >>> >>> On 23.09.14 09:54, kilon alios wrote: >>> >>> just as it is black magic for me now :D >>> >>> At least I get the general feeling. I am new to parsing too, so >>> far I >>> have only played with regex parsing. Not the most smalltalkish >>> way but >>> it works well so far. >>> >>> On Tue, Sep 23, 2014 at 9:39 AM, Udo Schneider >>> <udo.schnei...@homeaddress.de >>> <mailto:udo.schnei...@homeaddress.de> >>> <mailto:udo.schneider@__homeaddress.de >>> >>> <mailto:udo.schnei...@homeaddress.de>>> >>> wrote: >>> >>> Hi Estaban, >>> >>> I think the first time I saw this pattern was in ReStore on >>> Dolphin >>> Smalltalk. I didn't understand it's implementation back >>> then. I >>> assume that it's similar to what I described though. But >>> having a >>> Smalltalk block automagically creating the equivalent SQL >>> SELECT >>> expression was like black magic at that time :-) >>> >>> CU, >>> >>> Udo >>> >>> >>> >>> >>> On 23.09.14 04:15, Esteban A. Maringolo wrote: >>> >>> Excellent article. >>> >>> I think GLORP uses a similar technique to setup its >>> expressions, and >>> also have issues with #and:/#or: selectors due to >>> inlining, so >>> it uses >>> AND:/#OR: instead. >>> >>> Regards! >>> >>> Esteban A. Maringolo >>> >>> pd: Your blog and it's choosen topic made me remember >>> http://use-the-index-luke.com/ >>> >>> 2014-09-22 20:48 GMT-03:00 Udo Schneider >>> <udo.schnei...@homeaddress.de >>> <mailto:udo.schnei...@homeaddress.de> >>> <mailto:udo.schneider@__homeaddress.de >>> <mailto:udo.schnei...@homeaddress.de>>>__: >>> >>> >>> All, >>> >>> I just finished a blog entry. It shows how to use >>> Smalltalk >>> blocks as parsers/translators. E.g. translating a >>> Block >>> >>> [:customer | (customer joinDate year is: >>> Date >>> today year)] >>> >>> into an SQL-like String >>> >>> (YEAR(customers.joinDate) = 2014) >>> >>> The SQL stuff is just an example - you can create >>> nearly any >>> output. >>> >>> Check out >>> http://readthesourceluke.__blo__gspot.de/2014/09/block-____ >>> translators-parsing-magic.html >>> <http://blogspot.de/2014/09/block-__translators-parsing- >>> magic.html> >>> >>> <http://readthesourceluke.__blogspot.de/2014/09/block-__ >>> translators-parsing-magic.html >>> <http://readthesourceluke.blogspot.de/2014/09/block- >>> translators-parsing-magic.html>__> >>> >>> Maybe that's old stuff for some of you - but I hope >>> it's >>> interesting for some at least :-) >>> >>> Comments and feedback appreciated. >>> >>> CU, >>> >>> Udo >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >> >> >> >