123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #-----------------------------------------------------------------
- # pycparser: _c_ast.cfg
- #
- # Defines the AST Node classes used in pycparser.
- #
- # Each entry is a Node sub-class name, listing the attributes
- # and child nodes of the class:
- # <name>* - a child node
- # <name>** - a sequence of child nodes
- # <name> - an attribute
- #
- # Eli Bendersky [https://eli.thegreenplace.net/]
- # License: BSD
- #-----------------------------------------------------------------
- # ArrayDecl is a nested declaration of an array with the given type.
- # dim: the dimension (for example, constant 42)
- # dim_quals: list of dimension qualifiers, to support C99's allowing 'const'
- # and 'static' within the array dimension in function declarations.
- ArrayDecl: [type*, dim*, dim_quals]
- ArrayRef: [name*, subscript*]
- # op: =, +=, /= etc.
- #
- Assignment: [op, lvalue*, rvalue*]
- Alignas: [alignment*]
- BinaryOp: [op, left*, right*]
- Break: []
- Case: [expr*, stmts**]
- Cast: [to_type*, expr*]
- # Compound statement in C99 is a list of block items (declarations or
- # statements).
- #
- Compound: [block_items**]
- # Compound literal (anonymous aggregate) for C99.
- # (type-name) {initializer_list}
- # type: the typename
- # init: InitList for the initializer list
- #
- CompoundLiteral: [type*, init*]
- # type: int, char, float, string, etc.
- #
- Constant: [type, value]
- Continue: []
- # name: the variable being declared
- # quals: list of qualifiers (const, volatile)
- # funcspec: list function specifiers (i.e. inline in C99)
- # storage: list of storage specifiers (extern, register, etc.)
- # type: declaration type (probably nested with all the modifiers)
- # init: initialization value, or None
- # bitsize: bit field size, or None
- #
- Decl: [name, quals, align, storage, funcspec, type*, init*, bitsize*]
- DeclList: [decls**]
- Default: [stmts**]
- DoWhile: [cond*, stmt*]
- # Represents the ellipsis (...) parameter in a function
- # declaration
- #
- EllipsisParam: []
- # An empty statement (a semicolon ';' on its own)
- #
- EmptyStatement: []
- # Enumeration type specifier
- # name: an optional ID
- # values: an EnumeratorList
- #
- Enum: [name, values*]
- # A name/value pair for enumeration values
- #
- Enumerator: [name, value*]
- # A list of enumerators
- #
- EnumeratorList: [enumerators**]
- # A list of expressions separated by the comma operator.
- #
- ExprList: [exprs**]
- # This is the top of the AST, representing a single C file (a
- # translation unit in K&R jargon). It contains a list of
- # "external-declaration"s, which is either declarations (Decl),
- # Typedef or function definitions (FuncDef).
- #
- FileAST: [ext**]
- # for (init; cond; next) stmt
- #
- For: [init*, cond*, next*, stmt*]
- # name: Id
- # args: ExprList
- #
- FuncCall: [name*, args*]
- # type <decl>(args)
- #
- FuncDecl: [args*, type*]
- # Function definition: a declarator for the function name and
- # a body, which is a compound statement.
- # There's an optional list of parameter declarations for old
- # K&R-style definitions
- #
- FuncDef: [decl*, param_decls**, body*]
- Goto: [name]
- ID: [name]
- # Holder for types that are a simple identifier (e.g. the built
- # ins void, char etc. and typedef-defined types)
- #
- IdentifierType: [names]
- If: [cond*, iftrue*, iffalse*]
- # An initialization list used for compound literals.
- #
- InitList: [exprs**]
- Label: [name, stmt*]
- # A named initializer for C99.
- # The name of a NamedInitializer is a sequence of Nodes, because
- # names can be hierarchical and contain constant expressions.
- #
- NamedInitializer: [name**, expr*]
- # a list of comma separated function parameter declarations
- #
- ParamList: [params**]
- PtrDecl: [quals, type*]
- Return: [expr*]
- StaticAssert: [cond*, message*]
- # name: struct tag name
- # decls: declaration of members
- #
- Struct: [name, decls**]
- # type: . or ->
- # name.field or name->field
- #
- StructRef: [name*, type, field*]
- Switch: [cond*, stmt*]
- # cond ? iftrue : iffalse
- #
- TernaryOp: [cond*, iftrue*, iffalse*]
- # A base type declaration
- #
- TypeDecl: [declname, quals, align, type*]
- # A typedef declaration.
- # Very similar to Decl, but without some attributes
- #
- Typedef: [name, quals, storage, type*]
- Typename: [name, quals, align, type*]
- UnaryOp: [op, expr*]
- # name: union tag name
- # decls: declaration of members
- #
- Union: [name, decls**]
- While: [cond*, stmt*]
- Pragma: [string]
|