00001 /* 00002 * A n t l r T r a n s l a t i o n H e a d e r 00003 * 00004 * Terence Parr, Will Cohen, and Hank Dietz: 1989-2001 00005 * Purdue University Electrical Engineering 00006 * With AHPCRC, University of Minnesota 00007 * ANTLR Version 1.33MR33 00008 * 00009 * /local/pccts/bin/antlr -CC -gl -mrhoist off genericKernelGrammar.g 00010 * 00011 */ 00012 00013 #define ANTLR_VERSION 13333 00014 #include "pcctscfg.h" 00015 #include "pccts_stdio.h" 00016 #line 1 "genericKernelGrammar.g" 00017 00018 #include "OMKtokens.h" 00019 #include <assert.h> 00020 //correct a big PCCTS bug in c++ mode with return value that are classes 00021 #define PCCTS_PURIFY(r,s) 00022 00023 #include <string> 00024 #include <OMKConfigurationParameterDescriptor.h> 00025 #include <OMKMultipleConfigurationParameter.h> 00026 #include <OMKUniqueConfigurationParameter.h> 00027 00028 #include "OMKtokens.h" 00029 #include "stdio.h" 00030 #include "OMKDLGLexer.h" 00031 #include "ATokenBuffer.h" 00032 #include "ATokPtr.h" 00033 00034 typedef ANTLRCommonToken ANTLRToken; 00035 00036 00037 #include "AParser.h" 00038 #include "OMKgenericKernelParser.h" 00039 #include "DLexerBase.h" 00040 #include "ATokPtr.h" 00041 00042 /* MR23 In order to remove calls to PURIFY use the antlr -nopurify option */ 00043 00044 #ifndef PCCTS_PURIFY 00045 #define PCCTS_PURIFY(r,s) memset((char *) &(r),'\0',(s)); 00046 #endif 00047 00048 00049 void 00050 genericKernelParser::multipleValue(OMK::MultipleConfigurationParameter * existingDescriptor) 00051 { 00052 #line 66 "genericKernelGrammar.g" 00053 zzRULE; 00054 if ( (LA(1)==21) ) { 00055 #line 67 "genericKernelGrammar.g" 00056 { 00057 #line 67 "genericKernelGrammar.g" 00058 zzmatch(21); consume(); 00059 #line 67 "genericKernelGrammar.g" 00060 listValues( existingDescriptor ); 00061 #line 67 "genericKernelGrammar.g" 00062 zzmatch(22); consume(); 00063 } 00064 } 00065 else { 00066 if ( (LA(1)==23) ) { 00067 #line 69 "genericKernelGrammar.g" 00068 { 00069 #line 69 "genericKernelGrammar.g" 00070 zzmatch(23); consume(); 00071 #line 69 "genericKernelGrammar.g" 00072 listAnonymousValues( existingDescriptor ); 00073 #line 69 "genericKernelGrammar.g" 00074 zzmatch(24); consume(); 00075 } 00076 } 00077 else {FAIL(1,err1,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;} 00078 } 00079 return; 00080 fail: 00081 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00082 resynch(setwd1, 0x1); 00083 } 00084 00085 void 00086 genericKernelParser::listValues(OMK::MultipleConfigurationParameter * existingDescriptor) 00087 { 00088 #line 72 "genericKernelGrammar.g" 00089 zzRULE; 00090 #line 77 "genericKernelGrammar.g" 00091 { 00092 for (;;) { 00093 if ( !((setwd1[LA(1)]&0x2))) break; 00094 if ( (LA(1)==23) ) { 00095 #line 74 "genericKernelGrammar.g" 00096 { 00097 #line 74 "genericKernelGrammar.g" 00098 zzmatch(23); consume(); 00099 #line 74 "genericKernelGrammar.g" 00100 listAnonymousValues( existingDescriptor ); 00101 #line 74 "genericKernelGrammar.g" 00102 zzmatch(24); consume(); 00103 } 00104 } 00105 else { 00106 if ( (LA(1)==ID) ) { 00107 #line 76 "genericKernelGrammar.g" 00108 namedValue( existingDescriptor ); 00109 } 00110 else break; /* MR6 code for exiting loop "for sure" */ 00111 } 00112 } 00113 } 00114 return; 00115 fail: 00116 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00117 resynch(setwd1, 0x4); 00118 } 00119 00120 void 00121 genericKernelParser::listAnonymousValues(OMK::MultipleConfigurationParameter * existingDescriptor) 00122 { 00123 #line 80 "genericKernelGrammar.g" 00124 zzRULE; 00125 #line 81 "genericKernelGrammar.g" 00126 00127 OMK::ConfigurationParameterDescriptor * anAnonymousValue ; 00128 #line 89 "genericKernelGrammar.g" 00129 { 00130 while ( (setwd1[LA(1)]&0x8) ) { 00131 #line 85 "genericKernelGrammar.g" 00132 anAnonymousValue = anonymousValue(); 00133 00134 #line 86 "genericKernelGrammar.g" 00135 00136 existingDescriptor->appendSubDescriptor(anAnonymousValue) ; 00137 } 00138 } 00139 return; 00140 fail: 00141 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00142 resynch(setwd1, 0x10); 00143 } 00144 00145 void 00146 genericKernelParser::namedValue(OMK::MultipleConfigurationParameter * currentParameterDescriptor) 00147 { 00148 #line 92 "genericKernelGrammar.g" 00149 zzRULE; 00150 #line 93 "genericKernelGrammar.g" 00151 00152 std::string keyName ; 00153 OMK::ConfigurationParameterDescriptor * associatedParameters ; 00154 #line 97 "genericKernelGrammar.g" 00155 key( keyName ); 00156 #line 97 "genericKernelGrammar.g" 00157 associatedParameters = anonymousValue(); 00158 00159 #line 98 "genericKernelGrammar.g" 00160 00161 currentParameterDescriptor->appendSubDescriptorNamed ( keyName, associatedParameters ) ; 00162 return; 00163 fail: 00164 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00165 resynch(setwd1, 0x20); 00166 } 00167 00168 OMK::ConfigurationParameterDescriptor * 00169 genericKernelParser::anonymousValue(void) 00170 { 00171 OMK::ConfigurationParameterDescriptor * _retv( NULL) ; 00172 #line 103 "genericKernelGrammar.g" 00173 zzRULE; 00174 PCCTS_PURIFY(_retv,sizeof(OMK::ConfigurationParameterDescriptor * )) 00175 #line 104 "genericKernelGrammar.g" 00176 00177 std::string nextValue ; 00178 if ( (setwd1[LA(1)]&0x40) ) { 00179 #line 107 "genericKernelGrammar.g" 00180 concreteValue( nextValue ); 00181 #line 108 "genericKernelGrammar.g" 00182 00183 _retv = new OMK::UniqueConfigurationParameter ( nextValue ) ; 00184 } 00185 else { 00186 if ( (setwd1[LA(1)]&0x80) ) { 00187 #line 112 "genericKernelGrammar.g" 00188 00189 OMK::MultipleConfigurationParameter * realResult ; 00190 realResult = new OMK::MultipleConfigurationParameter () ; 00191 _retv = realResult ; 00192 #line 117 "genericKernelGrammar.g" 00193 multipleValue( realResult ); 00194 } 00195 else {FAIL(1,err2,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;} 00196 } 00197 return _retv; 00198 fail: 00199 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00200 resynch(setwd2, 0x1); 00201 return _retv; 00202 } 00203 00204 void 00205 genericKernelParser::concreteValue(std::string & value) 00206 { 00207 #line 120 "genericKernelGrammar.g" 00208 zzRULE; 00209 #line 122 "genericKernelGrammar.g" 00210 { 00211 if ( (LA(1)==_INT) ) { 00212 #line 122 "genericKernelGrammar.g" 00213 zzmatch(_INT); 00214 #line 122 "genericKernelGrammar.g" 00215 value = LT(1)->getText() ; 00216 consume(); 00217 } 00218 else { 00219 if ( (LA(1)==_FLOAT) ) { 00220 #line 124 "genericKernelGrammar.g" 00221 zzmatch(_FLOAT); 00222 #line 124 "genericKernelGrammar.g" 00223 value = LT(1)->getText() ; 00224 consume(); 00225 } 00226 else { 00227 if ( (LA(1)==STRINGVAL) ) { 00228 #line 126 "genericKernelGrammar.g" 00229 string( value ); 00230 } 00231 else { 00232 if ( (LA(1)==ID) ) { 00233 #line 128 "genericKernelGrammar.g" 00234 zzmatch(ID); 00235 #line 128 "genericKernelGrammar.g" 00236 value = LT(1)->getText() ; 00237 consume(); 00238 } 00239 else {FAIL(1,err3,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;} 00240 } 00241 } 00242 } 00243 } 00244 return; 00245 fail: 00246 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00247 resynch(setwd2, 0x2); 00248 } 00249 00250 void 00251 genericKernelParser::string(std::string & value) 00252 { 00253 #line 132 "genericKernelGrammar.g" 00254 zzRULE; 00255 ANTLRTokenPtr _t11=NULL; 00256 #line 132 "genericKernelGrammar.g" 00257 zzmatch(STRINGVAL); _t11 = (ANTLRTokenPtr)LT(1); 00258 #line 133 "genericKernelGrammar.g" 00259 00260 //cerr<<"_"<<$1->getText()<<"_"<<endl; 00261 char * textwithQuotes ; 00262 int textlength ; 00263 textwithQuotes = _t11->getText() ; 00264 textlength = strlen ( textwithQuotes ) ; 00265 if (textlength > 2) 00266 { 00267 assert ( textwithQuotes[textlength-1] == '"' ) ; 00268 textwithQuotes[textlength-1] = '\0' ; 00269 value = &(textwithQuotes[1]); 00270 textwithQuotes[textlength-1] = '"' ; 00271 } 00272 consume(); 00273 return; 00274 fail: 00275 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00276 resynch(setwd2, 0x4); 00277 } 00278 00279 void 00280 genericKernelParser::key(std::string & value) 00281 { 00282 #line 149 "genericKernelGrammar.g" 00283 zzRULE; 00284 #line 150 "genericKernelGrammar.g" 00285 zzmatch(ID); 00286 #line 151 "genericKernelGrammar.g" 00287 00288 value = LT(1)->getText() ; 00289 consume(); 00290 return; 00291 fail: 00292 syn(zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk); 00293 resynch(setwd2, 0x8); 00294 }
Documentation generated on Mon Jun 9 11:45:56 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |