2014-09-23 15:57 GMT+02:00 Udo Schneider <udo.schnei...@homeaddress.de>:

> > Confirmed in even a better way: given how convoluted and hacky is
> > writing a full Python Parser, it is probably not even a Context Free
> > Grammar.
> Let's agree on the fact that you'll be able to parse it using Context
> Sensitive Grammar (Type 1) for sure ... and if you're very lucky Context
> Free (Type 2) might be sufficient but PITA to write and maintain. Agreed?
> :-)
>

Agreed :)

Thierry


>
> CU,
>
> Udo
>
>
>
> On 23.09.14 14:20, Thierry Goubier wrote:
>
>>
>>
>> 2014-09-23 13:57 GMT+02:00 Udo Schneider <udo.schnei...@homeaddress.de
>> <mailto:udo.schnei...@homeaddress.de>>:
>>
>>
>>     > 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.
>>     Without wanting to go too deep into theory... Parsing Pharo or
>>     Python would definitely need a Chromsky Type 2 language (Context
>>     free grammar). So you'd be out of luck parsing Smalltalk or Python
>>     code with Regular Expressions (Chromsky Type 3) only - except maybe
>>     for some very simple expressions.
>>
>>
>> Confirmed in even a better way: given how convoluted and hacky is
>> writing a full Python Parser, it is probably not even a Context Free
>> Grammar.
>>
>> That is: the Python grammar is LALR which is a subset of Context Free
>> Grammar (but already more than a type 3 Chomsky grammar), but the Lexer
>> is a fair bit more than usual (dedent tokens come to mind; special
>> handling of end of lines as well).
>>
>> I think you need a fair bit of special magic in PetitParser to parse
>> Python.
>>
>> Luckily, Python is well documented in that regard.
>>
>> Thierry
>>
>>
>>     CU,
>>
>>     Udo
>>
>>
>>     On 23.09.14 13:35, kilon alios wrote:
>>
>>         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.
>>
>>         On Tue, Sep 23, 2014 at 1:10 PM, Udo Schneider
>>         <udo.schnei...@homeaddress.de
>>         <mailto:udo.schnei...@homeaddress.de>
>>         <mailto:udo.schneider@__homeaddress.de
>>         <mailto: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>
>>                  <mailto:udo.schneider@__homeaddress.de
>>         <mailto:udo.schnei...@homeaddress.de>>
>>                  <mailto:udo.schneider@
>>         <mailto:udo.schneider@>__homead__dress.de <http://homeaddress.de>
>>                  <mailto:udo.schneider@__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>>
>>                           <mailto:udo.schneider@
>>         <mailto:udo.schneider@>__homead__dress.de <http://homeaddress.de>
>>                  <mailto:udo.schneider@__homeaddress.de
>>         <mailto:udo.schnei...@homeaddress.de>>>
>>                           <mailto:udo.schneider@ <mailto:udo.schneider@>
>>                  <mailto:udo.schneider@
>>         <mailto:udo.schneider@>>__homea__d__dress.de
>>         <http://homead__dress.de> <http://homeaddress.de>
>>
>>
>>
>>                           <mailto:udo.schneider@
>>         <mailto:udo.schneider@>__homead__dress.de <http://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>>
>>                           <mailto:udo.schneider@
>>         <mailto:udo.schneider@>__homead__dress.de <http://homeaddress.de>
>>                  <mailto:udo.schneider@__homeaddress.de
>>         <mailto:udo.schnei...@homeaddress.de>>>
>>                                    <mailto:udo.schneider@
>>         <mailto:udo.schneider@>
>>                  <mailto:udo.schneider@
>>         <mailto:udo.schneider@>>__homea__d__dress.de
>>         <http://homead__dress.de> <http://homeaddress.de>
>>                           <mailto:udo.schneider@
>>         <mailto:udo.schneider@>__homead__dress.de <http://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://blo____gspot.de/2014/09/block-______translators-
>> parsing-magic.html>
>>
>>         <http://blo__gspot.de/2014/09/__block-____translators-
>> parsing-__magic.html
>>         <http://blo__gspot.de/2014/09/block-____translators-parsing-
>> magic.html>>
>>
>>
>>         <http://blogspot.de/2014/09/____block-__translators-parsing-
>> ____magic.html
>>         <http://blogspot.de/2014/09/__block-__translators-parsing-__
>> magic.html>
>>
>>         <http://blogspot.de/2014/09/__block-__translators-parsing-__
>> magic.html
>>         <http://blogspot.de/2014/09/block-__translators-parsing-
>> magic.html>>>
>>
>>
>>
>>         <http://readthesourceluke.__bl____ogspot.de/2014/09/block-__
>> ____translators-parsing-magic.html
>>         <http://bl__ogspot.de/2014/09/block-____translators-parsing-
>> magic.html>
>>
>>         <http://blogspot.de/2014/09/__block-__translators-parsing-__
>> magic.html
>>         <http://blogspot.de/2014/09/block-__translators-parsing-
>> magic.html>>
>>
>>
>>         <http://readthesourceluke.__bl__ogspot.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