GCC Wikia
探索
メインページ
ディスカッション
全ページ
コミュニティ
インタラクティブな地図
最近のブログの投稿
Wikiコンテンツ
最近更新されたページ
Maybe dump rtl for tree stmt
Struct tree opt pass
Init optimization passes
Gcc-4.1.0/gcc/emit-rtl.c
Flag finite math only
HONOR NANS
MODE HAS NANS
隠しカテゴリ
BlogListingPage
壊れたファイルへのリンクがあるページ
会議室
Forumheader/会議室
会議室へようこそ
コミュニティ
ヘルプ
FANDOM
ゲーム
映画
テレビ
Wiki
Wikiを探索
コミュニティセントラル
Wikiを はじめよう
アカウントをお持ちでない場合
登録
ログイン
ログイン
登録
GCC Wikia
1,550
ページ
探索
メインページ
ディスカッション
全ページ
コミュニティ
インタラクティブな地図
最近のブログの投稿
Wikiコンテンツ
最近更新されたページ
Maybe dump rtl for tree stmt
Struct tree opt pass
Init optimization passes
Gcc-4.1.0/gcc/emit-rtl.c
Flag finite math only
HONOR NANS
MODE HAS NANS
隠しカテゴリ
BlogListingPage
壊れたファイルへのリンクがあるページ
会議室
Forumheader/会議室
会議室へようこそ
コミュニティ
ヘルプ
「
C lex with flags
」を編集中
ページに戻る
編集
ソースを編集
履歴表示
トーク(0件)
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
{{header}} == 概要 == *[[gcc-4.1.0/gcc/c-lex.c]]にて定義 == 引数 == *[[tree]] *value *[[location_t]] *loc *unsigned char *cpp_flags == 実装 == <code> 326 /* Read a token and return its type. Fill *VALUE with its value, if 327 applicable. Fill *CPP_FLAGS with the token's flags, if it is 328 non-NULL. */ 329 330 [[enum cpp_ttype]] 331 c_lex_with_flags ([[tree]] *value, [[location_t]] *loc, unsigned char *cpp_flags) 332 { 333 static [[bool]] no_more_pch; 334 const [[cpp_token]] *tok; 335 [[enum cpp_ttype]] type; 336 337 [[timevar_push]] ([[TV_CPP]]); 338 retry: 339 tok = [[cpp_get_token]] ([[parse_in]]); 340 type = tok->type; 341 342 retry_after_at: 343 #ifdef [[USE_MAPPED_LOCATION]] 344 *loc = tok->src_loc; 345 #else 346 *loc = [[input_location]]; 347 #endif 348 switch (type) 349 { 350 case [[CPP_PADDING]]: 351 goto retry; 352 353 case [[CPP_NAME]]: 354 *value = [[HT_IDENT_TO_GCC_IDENT]] ([[HT_NODE]] (tok->val.node)); 355 break; 356 357 case [[CPP_NUMBER]]: 358 { 359 unsigned int flags = [[cpp_classify_number]] ([[parse_in]], tok); 360 361 switch (flags & [[CPP_N_CATEGORY]]) 362 { 363 case [[CPP_N_INVALID]]: 364 /* cpplib has issued an error. */ 365 *value = [[error_mark_node]]; 366 break; 367 368 case [[CPP_N_INTEGER]]: 369 *value = [[interpret_integer]] (tok, flags); 370 break; 371 372 case [[CPP_N_FLOATING]]: 373 *value = [[interpret_float]] (tok, flags); 374 break; 375 376 default: 377 [[gcc_unreachable]] (); 378 } 379 } 380 break; 381 382 case [[CPP_ATSIGN]]: 383 /* An @ may give the next token special significance in Objective-C. */ 384 if ([[c_dialect_objc]] ()) 385 { 386 [[location_t]] atloc = [[input_location]]; 387 388 retry_at: 389 tok = [[cpp_get_token]] ([[parse_in]]); 390 type = tok->type; 391 switch (type) 392 { 393 case [[CPP_PADDING]]: 394 goto retry_at; 395 396 case [[CPP_STRING]]: 397 case [[CPP_WSTRING]]: 398 type = [[lex_string]] (tok, value, true); 399 break; 400 401 case [[CPP_NAME]]: 402 *value = [[HT_IDENT_TO_GCC_IDENT]] ([[HT_NODE]] (tok->val.node)); 403 if ([[objc_is_reserved_word]] (*value)) 404 { 405 type = [[CPP_AT_NAME]]; 406 break; 407 } 408 /* FALLTHROUGH */ 409 410 default: 411 /* ... or not. */ 412 [[error]] ("%Hstray %<@%> in program", &atloc); 413 goto retry_after_at; 414 } 415 break; 416 } 417 418 /* FALLTHROUGH */ 419 case [[CPP_HASH]]: 420 case [[CPP_PASTE]]: 421 { 422 unsigned char name[4]; 423 424 *[[cpp_spell_token]] ([[parse_in]], tok, name, [[true]]) = 0; 425 426 [[error]] ("stray %qs in program", name); 427 } 428 429 goto retry; 430 431 case [[CPP_OTHER]]: 432 { 433 [[cppchar_t]] c = tok->val.str.text[0]; 434 435 if (c == '"' || c == '\'') 436 [[error]] ("missing terminating %c character", (int) c); 437 else if ([[ISGRAPH]] (c)) 438 [[error]] ("stray %qc in program", (int) c); 439 else 440 [[error]] ("stray %<\\%o%> in program", (int) c); 441 } 442 goto retry; 443 444 case [[CPP_CHAR]]: 445 case [[CPP_WCHAR]]: 446 *value = [[lex_charconst]] (tok); 447 break; 448 449 case [[CPP_STRING]]: 450 case [[CPP_WSTRING]]: 451 if (![[c_lex_return_raw_strings]]) 452 { 453 type = [[lex_string]] (tok, value, [[false]]); 454 break; 455 } 456 457 /* FALLTHROUGH */ 458 459 case [[CPP_PRAGMA]]: 460 *value = [[build_string]] (tok->val.str.len, (char *) tok->val.str.text); 461 break; 462 463 /* These tokens should not be visible outside cpplib. */ 464 case [[CPP_HEADER_NAME]]: 465 case [[CPP_COMMENT]]: 466 case [[CPP_MACRO_ARG]]: 467 [[gcc_unreachable]] (); 468 469 default: 470 *value = [[NULL_TREE]]; 471 break; 472 } 473 474 if (cpp_flags) 475 *cpp_flags = tok->flags; 476 477 if (!no_more_pch) 478 { 479 no_more_pch = [[true]]; 480 [[c_common_no_more_pch]] (); 481 } 482 483 [[timevar_pop]] ([[TV_CPP]]); 484 485 return type; 486 } </code> {{related}}
編集内容の要約:
GCC Wikiaへの投稿はすべて、「CC-BY-SA」に従って公開されるものとしてみなされます
キャンセル
編集の仕方
(新しいウィンドウで開きます)
このページで使用されているテンプレート:
テンプレート:Header
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
Follow on IG
TikTok
Join Fan Lab