Understanding the AST...

joe joe at example.com
Thu Feb 22 12:13:21 UTC 2018


On Monday, 12 February 2018 at 08:47:58 UTC, RazvanN wrote:
> Hi Joe,
>
> I suggest you watch this video which explains how the parse 
> time visitors work: https://www.youtube.com/watch?v=tK072jcoWv4 
> .
>
> On Tuesday, 6 February 2018 at 12:03:06 UTC, joe wrote:
>>[...]
>
> The FuncDeclaration node contains all the information for that.
> For example, you can access fd.parent to see if the function is
> declared at top-level (in which case, the parent is going to be 
> a module
> declaration ) or if it is a nested function (in a class, in a 
> struct, in a function).
> Every AST node contains information about the position in the 
> AST, all you
> have to do is find how to get that information: which field to 
> access or which
> member function to call.
>
>> [...]
>
> The function average length visitor inherits a transitive 
> visitor
> which means that the AST traversal logic is already implemented 
> for you.
> All you have to do is override the visiting methods of interest 
> and do
> whatever suits you : print stuff, alter the ast, stop the 
> visitation or
> continue the visitation (by calling super.visit(ASTnode)).
>
>> [...]
>
> I know that my explanations might not be very explicit, but if 
> you have an example please post it and we can work on it.
>
> Cheers,
> RazvanN

Hello RazvanN,

thank you very much for taking the time to reply and also your 
effort in making this happen.

I watched the video you linked and read your reply over and over, 
yet I still have a hard time to wrap my head around this idea.

Like for example DHTML DOM is very easy for me to grasp. It's 
like riding the car down the country road and I know where I am 
and which town I'm going to be next, etc.

This AST thing is more like a teleporter room on the Enterprise. 
Scotty activates the teleporter and a canister appears an a spot 
labeled imports. He repeats and a canister appears on a spot 
labeled functions, etc.

I will try again...


More information about the Digitalmars-d-learn mailing list