您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ ASTPrinter类代码示例

51自学网 2021-06-03 12:04:16
  C++
这篇教程C++ ASTPrinter类代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中ASTPrinter的典型用法代码示例。如果您正苦于以下问题:C++ ASTPrinter类的具体用法?C++ ASTPrinter怎么用?C++ ASTPrinter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。

在下文中一共展示了ASTPrinter类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: printImpl

void SpecifierTypeRepr::printImpl(ASTPrinter &Printer,                                  const PrintOptions &Opts) const {  if (getKind() == TypeReprKind::InOut) {    Printer.printKeyword("inout");  } else {    assert((getKind() == TypeReprKind::Shared) && "Unknown kind");    Printer.printKeyword("shared");  }  Printer << " ";  printTypeRepr(Base, Printer, Opts);}
开发者ID:randomstep,项目名称:swift,代码行数:11,


示例2: printImpl

void FunctionTypeRepr::printImpl(ASTPrinter &Printer,                                 const PrintOptions &Opts) const {  Printer.callPrintStructurePre(PrintStructureKind::FunctionType);  printTypeRepr(ArgsTy, Printer, Opts);  if (throws()) {    Printer << " ";    Printer.printKeyword("throws");  }  Printer << " -> ";  Printer.callPrintStructurePre(PrintStructureKind::FunctionReturnType);  printTypeRepr(RetTy, Printer, Opts);  Printer.printStructurePost(PrintStructureKind::FunctionReturnType);  Printer.printStructurePost(PrintStructureKind::FunctionType);}
开发者ID:0x4d4746h,项目名称:swift,代码行数:14,


示例3: print

