Lines Matching defs:P
221 bool isTokenIdentifierOrKeyword(Parser &P, Token Tok) {
226 Tok.getIdentifierInfo()->isKeyword(P.getLangOpts()))
238 bool tryParseAndConsumeSpecialTokenKind(Parser &P, OpenACCSpecialTokenKind Kind,
240 Token IdentTok = P.getCurToken();
243 if (isTokenIdentifierOrKeyword(P, IdentTok) && P.NextToken().is(tok::colon)) {
244 P.ConsumeToken();
245 P.ConsumeToken();
248 P.Diag(IdentTok, diag::err_acc_invalid_tag_kind)
309 OpenACCReductionOperator ParseReductionOperator(Parser &P) {
313 if (P.NextToken().isNot(tok::colon)) {
314 P.Diag(P.getCurToken(), diag::err_acc_expected_reduction_operator);
317 Token ReductionKindTok = P.getCurToken();
319 P.ConsumeToken();
320 P.ConsumeToken();
344 P.Diag(ReductionKindTok, diag::err_acc_invalid_reduction_operator);
352 bool expectIdentifierOrKeyword(Parser &P) {
353 Token Tok = P.getCurToken();
355 if (isTokenIdentifierOrKeyword(P, Tok))
358 P.Diag(P.getCurToken(), diag::err_expected) << tok::identifier;
363 ParseOpenACCEnterExitDataDirective(Parser &P, Token FirstTok,
365 Token SecondTok = P.getCurToken();
368 P.Diag(FirstTok, diag::err_acc_invalid_directive)
375 P.ConsumeAnyToken();
379 P.Diag(SecondTok, diag::err_expected) << tok::identifier;
381 P.Diag(FirstTok, diag::err_acc_invalid_directive)
392 OpenACCAtomicKind ParseOpenACCAtomicKind(Parser &P) {
393 Token AtomicClauseToken = P.getCurToken();
407 P.ConsumeToken();
412 OpenACCDirectiveKind ParseOpenACCDirectiveKind(Parser &P) {
413 Token FirstTok = P.getCurToken();
418 P.Diag(FirstTok, diag::err_acc_missing_directive);
420 if (P.getCurToken().isNot(tok::annot_pragma_openacc_end))
421 P.ConsumeAnyToken();
426 P.ConsumeToken();
439 P.Diag(FirstTok, diag::err_acc_invalid_directive)
445 return ParseOpenACCEnterExitDataDirective(P, FirstTok, ExDirKind);
454 Token SecondTok = P.getCurToken();
463 P.ConsumeToken();
466 P.ConsumeToken();
469 P.ConsumeToken();
562 void SkipUntilEndOfDirective(Parser &P) {
563 while (P.getCurToken().isNot(tok::annot_pragma_openacc_end))
564 P.ConsumeAnyToken();