SexpTags.cxx

Go to the documentation of this file.
00001 // -*-Mode: C++;-*-
00002 // $Header: /Volumes/cvsrep/developer/OpenADFortTk/src/lib/support/SexpTags.cxx,v 1.6 2005/02/01 23:06:53 eraxxon Exp $
00003 
00004 // * BeginCopyright *********************************************************
00005 // *********************************************************** EndCopyright *
00006 
00007 //***************************************************************************
00008 //
00009 // File:
00010 //   $Source: /Volumes/cvsrep/developer/OpenADFortTk/src/lib/support/SexpTags.cxx,v $
00011 //
00012 // Purpose:
00013 //   [The purpose of this file]
00014 //
00015 // Description:
00016 //   [The set of functions, macros, etc. defined in the file]
00017 //
00018 //***************************************************************************
00019 
00020 //************************* System Include Files ****************************
00021 
00022 #include <string>
00023 
00024 //*************************** User Include Files ****************************
00025 
00026 #include "SexpTags.h"
00027 
00028 //*************************** Forward Declarations ***************************
00029 
00030 //****************************************************************************
00031 
00032 namespace SexpTags {
00033 
00034   const char* WHIRL       = "whirl";
00035   const char* PU_FOREST   = "pu_forest";
00036   const char* PU_TREE     = "pu_tree";
00037   const char* PU          = "pu";
00038   
00039   const char* GBL_SYMTAB  = "gbl_symtab";
00040   const char* PU_SYMTAB   = "pu_symtab";
00041   
00042   const char* FILE_INFO   = "file_info";
00043   const char* ST_TAB      = "st_tab";
00044   const char* TY_TAB      = "ty_tab";
00045   const char* PU_TAB      = "pu_tab";
00046   const char* FLD_TAB     = "fld_tab";
00047   const char* ARB_TAB     = "arb_tab";
00048   const char* TYLIST_TAB  = "tylist_tab";
00049   const char* TCON_TAB    = "tcon_tab";
00050   const char* TCON_STR_TAB = "tcon_str_tab";
00051   const char* INITO_TAB   = "inito_tab";
00052   const char* INITV_TAB   = "initv_tab";
00053   const char* BLK_TAB     = "blk_tab";
00054   const char* ST_ATTR_TAB = "st_attr_tab";
00055   const char* STR_TAB     = "str_tab";
00056   const char* PREG_TAB    = "preg_tab";
00057   const char* LABEL_TAB   = "label_tab";
00058   
00059   const char* ST          = "st";
00060   const char* TY          = "ty";
00061   const char* FLG         = "flg";
00062   const char* OFLG        = "oflg";
00063   
00064 };
00065 
00066 //****************************************************************************
00067 
00068 
00069 static const char* BLANK_LINE =
00070 ";;\n";
00071 
00072 static const char* GRAMMAR_SUMMARY =
00073 ";; *** Summary ***\n"
00074 ";; WHIRL      ::= (whirl GBL_SYMTAB PU_FOREST)\n"
00075 ";; GBL_SYMTAB ::= (gbl_symtab GBL_TAB1..GBL_TABn)        ; n is fixed\n"
00076 ";; PU_FOREST  ::= (pu_forest PU_TREE*)                   ; list of PU_TREEs\n"
00077 ";; PU_TREE    ::= (pu_tree PU PU_TREE*) | NULL\n"
00078 ";; PU         ::= (pu PU_SYM PU_SYMTAB WN_AST)\n"
00079 ";; PU_SYMTAB  ::= (pu_symtab PU_TAB1..PU_TABm)           ; m is fixed\n"
00080 ";; WN_AST     ::= (WN_OPR WN_ATTRS WN_AST*) | NULL\n";
00081 
00082 static const char* GRAMMAR_SYMTAB_DETAILS =
00083 ";; *** Symbol Table Details ***\n"
00084 ";; GBL_SYMTAB ::= (gbl_symtab\n"
00085 ";;                   FILE_INFO       ; file information\n"
00086 ";;                   ST_TAB          ; symbol table (global)\n"
00087 ";;                     ST_ATTR_TAB   ;   misc. attributes for ST_TAB\n"
00088 ";;                   PU_TAB          ; program-unit table\n"
00089 ";;                   TY_TAB          ; type table\n"
00090 ";;                     FLD_TAB       ;   field table (structured types)\n"
00091 ";;                     ARB_TAB       ;   array-bound table\n"
00092 ";;                     TYLIST_TAB    ;   function prototypes\n"
00093 ";;                   TCON_TAB        ; constant table\n"
00094 ";;                     TCON_STR_TAB  ;   string constant table\n"
00095 ";;                   INITO_TAB       ; initial values for init'd objects\n"
00096 ";;                     INITV_TAB     ;   values for scalar components\n"
00097 ";;                   BLK_TAB         ; layout info for block of data \n"
00098 ";;                   STR_TAB         ; string table\n"
00099 ";;                   )\n"
00100 ";; PU_SYMTAB  ::= (pu_symtab\n"
00101 ";;                   ST_TAB          ; symbol table (local)\n"
00102 ";;                     ST_ATTR_TAB   ;   misc. attributes for ST_TAB\n"
00103 ";;                   LABEL_TAB       ; label table\n"
00104 ";;                   PREG_TAB        ; psuedo-register table\n"
00105 ";;                   INITO_TAB       ; initial values for init'd objects\n"
00106 ";;                   )\n"
00107 ";;\n"
00108 ";; FILE_INFO   ::= (file_info GP_GROUP FLAGS)\n"
00109 ";;\n"
00110 ";; ST_TAB      ::= (st_tab ENTRY*)\n"
00111 ";; ENTRY       ::= (IDX SYM_CLASS STORAGE_CLASS EXPORT_CLASS\n"
00112 ";;                  NAME_IDX/TCON TYPE/PU/BLK BASE_IDX OFFSET\n"
00113 ";;                  FLAGS FLAGS_EXT ST)\n"
00114 ";;\n"
00115 ";; ST_ATTR_TAB ::= (st_attr_tab ENTRY*)\n"
00116 ";; ENTRY       ::= (IDX ST KIND REG_ID/SECTION_NAME)\n"
00117 ";;\n"
00118 ";; PU_TAB      ::= (pu_tab ENTRY*)\n"
00119 ";; ENTRY       ::= (IDX PROTOTYPE LEXICAL_LEVEL GP_GROUP SRC_LANG\n"
00120 ";;                  TARGET_IDX FLAGS)\n"
00121 ";;\n"
00122 ";; TY_TAB      ::= (ty_tab ENTRY*)\n"
00123 ";; ENTRY       ::= (IDX KIND NAME_IDX MTYPE SIZE FLAGS\n"
00124 ";;                  ARB/FLD/TYLIST ETYPE/POINTED/PU_FLAGS)\n"
00125 ";;\n"
00126 ";; FLD_TAB     ::= (fld_tab ENTRY*)\n"
00127 ";; ENTRY       ::= (IDX NAME_IDX TYPE OFST, BSIZE, BOFST FLAGS ST)\n"
00128 ";;\n"
00129 ";; ARB_TAB     ::= (arb_tab ENTRY*)\n"
00130 ";; ENTRY       ::= (IDX FLAGS DIMENSION CO_DIMENSION\n"
00131 ";;                  LBND_VAL/LBND_VAR UBND_VAL/UBND_VAR\n"
00132 ";;                  STRIDE_VAL/STRIDE_VAR)\n"
00133 ";;\n"
00134 ";; TYLIST_TAB  ::= (tylist_tab ENTRY*)\n" 
00135 ";; ENTRY       ::= (IDX TY)\n"
00136 ";;\n"
00137 ";; TCON_TAB    ::= (tcon_tab ENTRY*)\n"
00138 ";; ENTRY       ::= (IDX TY FLAGS VALS CMPLXVAL)\n"
00139 ";;\n"
00140 ";; TCON_STR_TAB ::= (tcon_str_tab ENTRY*)\n"
00141 ";; ENTRY       ::= (IDX CHAR_ARRAY)\n"
00142 ";;\n"
00143 ";; INITO_TAB   ::= (inito_tab ENTRY*)\n"
00144 ";; ENTRY       ::= (IDX ST VAL)\n"
00145 ";;\n"
00146 ";; INITV_TAB   ::= (initv_tab ENTRY*)\n"
00147 ";; ENTRY       ::= (IDX NEXT KIND REPEAT1\n"
00148 ";;                  ST/LAB/LAB1/MTYPE/TC/BLK/PAD OFST/ST2/REPEAT2/UNUSED)\n"
00149 ";;\n"
00150 ";; BLK_TAB     ::= (blk_tab ENTRY*)\n"
00151 ";; ENTRY       ::= (IDX SIZE ALIGN FLAGS SECTION_IDX SCNINFO_IDX)\n"
00152 ";;\n"
00153 ";; STR_TAB     ::= (str_tab ENTRY*)\n"
00154 ";; ENTRY       ::= (IDX STRING)\n"
00155 ";;\n"
00156 ";; LABEL_TAB   ::= (label_tab ENTRY*)\n"
00157 ";; ENTRY       ::= (IDX NAME_IDX KIND FLAGS)\n"
00158 ";;\n"
00159 ";; PREG_TAB    ::= (preg_tab ENTRY*)\n"
00160 ";; ENTRY       ::= (IDX NAME_IDX)\n"
00161 ";;\n"
00162 ";;\n"
00163 ";; ST  ::= (st HSTR SCOPE_IDX IDX)\n"
00164 ";; TY  ::= (ty HSTR IDX ALIGN)\n"
00165 ";;\n"
00166 ";; HSTR (helper string) is a (possibly empty) quoted string.\n";
00167 
00168 // Other notes:
00169 // - indices aways begin with 1 (never 0)
00170 // - 'entry' above is duplicated to make names easier to read
00171 // - tylist-tab lists are null-terminated
00172 // - strtab indices are special
00173 
00174 
00175 static const char* GRAMMAR_AST_DETAILS =
00176 ";; *** AST Details ***\n"
00177 ";; WN_OPR     ::= OPERATOR RTYPE DTYPE\n"
00178 ";; WN_ATTRS   ::= ((ATTR1 ...) (ATTR2 ...) (ATTR3 ...) ...)\n";
00179 
00180 
00181 const char* 
00182 SexpTags::get_grammar_summary()
00183 {
00184   return GRAMMAR_SUMMARY;
00185 }
00186 
00187 
00188 const char* 
00189 SexpTags::get_grammar()
00190 {
00191   static std::string str;
00192   if (str.size() == 0) {
00193     str += GRAMMAR_SUMMARY;
00194     str += BLANK_LINE;
00195     str += GRAMMAR_SYMTAB_DETAILS;
00196     str += BLANK_LINE;
00197     str += GRAMMAR_AST_DETAILS;
00198   }
00199   
00200   return str.c_str();
00201 }

Generated on Fri Jul 24 04:29:07 2009 for OpenADFortTk (extended to Open64) by  doxygen 1.5.7.1