• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • Soft
        • C
          • Syntax-for-tools
          • Atc
          • Language
            • Abstract-syntax
              • Tyspecseq
              • Expr
              • Binop
              • Fileset
              • Obj-declor
                • Obj-declor-case
                • Obj-declor-fix
                • Obj-declorp
                • Obj-declor-count
                • Obj-declor-equiv
                • Obj-declor-array
                • Obj-declor-pointer
                • Obj-declor-ident
                • Obj-declor-kind
              • Ident
              • Iconst
              • Obj-adeclor
              • Const
              • Fundef
              • Unop
              • File
              • Tag-declon
              • Fun-declor
              • Obj-declon
              • Iconst-length
              • Abstract-syntax-operations
              • Label
              • Struct-declon
              • Initer
              • Ext-declon
              • Fun-adeclor
              • Expr-option
              • Iconst-base
              • Initer-option
              • Iconst-option
              • Tyspecseq-option
              • Stmt-option
              • Scspecseq
              • Param-declon
              • Obj-declon-option
              • File-option
              • Tyname
              • Transunit
              • Fun-declon
              • Transunit-result
              • Param-declon-list
              • Struct-declon-list
              • Expr-list
              • Tyspecseq-list
              • Ident-set
              • Ident-list
              • Ext-declon-list
              • Unop-list
              • Tyname-list
              • Fundef-list
              • Fun-declon-list
              • Binop-list
              • Stmt-fixtypes
              • Expr-fixtypes
            • Integer-ranges
            • Implementation-environments
            • Dynamic-semantics
            • Static-semantics
            • Grammar
            • Integer-formats
            • Types
            • Portable-ascii-identifiers
            • Values
            • Integer-operations
            • Computation-states
            • Object-designators
            • Operations
            • Errors
            • Tag-environments
            • Function-environments
            • Character-sets
            • Flexible-array-member-removal
            • Arithmetic-operations
            • Pointer-operations
            • Bytes
            • Keywords
            • Real-operations
            • Array-operations
            • Scalar-operations
            • Structure-operations
          • Representation
          • Transformation-tools
          • Insertion-sort
          • Pack
        • Bv
        • Imp-language
        • Event-macros
        • Java
        • Bitcoin
        • Ethereum
        • Yul
        • Zcash
        • ACL2-programming-language
        • Prime-fields
        • Json
        • Syntheto
        • File-io-light
        • Cryptography
        • Number-theory
        • Lists-light
        • Axe
        • Builtins
        • Solidity
        • Helpers
        • Htclient
        • Typed-lists-light
        • Arithmetic-light
      • X86isa
      • Axe
      • Execloader
    • Math
    • Testing-utilities
  • Abstract-syntax

Obj-declor

Fixtype of object declarators [C17: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. [C17] 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 [C17] 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.