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