Sym:
"Flex" and "Bison" are used to compile the DDS format and mapping definitions.
Go to Compiler Discussions and
Symbol Tables for detailed
discussions on the compiler and the generated Symbol Tables.
Structures: defined in dds_symbol.h
DDS_SYM - Generic symbol Table item
DDS_TYPE - Type descriptor (DDS_SYM_TYPE)
DDS_OBJECT - Object storage descriptor
DDS_MEMBER - Struct or Unions field descriptor
DDS_EXPR - Generic expression descriptor (DDS_SYM_EXPR)
DDS_EARG - Expression argument descriptor
DDS_EXPR1 - Expression descriptor for single argument (DDS_SYM_EXPR)
DDS_EXPR2 - Expression descriptor for two arguments (DDS_SYM_EXPR)
DDS_EXPR3 - Expression descriptor for three arguments (DDS_SYM_EXPR)
DDS_EXPR4 - Expression descriptor for four arguments (DDS_SYM_EXPR)
DDS_EXPRA - Assignment expression descriptor (DDS_SYM_EXPR)
DDS_EXPRC - Copy op expression descriptor (DDS_SYM_EXPR)
DDS_VALUE - Expression descriptor (DDS_SYM_EXPR)
DDS_CONDITION - Conditional op expression descriptor
DDS_BLOCK - Block descriptor, begins unique name space (DDS_SYM_BLOCK)
DDS_DECLARE - Parser temporaries for nested declarations
DDS_LABEL - Label descriptor (DDS_SYM_LABEL)
DDS_RELOC - Relocation descriptor for pointers within symbol tables
DDS_OPNOTE - Opcode annotation descriptor
DDS_DUMP_ITEM - Field descriptor in tabular dump list descriptor
DDS_LEX_START - Les start state cjamges
DDS_SCANNER - Scanner input stack (analogous to nested "#includes")
Structures: defined in dds_ptype.h
DDS_PRIME - Prime attributes (one for each DDS_PTYPE)
DDS_PRIME_GENUS - type genus "prime" attributes (one for each DDS_TYPE_GENUS)
Globals:
DDS_SYM *dds_push_sym; /* Temporary for PUSH_SYM & PUSH_VALUE macro */
DDS_DECLARE *dds_declare; /* Current declaration scope */
DDS_OPNOTE *dds_opnote; /* Opcode descriptor table */
DDS_TABLE dds_keyword; /* Parser keyword hash table */
DDS_TABLE *dds_symbol; /* Ptr to active symbol table. */
DDS_BLOCK *dds_block; /* Ptr to current block in active symbol tbl */
DDS_EXPR *dds_needle; /* Ptr to first expression to evaluate. */
DDS_EXPR *dds_thread; /* Ptr to lst expression to evaluate. */
DDS_BLOCK *dds_prime_block; /* Prime block for in symbol table */
DDS_BLOCK *dds_error_block; /* Error recovery entries in prime symbol tbl */
DDS_TYPE *dds_error_type; /* Error recovery entries in prime symbol tbl */
DDS_MEMBER *dds_error_member; /* Error recovery entries in prime symbol tbl */
DDS_VALUE *dds_error_value; /* Error recovery entries in prime symbol tbl */
DDS_OBJECT *dds_error_object; /* Error recovery entries in prime symbol tbl */
DDS_EXPR *dds_error_expr; /* Error recovery entries in prime symbol tbl */
DDS_EXPR *dds_error_thread; /* Error recovery entries in prime symbol tbl */
DDS_SCANNER *dds_lexer; /* Handle into scanner state */
DDS_SCANNER dds_lexer_root; /* Handle into scanner state */
DDS_LEX_START dds_lex_ss; /* Lex start state */
DDS_OBJECT *dds_nop_object;
DDS_EXPRA DDS_CON_EXPRA; /* Used to evaluate one conversion */
void **DDS_PTR_CEMETERY; /* Graveyard for unused pointers computed by
expressions. */
DDS_PTYPE dds_mutate[];
DDS_PTYPE dds_concur[][];
DDS_PRIME *dds_prime;
DDS_PRIME_GENUS dds_prime_genus[];
Files:
parser.tab.c - GNU bison parser for binary formats generated by bison
scanner.yy.c - GNU flex scanner for binary formats and map definitions
symblockbegin.c - Begin nested DDS_BLOCK ("tag" name) on symbol table
symblockend.c - Exit current local DDS_BLOCK in symbol table
symobjectlit.c - Create DDS_OBJECT literal in symbol table
symdeclare.c - Create DDS_OBJECT for declared type in symbol table
symenumname.c - Create enumerated DDS_OBJECT (implicit value) in symbol table
symenumvalue.c - Create explicit value for enumerated DDS_OBJECT in symbol tbl
symnullvalue.c - Test DDS_OBJECT for a NULL value (arithmetic constant assumed)
symconst.c - Uses macro to create these constant evaluation functions:
ddsSymConstInt
ddsSymConstLong
ddsSymConstSizet
ddsSymConstULong
symexpr0a.c - Create DDS_EXPR (no argument) in symbol table
symexpr1a.c - Create DDS_EXPR (one argument, unary ops) in symbol table
symexpr1a1.c - Create DDS_EXPR (one argument, plus op) in symbol table
symexpr1a2.c - Create DDS_EXPR (one argument, exist op) in symbol table
symexpr1a3.c - Create DDS_EXPR (one argument, sizeof op) in symbol table
symexpr1a4.c - Create DDS_EXPR (one argument, field op) in symbol table
symexpr2a.c - Create DDS_EXPR (two arguments, assignment) in symbol table
symexpr2b.c - Create DDS_EXPR (two arguments, function) in symbol table
symexpr2c.c - Append DDS_EXPR (struct/union member ref) to symbol table
symexpr2d.c - Create DDS_EXPR (two arguments, subscript) in symbol table
symexpr3a.c - Create DDS_EXPR (three arguments '?:') in symbol table
symtypecast.c - Create "cast" DDS_EXPR in symbol table
symexprdone.c - Finalize DDS_EXPR thread in symbol table
symrelocvalue.c - Evaluate DDS_RELOC entry in symbol table
symmember.c - Create struct/union DDS_MEMBER in symbol table
symmemberbit.c - Create struct/union DDS_MEMBER bit field in symbol table
symmemberedit.c - Append and edit struct/union member
symlookup.c - Lookup name in symbol table
symlookupmem.c - Lookup member name in symbol table
symtypearray.c - Create DDS_TYPE array (constant size) in symbol table
symtypecopy.c - Create DDS_TYPE via copy in symbol table
symtypespec.c - Create DDS_TYPE "specifier" in symbol table
symtypestore.c - Create DDS_TYPE "storage class" in symbol table
symtypesue.c - Create & initialize Struct/Union/Enum DDS_TYPE in symbol table
symtypequal.c - Append DDS_TYPE "qualifier" to symbol table
symtypemerge.c - Merge declaration and existing type into symbol table
symtypeshape.c - Test and reduce shape of one DDS_TYPE in symbol table
symtypeshape2.c - Test and reduce shape of two DDS_TYPE in symbol table
symconsttype.c - Test DDS_TYPE for 'const' qualifiers (recursive)
symsametype.c - Test DDS_TYPE pair for "type" equivalence
symtypedefeb.c - Create DDS_TYPEDEF enum (begin) to symbol table
symtypedefev.c - Create DDS_TYPEDEF enum value in symbol table
symtypedefee.c - Create DDS_TYPEDEF enum (end) to symbol table
symtypedefsb.c - Create DDS_TYPEDEF Struct (Begin) to symbol table
symtypedefsm.c - Create DDS_TYPEDEF Struct Member in symbol table
symtypedefse.c - Create DDS_TYPEDEF Struct (End) to symbol table
symtypedefobj.c - Append typedef DDS_OBJECT to symbol table
symvalueptr.c - Create relocatable value pointer
symident.c - validate syntax of identifier for symbols