home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 March / VPR9703A.ISO / VPR_DATA / DOGA / SOURCES / POLYEDIT.LZH / ML / CODE.H < prev    next >
C/C++ Source or Header  |  1996-02-15  |  3KB  |  120 lines

  1. /*
  2.  *        中間コード制御
  3.  *
  4.  *        T.Kobayashi        1994.5.21
  5.  */
  6.  
  7. #define    CODE    1
  8.  
  9. #ifndef    DATA
  10.     #include "data.h"
  11. #endif
  12.  
  13. /*
  14.  *    内部表現コード
  15.  */
  16. #define        CODE_CONST        1        /*    定数    */
  17. #define        CODE_OPERATOR    2        /*    演算子    */
  18. #define        CODE_SENTENSE    3        /*    文        */
  19. #define        CODE_IDENT        4        /*    識別子    */
  20. #define        CODE_ARRAY        5        /*    配列    */
  21.  
  22. /*    文    */
  23. #define        SENT_VAR        1        /*    変数定義    */
  24. #define        SENT_DEF_FUNC    2        /*    関数定義    */
  25. #define        SENT_IF            11        /*    if 文        */
  26. #define        SENT_IF_ELSE    12        /*    if-else 文    */
  27. #define        SENT_WHILE        13        /*    while 文    */
  28. #define        SENT_DO            14        /*    do-while 文    */
  29. #define        SENT_FOR        15        /*    for 文        */
  30. #define        SENT_BREAK        16        /*    break 文    */
  31. #define        SENT_CONTINUE    17        /*    continue 文    */
  32. #define        SENT_RETURN        18        /*    return 文    */
  33. #define        SENT_NULL        20        /*    空文        */
  34. #define        SENT_COMPLEX    21        /*    複文        */
  35. #define        SENT_ASSIGN        22        /*    代入文        */
  36. #define        SENT_ASN_PLUS    23        /*    +=            */
  37. #define        SENT_ASN_MINUS    24        /*    -=            */
  38. #define        SENT_ASN_MULT    25        /*    *=            */
  39. #define        SENT_ASN_DIVIDE    26        /*    /=            */
  40. #define        SENT_ASN_AND    27        /*    &=            */
  41. #define        SENT_ASN_OR        28        /*    |=            */
  42. #define        SENT_ASN_XOR    29        /*    |=            */
  43. #define        SENT_ASN_INC    30        /*    ++            */
  44. #define        SENT_ASN_DEC    31        /*    --            */
  45. #define        SENT_EXPRESS    32        /*    式            */
  46.  
  47. /*
  48.  *        内部表現構造体
  49.  */
  50. /*    共通部分    */
  51. typedef    struct    {
  52.     char    type, size ;
  53. }
  54.     CodeCommon ;
  55.  
  56. /*    定数    */
  57. typedef    struct    {
  58.     char        type, size ;
  59.     DataStruct    data ;
  60. }
  61.     CodeConst ;
  62.  
  63. /*    演算子    */
  64. typedef    struct    {
  65.     char    type, size ;
  66.     short    otype ;        /*    演算子の種類        */
  67. }
  68.     CodeOperator ;
  69.  
  70. /*    文    */
  71. typedef    struct    {
  72.     char    type, size ;
  73.     short    stype ;        /*    文の種類                */
  74.     short    line ;        /*    文の存在する行番号        */
  75.     char    *file ;        /*    文の存在するファイル名    */
  76.     void    *next ;        /*    次の文へのポインタ        */
  77. }
  78.     CodeSentense ;
  79.  
  80. /*    識別子    */
  81. typedef    struct    {
  82.     char    type, size ;
  83.     short    itype ;        /*    識別子の種類    */
  84.     short    ident ;        /*    識別子番号        */
  85. }
  86.     CodeIdent ;
  87.  
  88. /*    配列    */
  89. typedef    struct    {
  90.     char    type, size ;
  91.     short    asize ;        /*    識別子の種類    */
  92. }
  93.     CodeArray ;
  94.  
  95. typedef    union    {
  96.     char            type ;
  97.     CodeCommon        com ;
  98.     CodeConst        c ;
  99.     CodeOperator    ope ;
  100.     CodeSentense    sent ;
  101.     CodeIdent        ident ;
  102.     CodeArray        ary ;
  103. }
  104.     CodeStruct ;
  105.  
  106. /*    code.c    */
  107. extern    void    CodeInit( int );
  108. extern    void    CodeExit( void );
  109. extern    CodeConst    *CodeSetInt( int );
  110. extern    CodeConst    *CodeSetConst( DataStruct* );
  111. extern    CodeOperator    *CodeSetOperator( int );
  112. extern    CodeSentense    *CodeSetSentense( char*, int );
  113. extern    CodeIdent    *CodeSetIdent( int, int );
  114. extern    CodeArray    *CodeSetArray( int );
  115. extern    CodeStruct    *CodeTop( void );
  116. extern    CodeStruct    *CodeNextPtr( void );
  117. extern    CodeStruct    *CodeNext( CodeStruct* );
  118. extern    CodeStruct    *CodeNextSentense( CodeStruct* );
  119. extern    void    *CodeAlloc( int );
  120.