Obj-declor
Fixtype of object declarators [C:6.7.6].
This is a tagged union type, introduced by fty::deftagsum.
Member Tags → Types
- :ident → obj-declor-ident
- :pointer → obj-declor-pointer
- :array → obj-declor-array
These are declarators for objects.
[C] does not have a separate syntactic category for them,
but in our abstract syntax for now
we differentiate them from other kinds of declarators.
For now we only capture three kinds of object declarators:
(i) a direct declarator consisting of a single identifier;
(ii) a pointer declarator consisting of
the pointer notation *
and (recursively) an object declarator; and
(iii) an array (direct) declarator consisting of
an object declarator (recursively)
and the array notation [] with
either nothing in it (i.e. unspecified size)
or an integer constant in it (i.e. specified size).
Using an integer constant as size is less general than [C] allows,
but it suffices for now.
Note that we can represent sequences of pointer notations * ... *
by nesting the :pointer constructor.
Note also that a direct declarator may be a (parenthesized) declarator,
but in our abstract syntax we just have declarators,
which we can nest under the :array constructor,
so we do not need to represent parentheses explicitly.
Subtopics
- Obj-declor-case
- Case macro for the different kinds of obj-declor structures.
- Obj-declor-fix
- Fixing function for obj-declor structures.
- Obj-declorp
- Recognizer for obj-declor structures.
- Obj-declor-count
- Measure for recurring over obj-declor structures.
- Obj-declor-equiv
- Basic equivalence relation for obj-declor structures.
- Obj-declor-array
- Obj-declor-pointer
- Obj-declor-ident
- Obj-declor-kind
- Get the kind (tag) of a obj-declor structure.