[fpc-devel] FPDoc improvements

Hans-Peter Diettrich DrDiettrich1 at aol.com
Sun Jan 29 17:41:38 CET 2012

Michael Van Canneyt schrieb:

> Well, you have the sources, you can look up the actual implementation.
> Then you would see that:

Please don't confuse syntax and semantics. Reading source code reveals 
only *what* is done, but not *why* it's done, and what are the consequences.

> * The fpdoc engine keeps a list of units to parse.
>   It keeps all symbols from all units it parses in a large tree.
> * The passrc parser parses 1 unit at a time. * If the parser encounters 
> a uses clause, it simply notes the dependency; no more, no less.
>   In particular: it does not start parsing the unit in the uses clause 
> if it was not yet parsed.
> * If the parser needs to look up a symbol, it searches for symbols in 
> the fpdoc list, in all the
>   units for which dependencies were noted.
>> From this it follows that the order of parsing the units matters: 
> the symbol must be there in order for the parser to find it.
> To avoid having to specify the correct order, there are now 2 possible 
> solutions:
> - We do 2 passes.
>   One to establish parsing order (it can stop after the uses clause), 
> the second to actually parse.

Lazy variation:
Stop when a used unit was not already parsed, postpone the blocked unit 
in the parse list, and move the used unit in front of it - kind of 
bubble sort.

> - We parse recursively. But only if the unit is in the input list, 
> otherwise you end up parsing all of the FPC
>   sources.

That's how FPC works, except for the input list.

Thanks for the enlightenment, now I also see the impact of the input 
list order :-)


More information about the fpc-devel mailing list