-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Labels
Status: Discussionarea:astRelated to Fortran AST representation.Related to Fortran AST representation.
Description
The Fortran syntax representation we use is highly mutually recursive. To summarise the core types:
- a
ProgramFilecontains many ProgramUnits, which containBlocks, which containStatements, which containExpressions.
However, as of 2022-05-11, Expressions are mutually recursive with ProgramUnits. This can introduce surprises, and makes instance derivation awkward. In particular, generic derivation likely won't work unless every type up to ProgramUnit also has an instance derived.
It would be more sensible to limit the two-way recursion where possible. Note there might be some unexpected behaviour by doing so. For example, Expressions are only connected to Statements through one constructor -- altering a data type stored in there removes the mutual recursion, but caused issues with block/flow analysis #221 .
Metadata
Metadata
Assignees
Labels
Status: Discussionarea:astRelated to Fortran AST representation.Related to Fortran AST representation.