ptree.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 411 行 · 第 1/2 页

H
411
字号
        } type;
        struct {                                // PT_SYMBOL (normal)
            SYMBOL              symbol;         // - symbol entry
            SEARCH_RESULT *     result;         // - result type from look-up
        } symcg;
        struct {                                // PT_DUP_EXPR (normal)
            PTREE               subtree[1];     // - subtree or NULL
            PTREE               node;           // - duplication partner
        } dup;
        struct {                                // PT_IC
            unsigned            opcode;         // - opcode
            CGVALUE             value;          // - value
        } ic;
        PTREE                   subtree[2];     // all others
    } u;
} PTREE_NODE;

extern PTREE PTreeAlloc( void );
extern PTREE PTreeAssign( PTREE to, PTREE from );
extern PTREE PTreeAssignReloc( PTREE to, PTREE from, RELOC_LIST *reloc_list );
extern PTREE PTreeFree( PTREE );
extern void PTreeFreeSubtrees( PTREE );
extern PTREE PTreeBoolConstant( int );
extern PTREE PTreeIntConstant( signed long, type_id );
extern PTREE PTreeInt64Constant( signed_64, type_id );
//extern PTREE PTreeUIntConstant( unsigned long, type_id );
extern PTREE PTreeFloatingConstantStr( char *, unsigned, type_id );
extern PTREE PTreeFloatingConstant( CPP_FLOAT *, type_id );
extern PTREE PTreeId( char * );
extern PTREE PTreeIdSym( SYMBOL );
extern PTREE PTreeDottedSyms( SYMBOL base, SYMBOL qual );
extern PTREE PTreeSymbol( SYMBOL, char * );
extern PTREE PTreeThis( void );
extern PTREE PTreeCDtorExtra( void );
extern PTREE PTreeLiteral( STRING_CONSTANT );
extern PTREE PTreeLiteralWide( STRING_CONSTANT );
extern PTREE PTreeDupExpr( PTREE );
extern PTREE PTreeType( TYPE );
extern PTREE PTreeForceIntegral( PTREE );
extern PTREE PTreeNonZeroConstantExpr( PTREE );
extern PTREE PTreeTListAppend( PTREE, PTREE );
extern PTREE PTreeReplaceLeft( PTREE, PTREE );
extern PTREE PTreeReplaceRight( PTREE, PTREE );
extern PTREE ThrowsAnything( void );
extern PTREE ConvertToType( PTREE );

typedef enum {                  // parse tree traversal states
    PTREE_LEFT,                 // - descend down left subtree (if possible)
    PTREE_RIGHT,                // - descend down right subtree (if possible)
    PTREE_PROCESS,              // - process current tree node
    PTREE_UNWIND,               // - move back up to parent of current tree node
} PTREE_STATE;

PTREE PTreeBinary(              // CREATE BINARY PTREE NODE
    CGOP cgop,                  // - operator for code generation
    PTREE sub_1,                // - subtree to left
    PTREE sub_2 )               // - subtree to right
;
PTREE PTreeCopySrcLocation(     // COPY LOCATION OF SOURCE
    PTREE tgt,                  // - target node
    PTREE src )                 // - source node
;
PTO_FLAG PTreeEffFlags(         // GET MEANINGFUL FLAGS FOR A PTREE OPERAND
    PTREE node )                // - node
;
PTREE PTreeSetErrLoc(           // SET THE ERROR LOCATION FOR A TREE
    PTREE tree )                // - tree with error
;
msg_status_t PTreeErrorExpr(    // ISSUE ERROR MESSAGE FOR PTREE NODE
    PTREE expr,                 // - node for error
    unsigned err_code )         // - error code
;
void PTreeErrorExprName(        // ISSUE ERROR MESSAGE FOR PTREE NODE, NAME
    PTREE expr,                 // - node for error
    unsigned err_code,          // - error code
    char *name )                // - name
;
void PTreeErrorExprSym(         // ISSUE ERROR MESSAGE FOR PTREE NODE, SYMBOL
    PTREE expr,                 // - node for error
    unsigned err_code,          // - error code
    SYMBOL sym )                // - symbol
;
void PTreeErrorExprSymInf(      // ISSUE ERROR MESSAGE FOR PTREE NODE, SYMBOL
    PTREE expr,                 // - node for error
    unsigned err_code,          // - error code
    SYMBOL sym )                // - symbol
;
void PTreeErrorExprType(        // ISSUE ERROR MESSAGE FOR PTREE NODE, TYPE
    PTREE expr,                 // - node for error
    unsigned err_code,          // - error code
    TYPE type )                 // - type
;
void PTreeErrorExprNameType(    // ISSUE ERROR MESSAGE FOR PTREE NODE, NAME, TYPE
    PTREE expr,                 // - node for error
    unsigned err_code,          // - error code
    char *name,                 // - name
    TYPE type )                 // - type
;
PTREE PTreeErrorNode(           // SET NODE TO BE AN ERROR
    PTREE curr )                // - node to be transformed
;
PTREE PTreeIc(                  // CREATE PT_IC NODE
    unsigned opcode,            // - IC opcode
    CGVALUE value )             // - IC value
;
PTO_FLAG PTreeOpFlags(          // GET FLAGS FOR A PTREE NODE
    PTREE curr )                // - current node
