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
(it just has declarators, for objects and other things),
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 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.