<div dir="auto"><div><div class="gmail_quote"><div dir="ltr">Ryan Joseph <<a href="mailto:ryan@thealchemistguild.com">ryan@thealchemistguild.com</a>> schrieb am Mi., 18. Juli 2018, 01:27:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
> On Jul 15, 2018, at 11:01 PM, J. Gareth Moreton <<a href="mailto:gareth@moreton-family.com" target="_blank" rel="noreferrer">gareth@moreton-family.com</a>> wrote:<br>
> <br>
> So far I'm mostly researching how the node builder works, specifically how inline<br>
> functions are handled, since that's a situation where a 'call' node is<br>
> effectively replaced, and I intend to builda similar system to handle pure functions.<br>
<br>
I’ve looked at the FPC sources recently but I still don’t understand the basics. I see lots of TDef,TSym,TSymTable classes. What are those used for? You mentioned nodes and I wonder if that’s what those are.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Symbols are the named variables, types, functions, etc. of a module. </div><div dir="auto">Definitions are their type. Two different symbols can point to the same type, e.g. when using a type alias or simply when declaring two variables of the same type. </div><div dir="auto">Symbol tables are exactly what it says on the tin: a table of symbols. They're either the fields of a class/record, local variables of a routine, the parameters of a routine or symbols declared in the interface or implementation part of a unit. </div><div dir="auto">Nodes are essentially FPC's abstract syntax tree. They represent operations (e.g. load symbol X, add symbols Y and Z, access symbol V using symbol I as index, etc.). These nodes are then converted by the code generator to machine code. Or are also stored as is in the PPU for inline functions, so that the compiler does not need to reparse the source (which might not be available after all). </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>