;
PTREE PTreeOp(                  // FETCH (OVER COMMAS) PTREE PTR.
    PTREE *addr_expr )          // - addr( PTREE node )
;
PTREE PTreeOpLeft(              // GET LEFT NODE, SKIPPING "," OPERATOR
    PTREE expr )                // - expression
;
PTREE PTreeOpRight(             // GET RIGHT NODE, SKIPPING "," OPERATOR
    PTREE expr )                // - expression
;
PTREE PTreePromoteLocn(         // ENSURE TOP OF TREE HAS SOURCE LOCATION
    PTREE tree )                // - the tree
;
boolean PTreePropogateError(    // CHECK AND PROPOGATE ERRORS FROM SUB-TREES
    PTREE curr )                // - current node
;
PTREE *PTreeRef(                // FIND REFERENCE TO OPERAND
    PTREE *tgt )                // - target location
;
PTREE *PTreeRefLeft(            // FIND REFERENCE TO LEFT OPERAND
    PTREE expr )                // - expression
;
PTREE *PTreeRefRight(           // FIND REFERENCE TO RIGHT OPERAND
    PTREE expr )                // - expression
;
PTREE PTreeSetLocn(             // SET LOCATION IN A PTREE NODE
    PTREE tree,                 // - node
    TOKEN_LOCN *locn )          // - location
;
PTREE PTreeTraverseInitRef(     // TRAVERSE A PTREE FOR REFERENCE INIT.
    PTREE tree,                 // - tree to be traversed
    PTREE (*visit_rtn)          // - visiting routine
        ( PTREE curr ) )        // - - addr( current node )
;
PTREE PTreeTraversePostfix(     // TRAVERSE A PTREE IN (LEFT,RIGHT,SELF) ORDER
    PTREE tree,                 // - tree to be traversed
    PTREE (*visit_rtn)          // - visiting routine
        ( PTREE curr ) )        // - - current node
;
PTREE PTreeTraversePrefix(      // TRAVERSE A PTREE IN (SELF,LEFT,RIGHT) ORDER
    PTREE tree,                 // - tree to be traversed
    PTREE (*visit_rtn)          // - visiting routine
        ( PTREE curr ) )        // - - addr( current node )
;
PTREE PTreeCopyPrefix(          // COPY A PTREE IN (SELF,LEFT,RIGHT) ORDER
    PTREE tree,                 // - tree to be copied
    PTREE (*copy_rtn)           // - copy routine
        ( PTREE curr,           // - - addr( current node )
          void *param ),        // - - parameter
    void *param  )              // param to pass to copy_rtn
;
PTREE PTreeUnary(               // CREATE UNARY PTREE NODE
    CGOP cgop,                  // - operator for code generation
    PTREE sub_1 )               // - subtree to left
;
msg_status_t PTreeWarnExpr(     // ISSUE WARNING MESSAGE FOR PTREE NODE
    PTREE expr,                 // - node for error
    unsigned err_code )         // - error code
;

extern PTREE SimpleDestructorId( TYPE );
extern PTREE MakeDestructorId( PTREE );
extern PTREE MakeDestructorIdFromType( DECL_SPEC * );
extern PTREE MakeOperatorId( CGOP );
extern PTREE MakeUserConversionId( DECL_SPEC *, DECL_INFO * );
extern PTREE MakeFunctionLikeCast( DECL_SPEC *, PTREE );
extern PTREE MakeNormalCast( PTREE, PTREE );
extern PTREE MakeMemInitItem( DECL_SPEC *, PTREE, PTREE, TOKEN_LOCN * );
extern PTREE MakeIdFromType( DECL_SPEC * );
extern PTREE MakeDeleteExpr( PTREE, CGOP, PTREE );
extern PTREE MakeGlobalId( PTREE );
extern PTREE MakeGlobalOperatorId( PTREE, CGOP );
extern PTREE MakeScopedId( PTREE );
extern PTREE CheckScopedId( PTREE );
extern PTREE MakeScopedDestructorId( PTREE, PTREE );
extern PTREE MakeScopedUserConversionId( PTREE, PTREE );
extern PTREE MakeScopedOperatorId( PTREE, CGOP );
extern boolean IsLinkerConstant( PTREE, PTREE *, target_size_t * );
extern boolean IsStringConstant( PTREE, boolean * );
extern SYMBOL FunctionSymbol( PTREE );
extern PTREE PTreeIntrinsicOperator( PTREE, CGOP );
extern PTREE PTreeExtractLocn( PTREE, TOKEN_LOCN * );
extern void PTreeDeleteSizeExpr( PTREE );
extern PTREE PTreeStringLiteralConcat( PTREE, PTREE );
extern PTREE CutAwayQualification( PTREE );
extern PTREE MakeBuiltinIsFloat( PTREE );
extern PTREE PTreeOffsetof( PTREE, PTREE );
extern PTREE PTreeCheckFloatRepresentation( PTREE tree );
extern PTREE PTreeMSSizeofKludge( PTREE );

extern PTREE PTreeGetIndex( PTREE );
extern PTREE PTreeMapIndex( PTREE );

unsigned PTreeGetFPRaw( PTREE, char *, unsigned );

#define _PTREE_H
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?