On Wed, May 2, 2018 at 11:06 AM, Denis Kudriashov <dionisi...@gmail.com>
wrote:

> Hi.
>
> Maybe #parseSourceCode would be better name for #parseTree.
>

I've always found it good advice to avoid using a verb phrase to name
something which does not entail some kind of action.
#parseSourceCode realy reads like something which would parse the source
code. #parseTree also has that effect, except for the lack of a tree to
parse.



>
> 2018-05-02 16:33 GMT+03:00 Marcus Denker <marcus.den...@inria.fr>:
>
>>
>>
>> > On 27 Apr 2018, at 21:36, Sean P. DeNigris <s...@clipperadams.com>
>> wrote:
>> >
>> > Marcus Denker-4 wrote
>> >> I will add comments…
>> >
>> > I got confused by this again and created an issue:
>> > https://pharo.manuscript.com/f/cases/21806/Document-Differen
>> ce-between-ast-and-parseTree
>> >
>> > And then Peter Uhnak reminded me on Discord about this thread. I'm
>> happy to
>> > add the comments, but not sure I understand the issue well enough. IIUC
>> #ast
>> > is cached, but #parseTree is not. What I don't understand is the
>> purpose of
>> > this difference and when one would use one over the other.
>>
>> the cached #ast is for one interesting for speed (that is, in situations
>> where you ask for it often).
>>
>> The other use-case is if you want to annotate the AST and keep that
>> annotation around (till the next
>> image save, but you can subscribe to ASTCacheReset and re-install the AST
>> in the cache after cleaning.
>> (This is used by MetaLinks to make sure they survive image restart).
>>
>> The last thing that it provides is that we do have a quite powerful
>> mapping between bytecode/text/context
>> and the AST. Regardless how you navigate, you get the same object.
>>
>> e.g. even this one works:
>>
>>         [ 1+2 ] sourceNode == thisContext method ast blockNodes first
>>
>> > For example,
>> > when, if ever, would a user want to access a CM's #ast (as opposed to
>> > #parseTree) and could modifying it create problems?
>> >
>>
>> Modification is a problem, yes.. code that wants to modify the AST
>> without making sure the compiledMethod is in sync later
>> should use #parseTree.
>>
>> Code that does not modify the AST (or makes sure to compile it after
>> modification) is free to use #ast.
>> or if you want to annotate the AST (which is a modification, after all).
>>
>> This is not perfect (not at all…) but the simplest solution to get (to
>> some extend) what you would have if the system would have
>> a real persistent, first class AST…
>>
>> To be improved. The ASTCache with it’s naive “lets just cache everything
>> till the next image save” was done with the idea to see
>> when it would show that it is too naive… for that it worked amazingly
>> well till now.
>>
>>         Marcus
>>
>
>

Reply via email to