a "parse tree" is not equal to an "ast"(abstract syntax tree)
but its difficult to find a name for an ast that is not cached.
maybe
parsedAst
parseAst
....


On Wed, May 2, 2018 at 3:28 PM, Richard Sargent <
richard.sarg...@gemtalksystems.com> wrote:

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


-- 
Bernardo E.C.

Sent from a cheap desktop computer in South America.

Reply via email to