void TypeRepr::print(ASTPrinter &Printer, const PrintOptions &Opts) const {  Printer.printTypePre(TypeLoc(const_cast<TypeRepr *>(this)));  SWIFT_DEFER {    Printer.printTypePost(TypeLoc(const_cast<TypeRepr *>(this)));  };  switch (getKind()) {#define TYPEREPR(CLASS, PARENT) /  case TypeReprKind::CLASS: { /    auto Ty = static_cast<const CLASS##TypeRepr*>(this); /    return Ty->printImpl(Printer, Opts); /  }#include "swift/AST/TypeReprNodes.def"  }  llvm_unreachable("unknown kind!");}
开发者ID:randomstep,项目名称:swift,代码行数:16,


示例4: printAttrs

void AttributedTypeRepr::printAttrs(ASTPrinter &Printer,                                    const PrintOptions &Options) const {  const TypeAttributes &Attrs = getAttrs();  auto hasAttr = [&](TypeAttrKind K) -> bool {    if (Options.excludeAttrKind(K))      return false;    return Attrs.has(K);  };  if (hasAttr(TAK_autoclosure))    Printer.printSimpleAttr("@autoclosure") << " ";  if (hasAttr(TAK_escaping))    Printer.printSimpleAttr("@escaping") << " ";  if (hasAttr(TAK_thin))    Printer.printSimpleAttr("@thin") << " ";  if (hasAttr(TAK_thick))    Printer.printSimpleAttr("@thick") << " ";  if (hasAttr(TAK_convention) && Attrs.convention.hasValue()) {    Printer.callPrintStructurePre(PrintStructureKind::BuiltinAttribute);    Printer.printAttrName("@convention");    Printer << "(" << Attrs.convention.getValue() << ")";    Printer.printStructurePost(PrintStructureKind::BuiltinAttribute);    Printer << " ";  }}
开发者ID:randomstep,项目名称:swift,代码行数:28,


示例5: print

void TypeRepr::print(ASTPrinter &Printer, const PrintOptions &Opts) const {  // The type part of a NamedTypeRepr will get the callback.  if (!isa<NamedTypeRepr>(this))    Printer.printTypePre(TypeLoc(const_cast<TypeRepr *>(this)));  defer {    if (!isa<NamedTypeRepr>(this))      Printer.printTypePost(TypeLoc(const_cast<TypeRepr *>(this)));  };  switch (getKind()) {#define TYPEREPR(CLASS, PARENT) /  case TypeReprKind::CLASS: { /    auto Ty = static_cast<const CLASS##TypeRepr*>(this); /    return Ty->printImpl(Printer, Opts); /  }#include "swift/AST/TypeReprNodes.def"  }  llvm_unreachable("unknown kind!");}
开发者ID:0x4d4746h,项目名称:swift,代码行数:19,


示例6: print

void DeclAttribute::print(ASTPrinter &Printer, const PrintOptions &Options,                          const Decl *D) const {  if (!printImpl(Printer, Options, D))    return; // Nothing printed.  if (isLongAttribute() && Options.PrintLongAttrsOnSeparateLines)    Printer.printNewline();  else    Printer << " ";}
开发者ID:aisobe,项目名称:swift,代码行数:11,


示例7: adjustPrintOptions

void swift::ide::printHeaderInterface(       StringRef Filename,       ASTContext &Ctx,       ASTPrinter &Printer,       const PrintOptions &Options) {  auto AdjustedOptions = Options;  adjustPrintOptions(AdjustedOptions);  auto &Importer = static_cast<ClangImporter &>(*Ctx.getClangModuleLoader());  auto &ClangSM = Importer.getClangASTContext().getSourceManager();  auto headerFilter = [&](ClangNode ClangN) -> bool {    return true; // no need for filtering.  };  SmallVector<Decl *, 32> ClangDecls;  llvm::SmallPtrSet<Decl *, 32> SeenDecls;  auto headerReceiver = [&](Decl *D) {    if (SeenDecls.count(D) == 0) {      SeenDecls.insert(D);      ClangDecls.push_back(D);    }  };  Importer.lookupDeclsFromHeader(Filename, headerFilter, headerReceiver);  // Sort imported declarations in source order.  std::sort(ClangDecls.begin(), ClangDecls.end(),            [&](Decl *LHS, Decl *RHS) -> bool {              return ClangSM.isBeforeInTranslationUnit(                                            LHS->getClangNode().getLocation(),                                            RHS->getClangNode().getLocation());            });  ASTPrinter *PrinterToUse = &Printer;  ClangCommentPrinter RegularCommentPrinter(Printer, Importer);  if (Options.PrintRegularClangComments)    PrinterToUse = &RegularCommentPrinter;  for (auto *D : ClangDecls) {    ASTPrinter &Printer = *PrinterToUse;    if (!shouldPrint(D, AdjustedOptions)) {      Printer.avoidPrintDeclPost(D);      continue;    }    if (D->print(Printer, AdjustedOptions))      Printer << "/n";  }}
开发者ID:peterfriese,项目名称:swift,代码行数:50,


示例8: printShortFormAvailable

/// Print the short-form @available() attribute for an array of long-form/// AvailableAttrs that can be represented in the short form./// For example, for:///   @available(OSX, introduced=10.10)///   @available(iOS, introduced=8.0)/// this will print:///   @available(OSX 10.10, iOS 8.0, *)static void printShortFormAvailable(ArrayRef<const DeclAttribute *> Attrs,                                    ASTPrinter &Printer,                                    const PrintOptions &Options) {  assert(!Attrs.empty());  Printer << "@available(";  for (auto *DA : Attrs) {    auto *AvailAttr = cast<AvailableAttr>(DA);    assert(AvailAttr->Introduced.hasValue());    Printer << platformString(AvailAttr->Platform) << " "            << AvailAttr->Introduced.getValue().getAsString() << ", ";  }  Printer << "*)";  Printer.printNewline();}
开发者ID:asdfeng,项目名称:swift,代码行数:24,


示例9: printShortFormAvailable

/// Print the short-form @available() attribute for an array of long-form/// AvailableAttrs that can be represented in the short form./// For example, for:///   @available(OSX, introduced: 10.10)///   @available(iOS, introduced: 8.0)/// this will print:///   @available(OSX 10.10, iOS 8.0, *)static void printShortFormAvailable(ArrayRef<const DeclAttribute *> Attrs,                                    ASTPrinter &Printer,                                    const PrintOptions &Options) {  assert(!Attrs.empty());  Printer << "@available(";  auto FirstAvail = cast<AvailableAttr>(Attrs.front());  if (Attrs.size() == 1 &&      FirstAvail->isLanguageVersionSpecific()) {    assert(FirstAvail->Introduced.hasValue());    Printer << "swift "            << FirstAvail->Introduced.getValue().getAsString()            << ")";  } else {    for (auto *DA : Attrs) {      auto *AvailAttr = cast<AvailableAttr>(DA);      assert(AvailAttr->Introduced.hasValue());      Printer << platformString(AvailAttr->Platform) << " "              << AvailAttr->Introduced.getValue().getAsString() << ", ";    }    Printer << "*)";  }  Printer.printNewline();}
开发者ID:aisobe,项目名称:swift,代码行数:31,


示例10: printImpl

bool DeclAttribute::printImpl(ASTPrinter &Printer, const PrintOptions &Options,                              const Decl *D) const {  // Handle any attributes that are not printed at all before we make printer  // callbacks.  switch (getKind()) {  case DAK_ObjC:    if (Options.PrintForSIL && isImplicit())      return false;    break;  case DAK_RawDocComment:  case DAK_ObjCBridged:  case DAK_SynthesizedProtocol:  case DAK_ShowInInterface:  case DAK_Rethrows:  case DAK_Infix:    return false;  default:    break;  }  // Handle any decl-modifiers.  // FIXME: Ideally we would handle decl modifiers as a special kind of  // attribute, but for now it's simpler to treat them as a keyword in the  // printer.  switch (getKind()) {    // Handle all of the SIMPLE_DECL_ATTRs.#define SIMPLE_DECL_ATTR(X, CLASS, ...) case DAK_##CLASS:#include "swift/AST/Attr.def"  case DAK_Inline:  case DAK_AccessControl:  case DAK_ReferenceOwnership:  case DAK_Effects:  case DAK_Optimize:    if (DeclAttribute::isDeclModifier(getKind())) {      Printer.printKeyword(getAttrName());    } else {      Printer.printSimpleAttr(getAttrName(), /*needAt=*/true);    }    return true;  case DAK_SetterAccess:    Printer.printKeyword(getAttrName());    Printer << "(set)";    return true;  default:    break;  }  Printer.callPrintStructurePre(PrintStructureKind::BuiltinAttribute);  SWIFT_DEFER {    Printer.printStructurePost(PrintStructureKind::BuiltinAttribute);  };  switch (getKind()) {  case DAK_Semantics:    Printer.printAttrName("@_semantics");    Printer << "(/"" << cast<SemanticsAttr>(this)->Value << "/")";    break;  case DAK_Alignment:    Printer.printAttrName("@_alignment");    Printer << "(" << cast<AlignmentAttr>(this)->getValue() << ")";    break;  case DAK_SILGenName:    Printer.printAttrName("@_silgen_name");    Printer << "(/"" << cast<SILGenNameAttr>(this)->Name << "/")";    break;  case DAK_Available: {    Printer.printAttrName("@available");    Printer << "(";    auto Attr = cast<AvailableAttr>(this);    if (Attr->isLanguageVersionSpecific())      Printer << "swift";    else      Printer << Attr->platformString();    if (Attr->isUnconditionallyUnavailable())      Printer << ", unavailable";    else if (Attr->isUnconditionallyDeprecated())      Printer << ", deprecated";    if (Attr->Introduced)      Printer << ", introduced: " << Attr->Introduced.getValue().getAsString();    if (Attr->Deprecated)      Printer << ", deprecated: " << Attr->Deprecated.getValue().getAsString();    if (Attr->Obsoleted)      Printer << ", obsoleted: " << Attr->Obsoleted.getValue().getAsString();    if (!Attr->Rename.empty())      Printer << ", renamed: /"" << Attr->Rename << "/"";    // If there's no message, but this is specifically an imported    // "unavailable in Swift" attribute, synthesize a message to look good in    // the generated interface.    if (!Attr->Message.empty())      Printer << ", message: /"" << Attr->Message << "/"";//.........这里部分代码省略.........
开发者ID:aisobe,项目名称:swift,代码行数:101,


示例11: print

void DeclAttribute::print(ASTPrinter &Printer,                          const PrintOptions &Options) const {  switch (getKind()) {    // Handle all of the SIMPLE_DECL_ATTRs.#define SIMPLE_DECL_ATTR(X, CLASS, ...) case DAK_##CLASS:#include "swift/AST/Attr.def"  case DAK_Inline:  case DAK_Accessibility:  case DAK_Ownership:  case DAK_Effects:    if (!DeclAttribute::isDeclModifier(getKind()))      Printer << "@";    Printer << getAttrName();    break;  case DAK_Semantics:    Printer << "@_semantics(/"" << cast<SemanticsAttr>(this)->Value << "/")";    break;  case DAK_Alignment:    Printer << "@_alignment(" << cast<AlignmentAttr>(this)->Value << ")";    break;  case DAK_SILGenName:    Printer << "@_silgen_name(/"" << cast<SILGenNameAttr>(this)->Name << "/")";    break;  case DAK_Available: {    Printer << "@available(";    auto Attr = cast<AvailableAttr>(this);    Printer << Attr->platformString();    if (Attr->isUnconditionallyUnavailable())      Printer << ", unavailable";    else if (Attr->isUnconditionallyDeprecated())      Printer << ", deprecated";    if (Attr->Introduced)      Printer << ", introduced=" << Attr->Introduced.getValue().getAsString();    if (Attr->Deprecated)      Printer << ", deprecated=" << Attr->Deprecated.getValue().getAsString();    if (Attr->Obsoleted)      Printer << ", obsoleted=" << Attr->Obsoleted.getValue().getAsString();    // If there's no message, but this is specifically an imported    // "unavailable in Swift" attribute, synthesize a message to look good in    // the generated interface.    if (!Attr->Message.empty())      Printer << ", message=/"" << Attr->Message << "/"";    else if (Attr->getUnconditionalAvailability()               == UnconditionalAvailabilityKind::UnavailableInSwift)      Printer << ", message=/"Not available in Swift/"";    Printer << ")";    break;  }  case DAK_AutoClosure:    Printer << "@autoclosure";    if (cast<AutoClosureAttr>(this)->isEscaping())      Printer << "(escaping)";    break;  case DAK_ObjC: {    if (Options.PrintForSIL && isImplicit())      break;    Printer << "@objc";    llvm::SmallString<32> scratch;    if (auto Name = cast<ObjCAttr>(this)->getName()) {      if (!cast<ObjCAttr>(this)->isNameImplicit())        Printer << "(" << Name->getString(scratch) << ")";    }    break;  }  case DAK_SetterAccessibility:    Printer << getAttrName() << "(set)";    break;      case DAK_SwiftNativeObjCRuntimeBase: {    auto *attr = cast<SwiftNativeObjCRuntimeBaseAttr>(this);    Printer << "@_swift_native_objc_runtime_base("            << attr->BaseClassName.str() << ")";    break;  }  case DAK_RawDocComment:    // Not printed.    return;  case DAK_ObjCBridged:    // Not printed.    return;  case DAK_SynthesizedProtocol:    // Not printed.    return;  case DAK_WarnUnusedResult: {    Printer << "@warn_unused_result";    auto *attr = cast<WarnUnusedResultAttr>(this);    bool printedParens = false;//.........这里部分代码省略.........
开发者ID:asdfeng,项目名称:swift,代码行数:101,


示例12: printImpl

bool DeclAttribute::printImpl(ASTPrinter &Printer, const PrintOptions &Options) const {  // Handle any attributes that are not printed at all before we make printer  // callbacks.  switch (getKind()) {  case DAK_ObjC:    if (Options.PrintForSIL && isImplicit())      return false;    break;  case DAK_RawDocComment:  case DAK_ObjCBridged:  case DAK_SynthesizedProtocol:  case DAK_ShowInInterface:  case DAK_Rethrows:    return false;  default:    break;  }  // Handle any decl-modifiers.  // FIXME: Ideally we would handle decl modifiers as a special kind of  // attribute, but for now it's simpler to treat them as a keyword in the  // printer.  switch (getKind()) {    // Handle all of the SIMPLE_DECL_ATTRs.#define SIMPLE_DECL_ATTR(X, CLASS, ...) case DAK_##CLASS:#include "swift/AST/Attr.def"  case DAK_Inline:  case DAK_Accessibility:  case DAK_Ownership:  case DAK_Effects:    if (DeclAttribute::isDeclModifier(getKind())) {      Printer.printKeyword(getAttrName());    } else {      Printer.callPrintStructurePre(PrintStructureKind::BuiltinAttribute);      Printer.printAttrName(getAttrName(), /*needAt=*/true);      Printer.printStructurePost(PrintStructureKind::BuiltinAttribute);    }    return true;  case DAK_SetterAccessibility:    Printer.printKeyword(getAttrName());    Printer << "(set)";    return true;  default:    break;  }  Printer.callPrintStructurePre(PrintStructureKind::BuiltinAttribute);  SWIFT_DEFER {    Printer.printStructurePost(PrintStructureKind::BuiltinAttribute);  };  switch (getKind()) {  case DAK_Semantics:    Printer.printAttrName("@_semantics");    Printer << "(/"" << cast<SemanticsAttr>(this)->Value << "/")";    break;  case DAK_Alignment:    Printer.printAttrName("@_alignment");    Printer << "(" << cast<AlignmentAttr>(this)->Value << ")";    break;  case DAK_SILGenName:    Printer.printAttrName("@_silgen_name");    Printer << "(/"" << cast<SILGenNameAttr>(this)->Name << "/")";    break;  case DAK_Available: {    Printer.printAttrName("@available");    Printer << "(";    auto Attr = cast<AvailableAttr>(this);    Printer << Attr->platformString();    if (Attr->isUnconditionallyUnavailable())      Printer << ", unavailable";    else if (Attr->isUnconditionallyDeprecated())      Printer << ", deprecated";    if (Attr->Introduced)      Printer << ", introduced: " << Attr->Introduced.getValue().getAsString();    if (Attr->Deprecated)      Printer << ", deprecated: " << Attr->Deprecated.getValue().getAsString();    if (Attr->Obsoleted)      Printer << ", obsoleted: " << Attr->Obsoleted.getValue().getAsString();    if (!Attr->Rename.empty())      Printer << ", renamed: /"" << Attr->Rename << "/"";    // If there's no message, but this is specifically an imported    // "unavailable in Swift" attribute, synthesize a message to look good in    // the generated interface.    if (!Attr->Message.empty())      Printer << ", message: /"" << Attr->Message << "/"";    else if (Attr->getUnconditionalAvailability()               == UnconditionalAvailabilityKind::UnavailableInSwift)      Printer << ", message: /"Not available in Swift/"";//.........这里部分代码省略.........
开发者ID:davidgloves,项目名称:swift,代码行数:101,


示例13: ValidateArguments

//.........这里部分代码省略.........    if (IsLanguageHLSL(inputDesc.shaderVersion))    {        /* Establish intrinsic adept */        intrinsicAdpet = MakeUnique<HLSLIntrinsicAdept>();        /* Parse HLSL input code */        HLSLParser parser(log_);        program = parser.ParseSource(            std::make_shared<SourceCode>(std::move(processedInput)),            outputDesc.nameMangling,            inputDesc.shaderVersion,            outputDesc.options.rowMajorAlignment,            ((inputDesc.warnings & Warnings::Syntax) != 0)        );    }    else if (IsLanguageGLSL(inputDesc.shaderVersion))    {        /* Establish intrinsic adept */        #if 0        intrinsicAdpet = MakeUnique<GLSLIntrinsicAdept>();        #else //!!!        intrinsicAdpet = MakeUnique<HLSLIntrinsicAdept>();        #endif        /* Parse GLSL input code */        GLSLParser parser(log_);        program = parser.ParseSource(            std::make_shared<SourceCode>(std::move(processedInput)),            outputDesc.nameMangling,            inputDesc.shaderVersion,            ((inputDesc.warnings & Warnings::Syntax) != 0)        );    }    if (!program)        return ReturnWithError(R_ParsingSourceFailed);    /* ----- Context analysis ----- */    timePoints_.analyzer = Time::now();    bool analyzerResult = false;    if (IsLanguageHLSL(inputDesc.shaderVersion))    {        /* Analyse HLSL program */        HLSLAnalyzer analyzer(log_);        analyzerResult = analyzer.DecorateAST(*program, inputDesc, outputDesc);    }    /* Print AST */    if (outputDesc.options.showAST)    {        ASTPrinter printer;        printer.PrintAST(program.get());    }    if (!analyzerResult)        return ReturnWithError(R_AnalyzingSourceFailed);    /* Optimize AST */    timePoints_.optimizer = Time::now();    if (outputDesc.options.optimize)    {        Optimizer optimizer;        optimizer.Optimize(*program);    }    /* ----- Code generation ----- */    timePoints_.generation = Time::now();    bool generatorResult = false;    if (IsLanguageGLSL(outputDesc.shaderVersion) || IsLanguageESSL(outputDesc.shaderVersion) || IsLanguageVKSL(outputDesc.shaderVersion))    {        /* Generate GLSL output code */        GLSLGenerator generator(log_);        generatorResult = generator.GenerateCode(*program, inputDesc, outputDesc, log_);    }    if (!generatorResult)        return ReturnWithError(R_GeneratingOutputCodeFailed);    /* ----- Code reflection ----- */    timePoints_.reflection = Time::now();    if (reflectionData)    {        ReflectionAnalyzer reflectAnalyzer(log_);        reflectAnalyzer.Reflect(            *program, inputDesc.shaderTarget, *reflectionData,            ((inputDesc.warnings & Warnings::CodeReflection) != 0)        );    }    return true;}
开发者ID:LukasBanana,项目名称:HLSLTranslator,代码行数:101,



注:本文中的ASTPrinter类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ ASTUnit类代码示例
C++ ASTNodeSet类代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。