30.06.2014 Aufrufe

Systemmodell-basierte Definition objektbasierter ...

Systemmodell-basierte Definition objektbasierter ...

Systemmodell-basierte Definition objektbasierter ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

C.1 Gemeinsam genutzte Sprachteile 281<br />

216 (<br />

217 // HEX<br />

218 ((’x’|’X’) ((HEX_DIGIT)+ | (’.’ (HEX_DIGIT)+) | HEX_EXPONENT)) =><br />

219 (<br />

220 (’x’|’X’)<br />

221 // The decimal exponent and the float suffix look like<br />

222 // hex digits, hence the (...)* doesn’t know when to stop<br />

223 // (-> ambig). ANTLR resolves it correctly by matching<br />

224 // immediately. It is therefore ok to hush warning.<br />

225 (options {warnWhenFollowAmbig=false;}: HEX_DIGIT)*<br />

226 {isHex = true;}<br />

227 )<br />

228 |<br />

229 // FLOAT or DOUBLE with leading zero<br />

230 ((’0’..’9’)+ (’.’|DECIMAL_EXPONENT|FLOAT_SUFFIX)) => (’0’..’9’)+<br />

231 |<br />

232 // OCTAL<br />

233 (’0’..’7’)+<br />

234 )?<br />

235 )<br />

236 |<br />

237 // NON-ZERO DECIMAL<br />

238 ((’1’..’9’) (’0’..’9’)* {isDecimal=true; _ttype = NUM_INT;})<br />

239 )<br />

240 {<br />

241 if (LA(1)==’.’ && LA(2)==’.’)<br />

242 isDoubleDot = true;<br />

243 else<br />

244 isDoubleDot = false;<br />

245 }<br />

246 (<br />

247 (’l’|’L’) {_ttype = NUM_LONG;}<br />

248<br />

249 // only check to see if it’s a float if looks like decimal so far<br />

250 |<br />

251 {isDecimal && !isDoubleDot}?<br />

252 (<br />

253 {isHex}?<br />

254 ( // exponent is mandatory for floating point hex digits<br />

255 ’.’ (HEX_DIGIT)* HEX_EXPONENT (t=FLOAT_SUFFIX)?<br />

256 |<br />

257 HEX_EXPONENT (t=FLOAT_SUFFIX)?<br />

258 |<br />

259 t=FLOAT_SUFFIX<br />

260 )<br />

261 |<br />

262 (<br />

263 ’.’ (’0’..’9’)* (DECIMAL_EXPONENT)? (t=FLOAT_SUFFIX)?<br />

264 |<br />

265 DECIMAL_EXPONENT (t=FLOAT_SUFFIX)?<br />

266 |<br />

267 t=FLOAT_SUFFIX<br />

268 )<br />

269 )<br />

270 {<br />

271 if (t != null && t.getText().toUpperCase().indexOf(’F’) >= 0) {<br />

272 _ttype = NUM_FLOAT;<br />

273 }<br />

274 else {<br />

275 _ttype = NUM_DOUBLE; // assume double<br />

276 }<br />

277 }

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!