-
Notifications
You must be signed in to change notification settings - Fork 21
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
ProgramFile
contains many ProgramUnit
s, which containBlock
s, which containStatement
s, which containExpression
s.
However, as of 2022-05-11, Expression
s are mutually recursive with ProgramUnit
s. 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, Expression
s are only connected to Statement
s 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.