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
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>

Reply via email to